{"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: timogilvie/wavemill", "shortDescription": {"text": "Foundry mined unresolved feedback: timogilvie/wavemill"}, "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: assumption_check\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#741\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: timogilvie/wavemill\nThread: timogilvie/wavemill#741\nGraph gold label: assumption_check\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: timogilvie/wavemill#741\nRepo: timogilvie/wavemill\nIssue/PR number: 741\nGraph consistency label: assumption_check\nNodes: 67\nEdges: 96\nNode types: {'pr_file': 49, 'link_quality': 6, 'alignment': 3, 'blueprint_finding': 3, 'thread': 1, 'repo': 1, 'comment': 1, 'comment_chain': 1, 'issue_chain': "}, "properties": {"scanner": "foundry_dataset", "category": "practices", "severity": "medium", "confidence": 0.7, "cwe": "", "owasp": ""}}, {"id": "foundry_blueprint_gap", "name": "Foundry mined blueprint gap alignment: timogilvie/wavemill", "shortDescription": {"text": "Foundry mined blueprint gap alignment: timogilvie/wavemill"}, "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: weak_supervision_needs_review\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#98\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: timogilvie/wavemill\nThread: timogilvie/wavemill#98\nGraph gold label: weak_supervision_needs_review\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: timogilvie/wavemill#98\nRepo: timogilvie/wavemill\nIssue/PR number: 98\nGraph consistency label: weak_supervision_needs_review\nNodes: 23\nEdges: 28\nNode types: {'link_quality': 6, 'commit': 5, 'alignment': 3, 'blueprint_finding': 3, 'thread': 1, 'repo': 1, 'comment': 1"}, "properties": {"scanner": "foundry_dataset", "category": "tech_debt", "severity": "medium", "confidence": 0.7, "cwe": "", "owasp": ""}}, {"id": "foundry_assumption_check", "name": "Foundry mined assumption checks: timogilvie/wavemill", "shortDescription": {"text": "Foundry mined assumption checks: timogilvie/wavemill"}, "fullDescription": {"text": "Comment chain pattern product: assumption_checks\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#98\nOutcome: ambiguous_needs_more_evidence\nThread label: thread_has_human_issue_and_fix_context\nSource graph label: source_backed_multi_signal_graph\nReasons: source_graph_has_real_artifacts, source_graph_has_verification_artifacts, repo_has_isolated_helicopter_views, link_quality_weak_supervision, high_risk_human_feedback_label\nChain evidence:\nIssue/PR evidence chain: timogilvie/wavemill#98\nRepo: timogilvie/wavemill\nThread label: thread_has_human_issue_and_fix_context\nOutcome: ambiguous_needs_more_evidence\nComment count: 1\nLinked commit count: 5\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 0\nLabels: {'test_ci_gap': 1}\nPolarities: {'bad': 1}\nChanged file labels: {}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-b460cb2a5043b044\",\n    \"kind\": \"pull_request_body\",\n    \"label\": \"test_ci_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/timogilvie/wavemil"}, "properties": {"scanner": "foundry_dataset", "category": "practices", "severity": "medium", "confidence": 0.62, "cwe": "", "owasp": ""}}, {"id": "foundry_test_ci_gap", "name": "Foundry mined test ci gap after feedback: timogilvie/wavemill", "shortDescription": {"text": "Foundry mined test ci gap after feedback: timogilvie/wavemill"}, "fullDescription": {"text": "Graph query export: Feedback exposes missing tests or CI\nQuery id: test_ci_gap_after_feedback\nQuery type: motif_query\nIntent: Hard negatives for feedback/fix chains without adequate guardrails.\nMotif: test_ci_gap_after_feedback\nTraining usage: hard_negative\nGraph gold label: weak_supervision_needs_review\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#98\nEvidence:\nGraph motif: Feedback or fix context exposes missing test/CI guardrails\nMotif id: test_ci_gap_after_feedback\nPolarity: bad\nTraining usage: hard_negative\nSeverity: high\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#98\nGraph gold label: weak_supervision_needs_review\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: timogilvie/wavemill#98\nRepo: timogilvie/wavemill\nIssue/PR number: 98\nGraph consistency label: weak_supervision_needs_review\nNodes: 23\nEdges: 28\nNode types: {'link_quality': 6, 'commit': 5, 'alignment': 3, 'blueprint_finding': 3, 'thread': 1, 'repo': 1, 'comment': 1, 'comment_chain': 1, 'i"}, "properties": {"scanner": "foundry_dataset", "category": "testing", "severity": "high", "confidence": 0.78, "cwe": "", "owasp": ""}}, {"id": "foundry_schema_ui_api_gap", "name": "Foundry mined schema ui api mismatch: timogilvie/wavemill", "shortDescription": {"text": "Foundry mined schema ui api mismatch: timogilvie/wavemill"}, "fullDescription": {"text": "Graph query export: Schema, UI, and API mismatch\nQuery id: schema_ui_api_mismatch\nQuery type: motif_query\nIntent: Assumption-check examples for data-path consistency across layers.\nMotif: schema_ui_api_mismatch\nTraining usage: assumption_check\nGraph gold label: weak_supervision_needs_review\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#97\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: timogilvie/wavemill\nThread: timogilvie/wavemill#97\nGraph gold label: weak_supervision_needs_review\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: timogilvie/wavemill#97\nRepo: timogilvie/wavemill\nIssue/PR number: 97\nGraph consistency label: weak_supervision_needs_review\nNodes: 23\nEdges: 28\nNode types: {'link_quality': 6, 'commit': 5, 'alignment': 3, 'blueprint_finding': 3, 'thread': 1, 'repo': 1, 'comment': 1, 'comment_chain': 1, 'issue_chain': 1, 'fix_outcome':"}, "properties": {"scanner": "foundry_dataset", "category": "quality", "severity": "high", "confidence": 0.76, "cwe": "", "owasp": ""}}, {"id": "foundry_bad_chain", "name": "Foundry mined bad chains: timogilvie/wavemill", "shortDescription": {"text": "Foundry mined bad chains: timogilvie/wavemill"}, "fullDescription": {"text": "Comment chain pattern product: bad_chains\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#741\nOutcome: not_resolved_or_not_observed\nThread label: thread_has_human_issue_without_fix_context\nSource graph label: source_backed_multi_signal_graph\nReasons: source_graph_has_real_artifacts, source_graph_has_verification_artifacts, repo_has_isolated_helicopter_views, link_quality_unresolved, high_risk_human_feedback_label\nChain evidence:\nIssue/PR evidence chain: timogilvie/wavemill#741\nRepo: timogilvie/wavemill\nThread label: thread_has_human_issue_without_fix_context\nOutcome: not_resolved_or_not_observed\nComment count: 1\nLinked commit count: 0\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 49\nLabels: {'data_schema_persistence': 1}\nPolarities: {'bad': 1}\nChanged file labels: {'docs_or_claims': 6, 'dependency_or_build': 1, 'source_or_other': 13, 'test_or_ci': 17, 'schema_or_data': 4, 'api_or_backend': 8}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-e8a125117d606baf"}, "properties": {"scanner": "foundry_dataset", "category": "practices", "severity": "high", "confidence": 0.84, "cwe": "", "owasp": ""}}, {"id": "foundry_auth_guardrail_gap", "name": "Foundry mined security auth guardrail gaps: timogilvie/wavemill", "shortDescription": {"text": "Foundry mined security auth guardrail gaps: timogilvie/wavemill"}, "fullDescription": {"text": "Graph query export: Security/auth changes without enough guardrails\nQuery id: security_auth_guardrail_gaps\nQuery type: motif_query\nIntent: Assumption-check security/auth examples requiring stronger tests or CI.\nMotif: security_auth_without_guardrails\nTraining usage: assumption_check\nGraph gold label: supported_by_high_confidence_link\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#729\nEvidence:\nGraph motif: Security/auth change without enough guardrails\nMotif id: security_auth_without_guardrails\nPolarity: bad\nTraining usage: assumption_check\nSeverity: critical\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#729\nGraph gold label: supported_by_high_confidence_link\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: timogilvie/wavemill#729\nRepo: timogilvie/wavemill\nIssue/PR number: 729\nGraph consistency label: supported_by_high_confidence_link\nNodes: 10\nEdges: 12\nNode types: {'link_quality': 3, 'thread': 1, 'repo': 1, 'comment': 1, 'comment_chain': 1, 'commit': 1,"}, "properties": {"scanner": "foundry_dataset", "category": "auth", "severity": "critical", "confidence": 0.78, "cwe": "", "owasp": ""}}, {"id": "foundry_fake_real_gap", "name": "Foundry mined mock as real or placeholder: timogilvie/wavemill", "shortDescription": {"text": "Foundry mined mock as real or placeholder: timogilvie/wavemill"}, "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: needs_more_evidence\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#735\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: timogilvie/wavemill\nThread: timogilvie/wavemill#735\nGraph gold label: needs_more_evidence\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: timogilvie/wavemill#735\nRepo: timogilvie/wavemill\nIssue/PR number: 735\nGraph consistency label: needs_more_evidence\nNodes: 14\nEdges: 26\nNode types: {'pr_file': 5, 'link_quality': 3, 'thread': 1, 'repo': 1, 'comment': 1, 'comment_chain': 1, 'issue_chain': 1, 'f"}, "properties": {"scanner": "foundry_dataset", "category": "practices", "severity": "critical", "confidence": 0.82, "cwe": "", "owasp": ""}}, {"id": "scanner-f26b51743f63e14c", "name": "Possibly dead Python function: forward", "shortDescription": {"text": "Possibly dead Python function: forward"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-5d0a4f7bce83ea6d", "name": "Possibly dead Python function: routing_metric", "shortDescription": {"text": "Possibly dead Python function: routing_metric"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-db9760a2d6aa6489", "name": "Possibly dead Python function: prepare_planner_examples", "shortDescription": {"text": "Possibly dead Python function: prepare_planner_examples"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-91e759bae9760857", "name": "Possibly dead Python function: prepare_coder_examples", "shortDescription": {"text": "Possibly dead Python function: prepare_coder_examples"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-0d32cf779556a696", "name": "Possibly dead Python function: prepare_reviewer_examples", "shortDescription": {"text": "Possibly dead Python function: prepare_reviewer_examples"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-47d4ae708a34ba17", "name": "Possibly dead Python function: optimized_predict", "shortDescription": {"text": "Possibly dead Python function: optimized_predict"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-ccbc7224239c61fa", "name": "Possibly dead Python function: coder_metric", "shortDescription": {"text": "Possibly dead Python function: coder_metric"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-a162581298313c30", "name": "Possibly dead Python function: routing_metric", "shortDescription": {"text": "Possibly dead Python function: routing_metric"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-795b40051ebdafaf", "name": "Possibly dead Python function: planner_metric", "shortDescription": {"text": "Possibly dead Python function: planner_metric"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-39ca972218717445", "name": "Possibly dead Python function: extract_placeholders", "shortDescription": {"text": "Possibly dead Python function: extract_placeholders"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-119a1c6ec03abbb0", "name": "Possibly dead Python function: issue_writer_metric", "shortDescription": {"text": "Possibly dead Python function: issue_writer_metric"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-87bc16e882c6b62c", "name": "Possibly dead Python function: reviewer_metric", "shortDescription": {"text": "Possibly dead Python function: reviewer_metric"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-ef129a781e25825b", "name": "Possibly dead Python function: eval_judge_metric", "shortDescription": {"text": "Possibly dead Python function: eval_judge_metric"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-bead75b0f9233e05", "name": "No API endpoints detected", "shortDescription": {"text": "No API endpoints detected"}, "fullDescription": {"text": "The scanner did not find FastAPI/Flask/Express/NestJS/GraphQL/gRPC routes. If this repo exposes APIs, the framework may be unsupported."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "info", "confidence": 1.0}}, {"id": "scanner-c2bdad1e86925622", "name": "Stray `console.log` in TS/JS \u2014 shared/lib/config.ts:848", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 shared/lib/config.ts:848"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-a047843df2cad68a", "name": "Stray `console.log` in TS/JS \u2014 shared/lib/workflow-cost.ts:231", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 shared/lib/workflow-cost.ts:231"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-eb5d731f7f6a9158", "name": "Stray `console.log` in TS/JS \u2014 shared/lib/eval-schema.test.ts:39", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 shared/lib/eval-schema.test.ts:39"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-fd015d43781de7f6", "name": "Stray `console.log` in TS/JS \u2014 shared/lib/eval-export.test.ts:27", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 shared/lib/eval-export.test.ts:27"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-7dd4b3337f25417a", "name": "Stray `console.log` in TS/JS \u2014 shared/lib/permissions-tool.ts:80", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 shared/lib/permissions-tool.ts:80"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-d7ac5ee224f7cf4f", "name": "Stray `console.log` in TS/JS \u2014 shared/lib/challenge-comparison.test.ts:21", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 shared/lib/challenge-comparison.test.ts:21"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-bf112b69f2dc67a8", "name": "Stray `console.log` in TS/JS \u2014 shared/lib/eval-summary-printer.ts:162", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 shared/lib/eval-summary-printer.ts:162"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-b6164209dfdd4593", "name": "Stray `console.log` in TS/JS \u2014 shared/lib/task-descriptor-backfill.test.ts:12", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 shared/lib/task-descriptor-backfill.test.ts:12"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-0b6872cafdac8ebd", "name": "Stray `console.log` in TS/JS \u2014 shared/lib/sync-config-classifier.test.ts:12", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 shared/lib/sync-config-classifier.test.ts:12"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-dabd946d95021867", "name": "Stray `console.log` in TS/JS \u2014 shared/lib/hokusai-router.test.ts:19", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 shared/lib/hokusai-router.test.ts:19"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-04b07888225a88ca", "name": "Stray `console.log` in TS/JS \u2014 shared/lib/workflow-cost.test.ts:34", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 shared/lib/workflow-cost.test.ts:34"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-d260c172b304d161", "name": "Stray `console.log` in TS/JS \u2014 shared/lib/eval-analysis.ts:52", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 shared/lib/eval-analysis.ts:52"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-1b4e16f3fe6f0f14", "name": "Stray `console.log` in TS/JS \u2014 shared/lib/issue-labeler.ts:53", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 shared/lib/issue-labeler.ts:53"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-2064e5ffb8bd1816", "name": "Stray `console.log` in TS/JS \u2014 shared/lib/initiative-lister.ts:68", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 shared/lib/initiative-lister.ts:68"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-851593477426ca86", "name": "Stray `console.log` in TS/JS \u2014 shared/lib/task-context-analyzer.test.ts:23", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 shared/lib/task-context-analyzer.test.ts:23"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-c73304711a8ccbcb", "name": "Stray `console.log` in TS/JS \u2014 shared/lib/deepseek-launcher.test.ts:29", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 shared/lib/deepseek-launcher.test.ts:29"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-e4d7f8eb4b9fdc99", "name": "Stray `console.log` in TS/JS \u2014 shared/lib/github.test.js:98", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 shared/lib/github.test.js:98"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-657edcfe53a59e9e", "name": "Stray `console.log` in TS/JS \u2014 shared/lib/linear.ts:506", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 shared/lib/linear.ts:506"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-2654a00511b140e6", "name": "Stray `console.log` in TS/JS \u2014 shared/lib/review-orchestrator.ts:114", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 shared/lib/review-orchestrator.ts:114"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-30e12008d504f7fa", "name": "Stray `console.log` in TS/JS \u2014 shared/lib/concept-page-generator.ts:100", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 shared/lib/concept-page-generator.ts:100"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-c113876786239722", "name": "Stray `console.log` in TS/JS \u2014 shared/lib/difficulty-analyzer.ts:400", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 shared/lib/difficulty-analyzer.ts:400"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-4eac142cdb5e675a", "name": "Stray `console.log` in TS/JS \u2014 shared/lib/issue-expander.ts:213", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 shared/lib/issue-expander.ts:213"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-ed25200392f42b26", "name": "Stray `console.log` in TS/JS \u2014 shared/lib/initiative-decomposer.ts:137", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 shared/lib/initiative-decomposer.ts:137"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-be1cc5936afcc76a", "name": "Stray `console.log` in TS/JS \u2014 shared/lib/task-packet-validator.test.ts:20", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 shared/lib/task-packet-validator.test.ts:20"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-d6ae96f3832ca23e", "name": "Stray `console.log` in TS/JS \u2014 shared/lib/check-routing.test.ts:15", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 shared/lib/check-routing.test.ts:15"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-66d7bedacde7cee6", "name": "Stray `console.log` in TS/JS \u2014 shared/lib/review-intervention-mapper.ts:154", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 shared/lib/review-intervention-mapper.ts:154"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-83c472c843db2c9c", "name": "Stray `console.log` in TS/JS \u2014 shared/lib/post-completion-hook.ts:194", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 shared/lib/post-completion-hook.ts:194"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-53c9c6b19d87daa6", "name": "Stray `console.log` in TS/JS \u2014 shared/lib/constraint-parser.test.ts:14", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 shared/lib/constraint-parser.test.ts:14"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-7364d4f686d6139b", "name": "Stray `console.log` in TS/JS \u2014 shared/lib/worktree-manager.test.ts:11", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 shared/lib/worktree-manager.test.ts:11"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-9c6683e948da2ffb", "name": "Stray `console.log` in TS/JS \u2014 shared/lib/hokusai-queue-drain.ts:243", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 shared/lib/hokusai-queue-drain.ts:243"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-4fb32252e7c379b5", "name": "Stray `console.log` in TS/JS \u2014 shared/lib/router-diversity.test.ts:20", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 shared/lib/router-diversity.test.ts:20"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-c87563be1fbf029a", "name": "Stray `console.log` in TS/JS \u2014 shared/lib/github.ts:229", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 shared/lib/github.ts:229"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-c3085e03f13009b7", "name": "Stray `console.log` in TS/JS \u2014 shared/lib/resource-selection.test.ts:19", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 shared/lib/resource-selection.test.ts:19"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-cfe8be453d36809e", "name": "Stray `console.log` in TS/JS \u2014 shared/lib/worktree-manager.ts:53", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 shared/lib/worktree-manager.ts:53"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-efa0ed17d7c971d2", "name": "Stray `console.log` in TS/JS \u2014 shared/lib/llm-router.test.ts:30", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 shared/lib/llm-router.test.ts:30"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-6f925a5bb033f778", "name": "Stray `console.log` in TS/JS \u2014 shared/lib/project-context-generator.ts:212", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 shared/lib/project-context-generator.ts:212"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-25cd1b79ed17423e", "name": "Stray `console.log` in TS/JS \u2014 shared/lib/subsystem-search.test.ts:14", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 shared/lib/subsystem-search.test.ts:14"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-b1e17e1279acfaf6", "name": "Stray `console.log` in TS/JS \u2014 shared/lib/eval-backfill.test.ts:15", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 shared/lib/eval-backfill.test.ts:15"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-901a1229db1c89b6", "name": "Stray `console.log` in TS/JS \u2014 shared/lib/tool-runner.ts:23", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 shared/lib/tool-runner.ts:23"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-2bd4f379ed851f18", "name": "Stray `console.log` in TS/JS \u2014 shared/lib/checks.ts:71", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 shared/lib/checks.ts:71"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-f4af8dc09190b58a", "name": "Stray `console.log` in TS/JS \u2014 shared/lib/session-timer.ts:25", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 shared/lib/session-timer.ts:25"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-7d8b63877d268da3", "name": "Stray `console.log` in TS/JS \u2014 shared/lib/subsystem-updater.ts:66", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 shared/lib/subsystem-updater.ts:66"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-3b446134c7e12f36", "name": "Stray `console.log` in TS/JS \u2014 shared/lib/challenge-mode.test.ts:29", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 shared/lib/challenge-mode.test.ts:29"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-bff72e9ee899563e", "name": "Stray `console.log` in TS/JS \u2014 shared/lib/hokusai-router-audit.test.ts:27", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 shared/lib/hokusai-router-audit.test.ts:27"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-2d8130d767eba49a", "name": "Stray `console.log` in TS/JS \u2014 shared/lib/context-updater.ts:128", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 shared/lib/context-updater.ts:128"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-90313c9b076f85e2", "name": "Stray `console.log` in TS/JS \u2014 shared/lib/deepseek-provider.ts:133", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 shared/lib/deepseek-provider.ts:133"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-d320556c7ac6757b", "name": "Stray `console.log` in TS/JS \u2014 shared/lib/permissions-verifier.test.ts:18", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 shared/lib/permissions-verifier.test.ts:18"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-fc42600de0ca0957", "name": "Stray `console.log` in TS/JS \u2014 shared/lib/cli-prompt.test.ts:34", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 shared/lib/cli-prompt.test.ts:34"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-c45e434f45c4ac2a", "name": "Stray `console.log` in TS/JS \u2014 shared/lib/context-linter.test.ts:16", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 shared/lib/context-linter.test.ts:16"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-8c6294a3002ac873", "name": "Stray `console.log` in TS/JS \u2014 shared/lib/eval-orchestrator.ts:207", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 shared/lib/eval-orchestrator.ts:207"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-146aafb7eb4fe299", "name": "Stray `console.log` in TS/JS \u2014 shared/lib/rule-generator.test.ts:15", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 shared/lib/rule-generator.test.ts:15"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-60129c76d64c1875", "name": "Stray `console.log` in TS/JS \u2014 shared/lib/repo-context-analyzer.test.ts:29", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 shared/lib/repo-context-analyzer.test.ts:29"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-91cdd2bcdcd783d3", "name": "Stray `console.log` in TS/JS \u2014 shared/lib/task-dependency-planner.test.ts:17", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 shared/lib/task-dependency-planner.test.ts:17"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-3859ee48e4f1a417", "name": "Stray `console.log` in TS/JS \u2014 shared/lib/run-verification.ts:109", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 shared/lib/run-verification.ts:109"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-05dd977668349bd1", "name": "Stray `console.log` in TS/JS \u2014 shared/lib/llm-cli.ts:1406", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 shared/lib/llm-cli.ts:1406"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-8300aabddf58d887", "name": "Stray `console.log` in TS/JS \u2014 shared/lib/string-utils.test.js:36", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 shared/lib/string-utils.test.js:36"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-acef5df0cdde7fd4", "name": "Stray `console.log` in TS/JS \u2014 shared/lib/rule-generator.ts:158", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 shared/lib/rule-generator.ts:158"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-8fd8ab307c29cb98", "name": "Stray `console.log` in TS/JS \u2014 shared/lib/router-exploration.test.ts:23", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 shared/lib/router-exploration.test.ts:23"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-d53988a3ffb9d3fd", "name": "Stray `console.log` in TS/JS \u2014 shared/lib/task-packet-utils.ts:233", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 shared/lib/task-packet-utils.ts:233"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-a97c5a4904dfaed1", "name": "Stray `console.log` in TS/JS \u2014 shared/lib/stage-aware-router.test.ts:30", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 shared/lib/stage-aware-router.test.ts:30"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-871e5d92593dad72", "name": "Stray `console.log` in TS/JS \u2014 shared/lib/colors.ts:11", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 shared/lib/colors.ts:11"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-954b4551855c497b", "name": "Stray `console.log` in TS/JS \u2014 shared/lib/config.test.ts:81", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 shared/lib/config.test.ts:81"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-94d6cac97275306d", "name": "Stray `console.log` in TS/JS \u2014 shared/lib/tool-runner.test.ts:206", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 shared/lib/tool-runner.test.ts:206"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-1958023809f85b3f", "name": "Stray `console.log` in TS/JS \u2014 shared/lib/task-difficulty-classifier.test.ts:27", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 shared/lib/task-difficulty-classifier.test.ts:27"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-c33daf3e56726ac7", "name": "Stray `console.log` in TS/JS \u2014 shared/lib/difficulty-analyzer.test.ts:26", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 shared/lib/difficulty-analyzer.test.ts:26"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-2da6a1a6386d9845", "name": "TODO/FIXME marker in shipping code \u2014 shared/lib/ready-stage.ts:909", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 shared/lib/ready-stage.ts:909"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-e26aa037d29a3595", "name": "Stray `console.log` in TS/JS \u2014 shared/lib/review-stats.test.ts:12", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 shared/lib/review-stats.test.ts:12"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-0e70bd5c6f164265", "name": "Stray `console.log` in TS/JS \u2014 shared/lib/issue-expander.test.ts:11", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 shared/lib/issue-expander.test.ts:11"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-5d559918b16e1953", "name": "Stray `console.log` in TS/JS \u2014 shared/lib/codebase-context-gatherer.ts:87", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 shared/lib/codebase-context-gatherer.ts:87"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-a4d76d76dc30ed4e", "name": "Stray `console.log` in TS/JS \u2014 shared/lib/challenge-scheduler.test.ts:25", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 shared/lib/challenge-scheduler.test.ts:25"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-fa57140d646f228a", "name": "Stray `console.log` in TS/JS \u2014 shared/lib/plan-prompt-selector.ts:20", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 shared/lib/plan-prompt-selector.ts:20"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-2bc993a6b33b12fa", "name": "Stray `console.log` in TS/JS \u2014 shared/lib/pr-metadata.test.ts:86", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 shared/lib/pr-metadata.test.ts:86"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-0b97a8c9546a8da7", "name": "Stray `console.log` in TS/JS \u2014 shared/lib/review-context-gatherer.test.ts:15", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 shared/lib/review-context-gatherer.test.ts:15"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-ead04b7c7b79f889", "name": "Stray `console.log` in TS/JS \u2014 shared/lib/eval-formatter.ts:65", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 shared/lib/eval-formatter.ts:65"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-184a9f5ccdd7d8fa", "name": "Stray `console.log` in TS/JS \u2014 shared/lib/hokusai-adapter.test.ts:15", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 shared/lib/hokusai-adapter.test.ts:15"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-f18b9eae0eb92df1", "name": "Stray `console.log` in TS/JS \u2014 shared/lib/issue-tool.ts:60", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 shared/lib/issue-tool.ts:60"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-085831894224ad78", "name": "Stray `console.log` in TS/JS \u2014 shared/lib/eval.ts:573", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 shared/lib/eval.ts:573"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-efec60a223b473f4", "name": "Stray `console.log` in TS/JS \u2014 shared/lib/eval-aggregator.test.ts:12", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 shared/lib/eval-aggregator.test.ts:12"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-a8df9e6105033f6b", "name": "Stray `console.log` in TS/JS \u2014 shared/lib/eval-deduplication.test.ts:19", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 shared/lib/eval-deduplication.test.ts:19"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-efabc21e42aefadb", "name": "Stray `console.log` in TS/JS \u2014 shared/lib/constraint-storage.test.ts:24", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 shared/lib/constraint-storage.test.ts:24"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-5b3ad02a9de45127", "name": "Stray `console.log` in TS/JS \u2014 shared/lib/eval-aggregator.ts:223", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 shared/lib/eval-aggregator.ts:223"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-ea8686a41cbf7daa", "name": "Stray `console.log` in TS/JS \u2014 shared/lib/workflow-router.test.ts:20", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 shared/lib/workflow-router.test.ts:20"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-7361639efc3d7ac3", "name": "Stray `console.log` in TS/JS \u2014 shared/lib/validation-formatter.ts:29", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 shared/lib/validation-formatter.ts:29"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-4791905841d8fe45", "name": "Stray `console.log` in TS/JS \u2014 shared/lib/constraint-validator.test.ts:19", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 shared/lib/constraint-validator.test.ts:19"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-79d418c38f500800", "name": "Stray `console.log` in TS/JS \u2014 shared/lib/session-adapters.ts:71", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 shared/lib/session-adapters.ts:71"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-fb41b7e362c65d29", "name": "Stray `console.log` in TS/JS \u2014 shared/lib/post-completion-hook.test.ts:23", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 shared/lib/post-completion-hook.test.ts:23"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-622948b3f1b94c8c", "name": "Stray `console.log` in TS/JS \u2014 shared/lib/config-sync.test.ts:20", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 shared/lib/config-sync.test.ts:20"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-47690f37ab74e396", "name": "Stray `console.log` in TS/JS \u2014 shared/lib/eval-persistence.test.ts:25", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 shared/lib/eval-persistence.test.ts:25"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-54978b11f7c76df3", "name": "Stray `console.log` in TS/JS \u2014 shared/lib/route-batch.test.ts:21", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 shared/lib/route-batch.test.ts:21"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-8237bf8dc73b1ae2", "name": "Stray `console.log` in TS/JS \u2014 codex/tests/git.test.js:10", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 codex/tests/git.test.js:10"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-9c0e70a791c997ed", "name": "Stray `console.log` in TS/JS \u2014 codex/tests/workflow-state.test.js:29", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 codex/tests/workflow-state.test.js:29"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-23ec2722b605e238", "name": "Stray `console.log` in TS/JS \u2014 codex/src/commands/start-plan.js:43", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 codex/src/commands/start-plan.js:43"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-026bdb84139e1aed", "name": "Stray `console.log` in TS/JS \u2014 codex/src/commands/backlog.js:7", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 codex/src/commands/backlog.js:7"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-0eded5f6a372a821", "name": "Stray `console.log` in TS/JS \u2014 codex/src/commands/start-bugfix.js:43", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 codex/src/commands/start-bugfix.js:43"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-dc4baf3ce9a7dc25", "name": "Stray `console.log` in TS/JS \u2014 codex/src/commands/start-workflow.js:44", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 codex/src/commands/start-workflow.js:44"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-5a3a3b0fe2427a9b", "name": "Stray `console.log` in TS/JS \u2014 codex/src/commands/workflow.js:8", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 codex/src/commands/workflow.js:8"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-464b573b6f8cf387", "name": "Stray `console.log` in TS/JS \u2014 codex/src/commands/generate-doc.js:39", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 codex/src/commands/generate-doc.js:39"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-b75c95b8173c9ca7", "name": "Stray `console.log` in TS/JS \u2014 tools/context-check.ts:158", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tools/context-check.ts:158"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-10579bed6c7b164a", "name": "Stray `console.log` in TS/JS \u2014 tools/check-drift.ts:74", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tools/check-drift.ts:74"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-99c4040a2fb2e3b2", "name": "Stray `console.log` in TS/JS \u2014 tools/eval-workflow.ts:60", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tools/eval-workflow.ts:60"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-c278d1ff234a87ca", "name": "Stray `console.log` in TS/JS \u2014 tools/get-operating-mode.ts:88", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tools/get-operating-mode.ts:88"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-d608aed6e0829459", "name": "Stray `console.log` in TS/JS \u2014 tools/quota-control.ts:130", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tools/quota-control.ts:130"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-3190b9327ee2dd0f", "name": "Stray `console.log` in TS/JS \u2014 tools/job-tracker.ts:49", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tools/job-tracker.ts:49"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-64615a8f1ebf943c", "name": "Stray `console.log` in TS/JS \u2014 tools/backfill-stage-scores.ts:193", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tools/backfill-stage-scores.ts:193"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-edc81710df37fefe", "name": "Stray `console.log` in TS/JS \u2014 tools/analyze-challenges.ts:27", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tools/analyze-challenges.ts:27"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-0bdd00f7076da511", "name": "Stray `console.log` in TS/JS \u2014 tools/show-hokusai-ledger.ts:41", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tools/show-hokusai-ledger.ts:41"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-5571a8d8ab586792", "name": "Stray `console.log` in TS/JS \u2014 tools/backfill-rubric-eval-records.ts:23", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tools/backfill-rubric-eval-records.ts:23"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-4c528159f9e079ff", "name": "Stray `console.log` in TS/JS \u2014 tools/backfill-workflow-cost.ts:26", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tools/backfill-workflow-cost.ts:26"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-4e8eb31b2157b967", "name": "Stray `console.log` in TS/JS \u2014 tools/set-issue-state.ts:29", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tools/set-issue-state.ts:29"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-1e874cfc0724ac33", "name": "Stray `console.log` in TS/JS \u2014 tools/stage-result-cli.ts:61", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tools/stage-result-cli.ts:61"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-d68f63609b17f98a", "name": "Stray `console.log` in TS/JS \u2014 tools/ready-watchdog.ts:170", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tools/ready-watchdog.ts:170"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-e92398efd59f4c7a", "name": "Stray `console.log` in TS/JS \u2014 tools/linear-retry-drain.ts:48", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tools/linear-retry-drain.ts:48"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-c0214a747c2033cb", "name": "Stray `console.log` in TS/JS \u2014 tools/sync-config.ts:39", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tools/sync-config.ts:39"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-ae8f5c438bf3eb31", "name": "Stray `console.log` in TS/JS \u2014 tools/registry.ts:34", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tools/registry.ts:34"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-de611bfedc2b9ff5", "name": "Stray `console.log` in TS/JS \u2014 tools/resolve-challenge-task.ts:79", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tools/resolve-challenge-task.ts:79"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-17b72bbeb33bed50", "name": "Stray `console.log` in TS/JS \u2014 tools/update-issue.ts:36", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tools/update-issue.ts:36"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-110eee37a5cc6a04", "name": "Stray `console.log` in TS/JS \u2014 tools/validate-evals.ts:52", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tools/validate-evals.ts:52"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-4d489ceaf67b48ef", "name": "Stray `console.log` in TS/JS \u2014 tools/backfill-stage-attribution.ts:181", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tools/backfill-stage-attribution.ts:181"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-f90893eb39d9ad83", "name": "Stray `console.log` in TS/JS \u2014 tools/review-pr.ts:36", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tools/review-pr.ts:36"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-42ff7bf6cfb6fc65", "name": "Stray `console.log` in TS/JS \u2014 tools/ready.ts:162", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tools/ready.ts:162"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-f424ccfead89e1a1", "name": "Stray `console.log` in TS/JS \u2014 tools/hokusai-router-audit.ts:58", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tools/hokusai-router-audit.ts:58"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-4b8545aa1bae5e5f", "name": "Stray `console.log` in TS/JS \u2014 tools/tend.ts:57", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tools/tend.ts:57"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-fea50ffb3df065c2", "name": "Stray `console.log` in TS/JS \u2014 tools/review-stats.ts:74", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tools/review-stats.ts:74"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-2948af9ad1a3ce2f", "name": "Stray `console.log` in TS/JS \u2014 tools/recost-opus-4-6.ts:182", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tools/recost-opus-4-6.ts:182"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-c7ae578264d67d8f", "name": "Stray `console.log` in TS/JS \u2014 tools/hokusai-manage.ts:50", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tools/hokusai-manage.ts:50"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-64ffa36c9ce8b9cc", "name": "Stray `console.log` in TS/JS \u2014 tools/check-cross-pr-reverts.ts:152", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tools/check-cross-pr-reverts.ts:152"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-0ac22e409d35e7fc", "name": "Stray `console.log` in TS/JS \u2014 tools/validate-constraints.ts:72", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tools/validate-constraints.ts:72"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-978af04281d264bb", "name": "Stray `console.log` in TS/JS \u2014 tools/backfill-task-descriptors.ts:93", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tools/backfill-task-descriptors.ts:93"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-00a83dc43a30791f", "name": "Stray `console.log` in TS/JS \u2014 tools/run-wavemill-router-eval.ts:62", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tools/run-wavemill-router-eval.ts:62"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-0f12cb8cd8f376df", "name": "Stray `console.log` in TS/JS \u2014 tools/session.ts:22", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tools/session.ts:22"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-24259e193ea1818e", "name": "Stray `console.log` in TS/JS \u2014 tools/gather-review-context.ts:33", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tools/gather-review-context.ts:33"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-97042a094118f45e", "name": "Stray `console.log` in TS/JS \u2014 tools/generate-permissions.ts:46", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tools/generate-permissions.ts:46"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-eb22faf18464aa40", "name": "Stray `console.log` in TS/JS \u2014 tools/context-init.ts:11", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tools/context-init.ts:11"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-9a769c74e4b60e1e", "name": "Stray `console.log` in TS/JS \u2014 tools/context-search.ts:35", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tools/context-search.ts:35"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-268c1dfd2a290836", "name": "TODO/FIXME marker in shipping code \u2014 tools/plan-initiative.ts:107", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 tools/plan-initiative.ts:107"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-0049520039d79f54", "name": "Stray `console.log` in TS/JS \u2014 tools/plan-initiative.ts:63", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tools/plan-initiative.ts:63"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-48975033b490186c", "name": "Stray `console.log` in TS/JS \u2014 tools/compact-project-context.ts:46", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tools/compact-project-context.ts:46"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-5c735e9e27657a68", "name": "Stray `console.log` in TS/JS \u2014 tools/list-prs.ts:112", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tools/list-prs.ts:112"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-de7db8824be9f079", "name": "Stray `console.log` in TS/JS \u2014 tools/check-review-setup.ts:199", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tools/check-review-setup.ts:199"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-3915a86f7adbd500", "name": "Stray `console.log` in TS/JS \u2014 tools/generate-concept.ts:35", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tools/generate-concept.ts:35"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-25414baae47e1884", "name": "Stray `console.log` in TS/JS \u2014 tools/deduplicate-evals.ts:60", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tools/deduplicate-evals.ts:60"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-55107232fdb15072", "name": "Stray `console.log` in TS/JS \u2014 tools/init-github-labels.ts:24", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tools/init-github-labels.ts:24"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-a0ce2c09ba3cd2e9", "name": "Stray `console.log` in TS/JS \u2014 tools/generate-constraint-rules.ts:42", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tools/generate-constraint-rules.ts:42"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-8116b723cc71f74d", "name": "Stray `console.log` in TS/JS \u2014 tools/list-backlog-json.ts:29", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tools/list-backlog-json.ts:29"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-acfb5cf2d058650a", "name": "Stray `console.log` in TS/JS \u2014 tools/get-backlog.ts:9", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tools/get-backlog.ts:9"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-52ddc64529a5d854", "name": "Stray `console.log` in TS/JS \u2014 tools/smoke-deepseek.ts:82", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tools/smoke-deepseek.ts:82"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-095f5c4bee0e1305", "name": "Stray `console.log` in TS/JS \u2014 tools/controller-ready.ts:26", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tools/controller-ready.ts:26"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-84aeafa85130d895", "name": "Stray `console.log` in TS/JS \u2014 tools/backfill-manifest-refs.ts:36", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tools/backfill-manifest-refs.ts:36"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-43ea59bd447b4d14", "name": "Stray `console.log` in TS/JS \u2014 tools/add-issue-label.ts:45", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tools/add-issue-label.ts:45"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-64cb8b8093ceb2ed", "name": "Stray `console.log` in TS/JS \u2014 tools/migrate-eval-corpus.ts:62", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tools/migrate-eval-corpus.ts:62"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-8ad047a4e624468b", "name": "Stray `console.log` in TS/JS \u2014 tools/promote.ts:31", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tools/promote.ts:31"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-d335357ae5ecb8d2", "name": "Stray `console.log` in TS/JS \u2014 tools/classify-packet.ts:23", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tools/classify-packet.ts:23"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-33c12ff12211e6be", "name": "Stray `console.log` in TS/JS \u2014 tools/generate-claude-permissions.ts:39", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tools/generate-claude-permissions.ts:39"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-3508e8382e16dba2", "name": "Stray `console.log` in TS/JS \u2014 tools/init-labels.ts:38", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tools/init-labels.ts:38"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-20ab56f3c35f9a46", "name": "Stray `console.log` in TS/JS \u2014 tools/verify-permissions.ts:33", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tools/verify-permissions.ts:33"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-25c8166ce2b4e246", "name": "Stray `console.log` in TS/JS \u2014 tools/expand-issue.ts:68", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tools/expand-issue.ts:68"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-cc5fbffd60bff293", "name": "Stray `console.log` in TS/JS \u2014 tools/resolve-runtime-resource.ts:42", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tools/resolve-runtime-resource.ts:42"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-4282fccfd6d11ba1", "name": "Stray `console.log` in TS/JS \u2014 tools/get-issue-state.ts:26", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tools/get-issue-state.ts:26"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-5827e0c46389037e", "name": "Stray `console.log` in TS/JS \u2014 tools/backfill-workflow-cost-status.ts:101", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tools/backfill-workflow-cost-status.ts:101"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-4674042f66adbdc0", "name": "Stray `console.log` in TS/JS \u2014 tools/scaffold-migrate-dryrun.ts:76", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tools/scaffold-migrate-dryrun.ts:76"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-c6097816785471da", "name": "Stray `console.log` in TS/JS \u2014 tools/check-routing.ts:31", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tools/check-routing.ts:31"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-9cd416e039ac3ff1", "name": "Stray `console.log` in TS/JS \u2014 tools/router-diversity-report.ts:37", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tools/router-diversity-report.ts:37"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-77160add4c4015b0", "name": "Stray `console.log` in TS/JS \u2014 tools/merge-queue-select.ts:25", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tools/merge-queue-select.ts:25"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-967fd41ed944b7bf", "name": "Stray `console.log` in TS/JS \u2014 tools/route-tasks.ts:223", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tools/route-tasks.ts:223"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-0c2650eec2c8ba23", "name": "Stray `console.log` in TS/JS \u2014 tools/review-changes.ts:135", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tools/review-changes.ts:135"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-f63290349b50ca52", "name": "Stray `console.log` in TS/JS \u2014 tools/set-issues-state.ts:32", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tools/set-issues-state.ts:32"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-da103b8bddbc3e97", "name": "Stray `console.log` in TS/JS \u2014 tools/backfill-pricing-snapshot.ts:130", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tools/backfill-pricing-snapshot.ts:130"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-5a06de3bb6928673", "name": "Stray `console.log` in TS/JS \u2014 tools/generate-codex-permissions.ts:33", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tools/generate-codex-permissions.ts:33"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-0e53c1fadc756a23", "name": "Stray `console.log` in TS/JS \u2014 tools/aggregate-evals.ts:99", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tools/aggregate-evals.ts:99"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-726b94875de008e6", "name": "Stray `console.log` in TS/JS \u2014 tools/route-task.ts:130", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tools/route-task.ts:130"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-653f964c45f87814", "name": "Stray `console.log` in TS/JS \u2014 tools/compare-prs.ts:90", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tools/compare-prs.ts:90"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-7b642110ed640686", "name": "Stray `console.log` in TS/JS \u2014 tools/check-config-version.ts:125", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tools/check-config-version.ts:125"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-730fe50e518e4143", "name": "Privileged port 11 in use", "shortDescription": {"text": "Privileged port 11 in use"}, "fullDescription": {"text": "Port 11 is privileged (<1024). Make sure the service runs with the right caps or front it with a non-privileged port via a load balancer."}, "properties": {"scanner": "scanner-primary", "layer": "network", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-85c9d1b3dbcec78c", "name": "Privileged port 10 in use", "shortDescription": {"text": "Privileged port 10 in use"}, "fullDescription": {"text": "Port 10 is privileged (<1024). Make sure the service runs with the right caps or front it with a non-privileged port via a load balancer."}, "properties": {"scanner": "scanner-primary", "layer": "network", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-0247719dab55ec26", "name": "Privileged port 5 in use", "shortDescription": {"text": "Privileged port 5 in use"}, "fullDescription": {"text": "Port 5 is privileged (<1024). Make sure the service runs with the right caps or front it with a non-privileged port via a load balancer."}, "properties": {"scanner": "scanner-primary", "layer": "network", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-02ea3925226f464d", "name": "Privileged port 9 in use", "shortDescription": {"text": "Privileged port 9 in use"}, "fullDescription": {"text": "Port 9 is privileged (<1024). Make sure the service runs with the right caps or front it with a non-privileged port via a load balancer."}, "properties": {"scanner": "scanner-primary", "layer": "network", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-f91cdbe6e86212ac", "name": "Privileged port 12 in use", "shortDescription": {"text": "Privileged port 12 in use"}, "fullDescription": {"text": "Port 12 is privileged (<1024). Make sure the service runs with the right caps or front it with a non-privileged port via a load balancer."}, "properties": {"scanner": "scanner-primary", "layer": "network", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-d0bb55d8279785db", "name": "Privileged port 30 in use", "shortDescription": {"text": "Privileged port 30 in use"}, "fullDescription": {"text": "Port 30 is privileged (<1024). Make sure the service runs with the right caps or front it with a non-privileged port via a load balancer."}, "properties": {"scanner": "scanner-primary", "layer": "network", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-355e0374c73aa996", "name": "Privileged port 18 in use", "shortDescription": {"text": "Privileged port 18 in use"}, "fullDescription": {"text": "Port 18 is privileged (<1024). Make sure the service runs with the right caps or front it with a non-privileged port via a load balancer."}, "properties": {"scanner": "scanner-primary", "layer": "network", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-96d20c7c0e1d35ce", "name": "Privileged port 16 in use", "shortDescription": {"text": "Privileged port 16 in use"}, "fullDescription": {"text": "Port 16 is privileged (<1024). Make sure the service runs with the right caps or front it with a non-privileged port via a load balancer."}, "properties": {"scanner": "scanner-primary", "layer": "network", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-e14eee234d76ac7a", "name": "Privileged port 14 in use", "shortDescription": {"text": "Privileged port 14 in use"}, "fullDescription": {"text": "Port 14 is privileged (<1024). Make sure the service runs with the right caps or front it with a non-privileged port via a load balancer."}, "properties": {"scanner": "scanner-primary", "layer": "network", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-08893039810a1e41", "name": "Privileged port 55 in use", "shortDescription": {"text": "Privileged port 55 in use"}, "fullDescription": {"text": "Port 55 is privileged (<1024). Make sure the service runs with the right caps or front it with a non-privileged port via a load balancer."}, "properties": {"scanner": "scanner-primary", "layer": "network", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-bcc15ae61d1923ab", "name": "Privileged port 15 in use", "shortDescription": {"text": "Privileged port 15 in use"}, "fullDescription": {"text": "Port 15 is privileged (<1024). Make sure the service runs with the right caps or front it with a non-privileged port via a load balancer."}, "properties": {"scanner": "scanner-primary", "layer": "network", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-d3355271f2fda925", "name": "Privileged port 23 in use", "shortDescription": {"text": "Privileged port 23 in use"}, "fullDescription": {"text": "Port 23 is privileged (<1024). Make sure the service runs with the right caps or front it with a non-privileged port via a load balancer."}, "properties": {"scanner": "scanner-primary", "layer": "network", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-f88e3b1c3ea397d4", "name": "Privileged port 59 in use", "shortDescription": {"text": "Privileged port 59 in use"}, "fullDescription": {"text": "Port 59 is privileged (<1024). Make sure the service runs with the right caps or front it with a non-privileged port via a load balancer."}, "properties": {"scanner": "scanner-primary", "layer": "network", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-724e237aefffc5bc", "name": "Insecure pattern 'node_child_process' in shared/lib/ready-migration-base.ts:1", "shortDescription": {"text": "Insecure pattern 'node_child_process' in shared/lib/ready-migration-base.ts:1"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-a5da220fc7ca126f", "name": "Insecure pattern 'eval_used' in shared/lib/eval-schema.json:51", "shortDescription": {"text": "Insecure pattern 'eval_used' in shared/lib/eval-schema.json:51"}, "fullDescription": {"text": "Found a known-risky pattern (eval_used). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-2785b2ae72840551", "name": "Insecure pattern 'node_child_process' in shared/lib/ready-watchdog.ts:4", "shortDescription": {"text": "Insecure pattern 'node_child_process' in shared/lib/ready-watchdog.ts:4"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-531eaa2e2704ecf9", "name": "Insecure pattern 'node_child_process' in shared/lib/llm-cli.test.ts:2", "shortDescription": {"text": "Insecure pattern 'node_child_process' in shared/lib/llm-cli.test.ts:2"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-d4a8e2c051798a52", "name": "Insecure pattern 'node_child_process' in shared/lib/tend-controller.test.ts:2", "shortDescription": {"text": "Insecure pattern 'node_child_process' in shared/lib/tend-controller.test.ts:2"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-ab1f59991917d7b2", "name": "Insecure pattern 'node_child_process' in shared/lib/resource-selection.test.ts:2", "shortDescription": {"text": "Insecure pattern 'node_child_process' in shared/lib/resource-selection.test.ts:2"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-be012b66c8cfacb5", "name": "Insecure pattern 'node_child_process' in shared/lib/context-updater.ts:2", "shortDescription": {"text": "Insecure pattern 'node_child_process' in shared/lib/context-updater.ts:2"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-54a107617d350ddf", "name": "Insecure pattern 'node_child_process' in shared/lib/cli-prompt.test.ts:2", "shortDescription": {"text": "Insecure pattern 'node_child_process' in shared/lib/cli-prompt.test.ts:2"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-c78df30fd8a88b31", "name": "Insecure pattern 'node_child_process' in shared/lib/context-linter.test.ts:5", "shortDescription": {"text": "Insecure pattern 'node_child_process' in shared/lib/context-linter.test.ts:5"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-554a3ec55756c35a", "name": "Insecure pattern 'node_child_process' in shared/lib/run-verification.ts:22", "shortDescription": {"text": "Insecure pattern 'node_child_process' in shared/lib/run-verification.ts:22"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-4212538a38f87779", "name": "Insecure pattern 'node_child_process' in shared/lib/llm-cli.ts:18", "shortDescription": {"text": "Insecure pattern 'node_child_process' in shared/lib/llm-cli.ts:18"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-634c46de6375bbda", "name": "Insecure pattern 'node_child_process' in shared/lib/rule-generator.ts:116", "shortDescription": {"text": "Insecure pattern 'node_child_process' in shared/lib/rule-generator.ts:116"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-f70dc9e21f917d08", "name": "Insecure pattern 'node_child_process' in shared/lib/pr-comparison.ts:1", "shortDescription": {"text": "Insecure pattern 'node_child_process' in shared/lib/pr-comparison.ts:1"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-67b6473ee7a056a5", "name": "Insecure pattern 'node_child_process' in shared/lib/ready-stage.ts:33", "shortDescription": {"text": "Insecure pattern 'node_child_process' in shared/lib/ready-stage.ts:33"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-b73db76bf5ed3f0c", "name": "Insecure pattern 'node_child_process' in shared/lib/evals-paths.test.ts:2", "shortDescription": {"text": "Insecure pattern 'node_child_process' in shared/lib/evals-paths.test.ts:2"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-ae5cbfec8ddaba84", "name": "Insecure pattern 'node_child_process' in shared/lib/patch-size-validator.ts:11", "shortDescription": {"text": "Insecure pattern 'node_child_process' in shared/lib/patch-size-validator.ts:11"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-ae6872bc08e42d21", "name": "Insecure pattern 'node_child_process' in shared/lib/review-context-gatherer.test.ts:8", "shortDescription": {"text": "Insecure pattern 'node_child_process' in shared/lib/review-context-gatherer.test.ts:8"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-3810489b57ae0dda", "name": "Insecure pattern 'node_child_process' in shared/lib/constraint-validator.ts:9", "shortDescription": {"text": "Insecure pattern 'node_child_process' in shared/lib/constraint-validator.ts:9"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-702375de3fdacf74", "name": "Insecure pattern 'node_child_process' in shared/lib/operating-mode.test.ts:2", "shortDescription": {"text": "Insecure pattern 'node_child_process' in shared/lib/operating-mode.test.ts:2"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-116bdf6757b1b58a", "name": "Insecure pattern 'node_child_process' in shared/lib/deepseek-smoke.ts:1", "shortDescription": {"text": "Insecure pattern 'node_child_process' in shared/lib/deepseek-smoke.ts:1"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-9734f7924a666642", "name": "Insecure pattern 'node_child_process' in shared/lib/job-tracker.test.ts:6", "shortDescription": {"text": "Insecure pattern 'node_child_process' in shared/lib/job-tracker.test.ts:6"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-a2519d12f33dabe7", "name": "Insecure pattern 'node_child_process' in shared/lib/shell-utils.ts:8", "shortDescription": {"text": "Insecure pattern 'node_child_process' in shared/lib/shell-utils.ts:8"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-9c5af38ea23db17f", "name": "Insecure pattern 'node_child_process' in shared/lib/cross-pr-revert-detector.test.ts:2", "shortDescription": {"text": "Insecure pattern 'node_child_process' in shared/lib/cross-pr-revert-detector.test.ts:2"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-fa14f165556c0a7a", "name": "Insecure pattern 'node_child_process' in shared/lib/quota-state.test.ts:2", "shortDescription": {"text": "Insecure pattern 'node_child_process' in shared/lib/quota-state.test.ts:2"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-66b56977831de08c", "name": "Insecure pattern 'node_child_process' in shared/lib/resource-adapters/tool-env-adapter.ts:3", "shortDescription": {"text": "Insecure pattern 'node_child_process' in shared/lib/resource-adapters/tool-env-adapter.ts:3"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-0a8b6e5862754479", "name": "Insecure pattern 'node_child_process' in tools/sync-config.test.ts:6", "shortDescription": {"text": "Insecure pattern 'node_child_process' in tools/sync-config.test.ts:6"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-d03e83b2e7518e00", "name": "Insecure pattern 'node_child_process' in tools/context-check.ts:5", "shortDescription": {"text": "Insecure pattern 'node_child_process' in tools/context-check.ts:5"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-87b17a5ba55f3f7e", "name": "Insecure pattern 'node_child_process' in tools/backfill-workflow-cost.ts:6", "shortDescription": {"text": "Insecure pattern 'node_child_process' in tools/backfill-workflow-cost.ts:6"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-740d3f7419ca91e3", "name": "Insecure pattern 'node_child_process' in tools/ready-watchdog.ts:3", "shortDescription": {"text": "Insecure pattern 'node_child_process' in tools/ready-watchdog.ts:3"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-575321f973b7d449", "name": "Insecure pattern 'node_child_process' in tools/select-wave.test.ts:3", "shortDescription": {"text": "Insecure pattern 'node_child_process' in tools/select-wave.test.ts:3"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-2dc573193b1bd72b", "name": "Insecure pattern 'node_child_process' in tools/observer.ts:3", "shortDescription": {"text": "Insecure pattern 'node_child_process' in tools/observer.ts:3"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-41a197deb17175db", "name": "Insecure pattern 'node_child_process' in tools/route-tasks.test.ts:3", "shortDescription": {"text": "Insecure pattern 'node_child_process' in tools/route-tasks.test.ts:3"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-ce1488bc598c1531", "name": "Insecure pattern 'node_child_process' in tools/plan-queue.test.ts:3", "shortDescription": {"text": "Insecure pattern 'node_child_process' in tools/plan-queue.test.ts:3"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-bc4141470ad70428", "name": "Insecure pattern 'node_child_process' in tools/state.ts:3", "shortDescription": {"text": "Insecure pattern 'node_child_process' in tools/state.ts:3"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-f3a047c8783b64a6", "name": "Insecure pattern 'node_child_process' in tools/check-cross-pr-reverts.test.ts:2", "shortDescription": {"text": "Insecure pattern 'node_child_process' in tools/check-cross-pr-reverts.test.ts:2"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-cc70d693daf549ab", "name": "Insecure pattern 'node_child_process' in tools/smoke-deepseek.test.ts:2", "shortDescription": {"text": "Insecure pattern 'node_child_process' in tools/smoke-deepseek.test.ts:2"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-8165c72ece9964b8", "name": "Insecure pattern 'node_child_process' in tools/review-changes.ts:15", "shortDescription": {"text": "Insecure pattern 'node_child_process' in tools/review-changes.ts:15"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-ca82714e859cfd09", "name": "Insecure pattern 'weak_hash' in tools/aggregate-evals.ts:69", "shortDescription": {"text": "Insecure pattern 'weak_hash' in tools/aggregate-evals.ts:69"}, "fullDescription": {"text": "Found a known-risky pattern (weak_hash). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-6b86c56d7c325759", "name": "Insecure pattern 'eval_used' in src/evaluation/adapters/wavemill-router-adapter.ts:451", "shortDescription": {"text": "Insecure pattern 'eval_used' in src/evaluation/adapters/wavemill-router-adapter.ts:451"}, "fullDescription": {"text": "Found a known-risky pattern (eval_used). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-4bb72ad886589e15", "name": "Very large file: tests/check-shell.sh (3153 lines)", "shortDescription": {"text": "Very large file: tests/check-shell.sh (3153 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-f423a281cf63b542", "name": "Very large file: tests/lifecycle-harness.test.sh (1408 lines)", "shortDescription": {"text": "Very large file: tests/lifecycle-harness.test.sh (1408 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-0bb9030c503f29e2", "name": "Very large file: shared/lib/wavemill-mill.sh (10807 lines)", "shortDescription": {"text": "Very large file: shared/lib/wavemill-mill.sh (10807 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-764024d055642bbb", "name": "Very large file: shared/lib/eval-schema.test.ts (1835 lines)", "shortDescription": {"text": "Very large file: shared/lib/eval-schema.test.ts (1835 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-1a5f895d5b79cb57", "name": "Very large file: shared/lib/workflow-router.ts (1827 lines)", "shortDescription": {"text": "Very large file: shared/lib/workflow-router.ts (1827 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-6e59b1072bf6c530", "name": "Very large file: shared/lib/agent-adapters.sh (2342 lines)", "shortDescription": {"text": "Very large file: shared/lib/agent-adapters.sh (2342 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-bef5aea33dfcc9e5", "name": "Very large file: shared/lib/tend-controller.test.ts (1493 lines)", "shortDescription": {"text": "Very large file: shared/lib/tend-controller.test.ts (1493 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-412b1d64e09fa056", "name": "Very large file: shared/lib/promotion-controller.test.ts (1283 lines)", "shortDescription": {"text": "Very large file: shared/lib/promotion-controller.test.ts (1283 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-eb5141aacf4817d6", "name": "Very large file: shared/lib/eval-schema.ts (1605 lines)", "shortDescription": {"text": "Very large file: shared/lib/eval-schema.ts (1605 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-cd4d642f3a5a6a2e", "name": "Very large file: shared/lib/wavemill-common.sh (2228 lines)", "shortDescription": {"text": "Very large file: shared/lib/wavemill-common.sh (2228 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-c30a0821fb21d864", "name": "Very large file: shared/lib/llm-cli.ts (1866 lines)", "shortDescription": {"text": "Very large file: shared/lib/llm-cli.ts (1866 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-ce4af5f32f0b9ecb", "name": "Very large file: shared/lib/ready-stage.test.ts (2509 lines)", "shortDescription": {"text": "Very large file: shared/lib/ready-stage.test.ts (2509 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-892da8eefc7661fe", "name": "Very large file: shared/lib/stage-aware-router.test.ts (1651 lines)", "shortDescription": {"text": "Very large file: shared/lib/stage-aware-router.test.ts (1651 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-fee58376b7ef03b4", "name": "Very large file: shared/lib/config.test.ts (3007 lines)", "shortDescription": {"text": "Very large file: shared/lib/config.test.ts (3007 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-69bd614a6920475d", "name": "Very large file: shared/lib/ready-stage.ts (2816 lines)", "shortDescription": {"text": "Very large file: shared/lib/ready-stage.ts (2816 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-2fbe176a90ede8a4", "name": "33 TODO/FIXME markers", "shortDescription": {"text": "33 TODO/FIXME markers"}, "fullDescription": {"text": "High count of TODO/FIXME/HACK markers \u2014 track them as issues so they're not forgotten."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-b3ed68815bca2f8c", "name": "Node manifest has dependencies but no lockfile: package.json", "shortDescription": {"text": "Node manifest has dependencies but no lockfile: package.json"}, "fullDescription": {"text": "`package.json` declares dependencies, but no same-directory npm/pnpm/yarn/bun lockfile was found. Generated projects without lockfiles are less reproducible and harder to secure-scan precisely."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-3c6f2d410af528a3", "name": "Node manifest has dependencies but no lockfile: tools/package.json", "shortDescription": {"text": "Node manifest has dependencies but no lockfile: tools/package.json"}, "fullDescription": {"text": "`package.json` declares dependencies, but no same-directory npm/pnpm/yarn/bun lockfile was found. Generated projects without lockfiles are less reproducible and harder to secure-scan precisely."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-3ab5d313dda8e5f9", "name": "Debug logging residue appears in source files", "shortDescription": {"text": "Debug logging residue appears in source files"}, "fullDescription": {"text": "Found 1140 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 21 placeholder/mock markers across 9 source files. This often means the repo looks complete while core flows still use generated scaffolding or fake data."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-2d0c7b7ab8f8aacf", "name": "Critical user flow still appears backed by mock or placeholder data", "shortDescription": {"text": "Critical user flow still appears backed by mock or placeholder data"}, "fullDescription": {"text": "A payment/auth/admin/order/billing-style flow contains mock, fake, TODO, dummy, or placeholder markers in runtime source. In the Fable corpus this is a high-leverage completeness smell: the app can look finished while the money, identity, or tenant flow is still scaffolded."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-749d4bc1bd66df5f", "name": "Agent instructions exist but release-hardening basics are missing", "shortDescription": {"text": "Agent instructions exist but release-hardening basics are missing"}, "fullDescription": {"text": "AI-coder instruction files were found, but the repo is missing lockfile. Treat this as a contract gap: the agent is guided, but the generated output is not yet guarded by the controls that make it repeatable."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-ea8f3013f588db25", "name": "Shallow git history limits provenance confidence", "shortDescription": {"text": "Shallow git history limits provenance confidence"}, "fullDescription": {"text": "The repository is a shallow clone. Origin/evolution analysis cannot distinguish fresh generation, imported legacy code, or long-lived human code with high confidence."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-8424db9c75e04ba4", "name": "Very short observed git history", "shortDescription": {"text": "Very short observed git history"}, "fullDescription": {"text": "The repo has multiple source files but two or fewer visible commits. This is not a failure by itself, but it lowers confidence in evolution-based diagnosis."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-17d866d91a7c451e", "name": "Agent instruction/config may expose a secret: CLAUDE.md", "shortDescription": {"text": "Agent instruction/config may expose a secret: CLAUDE.md"}, "fullDescription": {"text": "Agent-facing files are routinely pasted into LLM/tool contexts. Move literal tokens, keys, and passwords into a secret manager or document them as placeholders only."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-8381cde1eb96cab5", "name": "Commented-code block (5 lines) in shared/lib/workflow-cost.test.ts:130", "shortDescription": {"text": "Commented-code block (5 lines) in shared/lib/workflow-cost.test.ts:130"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-fbe6b5021e577b44", "name": "Legacy-named symbol `featureLegacy` in shared/lib/review-context-gatherer.ts:295", "shortDescription": {"text": "Legacy-named symbol `featureLegacy` in shared/lib/review-context-gatherer.ts:295"}, "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-b587d5f87c915c52", "name": "Commented-code block (6 lines) in shared/lib/tend-controller.ts:463", "shortDescription": {"text": "Commented-code block (6 lines) in shared/lib/tend-controller.ts:463"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-4654eaab74b23542", "name": "Commented-code block (6 lines) in shared/lib/promotion-controller.ts:931", "shortDescription": {"text": "Commented-code block (6 lines) in shared/lib/promotion-controller.ts:931"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-66cc34cb74c060fc", "name": "`fetch()` without try/.catch or AbortSignal \u2014 tools/observer.ts:755", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 tools/observer.ts:755"}, "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-7dd67fca4e97656a", "name": "`fetch()` without try/.catch or AbortSignal \u2014 tools/list-prs.ts:59", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 tools/list-prs.ts:59"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-4d223bfdf539b12d", "name": "42 env vars used in code but missing from .env.example", "shortDescription": {"text": "42 env vars used in code but missing from .env.example"}, "fullDescription": {"text": "Drift between code and config docs. The first few: `CHALLENGE_COMPARISON_MAX_PROMPT_BYTES`, `CLAUDE_CMD`, `CLAUDE_MODEL`, `CODEX_CMD`, `CODEX_CONFIG_PATH`, `DASHBOARD_VERBOSITY`, `DEBUG_COST`, `DEEPSEEK_API_KEY` + 34 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-02525d39071dd2c7", "name": "Near-duplicate function bodies in 5 places", "shortDescription": {"text": "Near-duplicate function bodies in 5 places"}, "fullDescription": {"text": "Functions with the same first-5-line body hash:\ndspy/evaluators/coder_evaluator.py:evaluate_coder, dspy/evaluators/model_router_evaluator.py:evaluate_model_router, dspy/evaluators/planner_evaluator.py:evaluate_planner, dspy/evaluators/reviewer_evaluator.py:evaluate_reviewer\n\nThis is *the* AI-coder failure mode (4\u00d7 more duplication in vibe-coded repos \u2014 see https://jw.hn/ai-code-hygiene). Consolidate or document why they're separate."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-33a6b62e30ce7ab4", "name": "Near-duplicate function bodies in 6 places", "shortDescription": {"text": "Near-duplicate function bodies in 6 places"}, "fullDescription": {"text": "Functions with the same first-5-line body hash:\ndspy/evaluators/coder_evaluator.py:run_evaluation, dspy/evaluators/model_router_evaluator.py:run_evaluation, dspy/evaluators/planner_evaluator.py:run_evaluation, dspy/evaluators/issue_writer_evaluator.py:run_evaluation\n\nThis is *the* AI-coder failure mode (4\u00d7 more duplication in vibe-coded repos \u2014 see https://jw.hn/ai-code-hygiene). Consolidate or document why they're separate."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}]}}, "automationDetails": {"id": "repobility/21305"}, "properties": {"repository": "timogilvie/wavemill", "repoUrl": "https://github.com/timogilvie/wavemill", "branch": "main"}, "results": [{"ruleId": "foundry_unresolved_feedback", "level": "warning", "message": {"text": "Foundry mined unresolved feedback: timogilvie/wavemill"}, "properties": {"repobilityId": 430286, "scanner": "foundry_dataset", "fingerprint": "6987a13d56964fdda6b838bcceca2f9706ff2ae97eedd6efb046d80c6a15d365", "category": "practices", "severity": "medium", "confidence": 0.7, "triageState": "open", "verdict": "needs_review", "isResolved": false, "reason": "Imported from mined Foundry/Fable5 evidence with real GitHub/source provenance. Review source_id before acting.", "evidence": {"meta": {"kind": "graph_query_record", "title": "Human feedback without linked fix evidence", "intent": "Negative/unresolved examples that should not be hallucinated into fixes.", "labels": {"test_or_ci": 17, "api_or_backend": 8, "docs_or_claims": 6, "schema_or_data": 4, "source_or_other": 13, "weak blueprint fit": 2, "dependency_or_build": 1, "partial blueprint fit": 1, "data_schema_persistence": 1, "issue_or_pull_request_thread": 1, "not_resolved_or_not_observed": 3, "blueprint_human_gap_alignment": 3, "human_reported_issue_no_linked_fix": 1, "thread_has_human_issue_without_fix_context": 2}, "source": "graph_query_export", "motif_id": "unlinked_feedback_needs_evidence", "outcomes": {"not_resolved_or_not_observed": 6}, "polarity": "bad", "query_id": "unresolved_feedback", "severity": "medium", "ci_labels": {}, "synthetic": false, "edge_count": 96, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 1, "thread_has_comment": 1, "thread_touches_file": 49, "alignment_uses_comment": 3, "alignment_uses_finding": 3, "chain_has_link_quality": 6, "comment_aligns_finding": 3, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "issue_chain_touches_file": 12, "thread_has_comment_chain": 1, "comment_chain_touches_file": 12, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 1}, "node_count": 67, "node_types": {"repo": 1, "thread": 1, "comment": 1, "pr_file": 49, "alignment": 3, "fix_outcome": 1, "issue_chain": 1, "link_quality": 6, "comment_chain": 1, "blueprint_finding": 3}, "query_type": "motif_query", "thread_key": "timogilvie/wavemill#741", "issue_number": "741", "quality_tiers": {"unresolved": 3, "assumption_check": 3}, "repo_full_name": "timogilvie/wavemill", "training_usage": "negative_or_unresolved", "source_motif_id": "graph-pattern-motif-thread-73b198a004b1d040", "graph_gold_label": "assumption_check", "changed_file_labels": {"test_or_ci": 68, "api_or_backend": 32, "docs_or_claims": 24, "schema_or_data": 16, "source_or_other": 52, "dependency_or_build": 4}}, "text": "Graph query export: Human feedback without linked fix evidence\nQuery id: unresolved_feedback\nQuery type: motif_query\nIntent: Negative/unresolved examples that should not be hallucinated into fixes.\nMotif: unlinked_feedback_needs_evidence\nTraining usage: negative_or_unresolved\nGraph gold label: assumption_check\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#741\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: timogilvie/wavemill\nThread: timogilvie/wavemill#741\nGraph gold label: assumption_check\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: timogilvie/wavemill#741\nRepo: timogilvie/wavemill\nIssue/PR number: 741\nGraph consistency label: assumption_check\nNodes: 67\nEdges: 96\nNode types: {'pr_file': 49, 'link_quality': 6, 'alignment': 3, 'blueprint_finding': 3, 'thread': 1, 'repo': 1, 'comment': 1, 'comment_chain': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'thread_touches_file': 49, 'comment_chain_touches_file': 12, 'issue_chain_touches_file': 12, 'chain_has_link_quality': 6, 'alignment_uses_comment': 3, 'alignment_uses_finding': 3, 'comment_aligns_finding': 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: {'test_or_ci': 17, 'source_or_other': 13, 'api_or_backend': 8, 'docs_or_claims': 6, 'schema_or_data': 4, 'not_resolved_or_not_observed': 3, 'blueprint_human_gap_alignment': 3, 'thread_has_human_issue_without_fix_context': 2, 'weak blueprint fit': 2, 'issue_or_pull_request_thread': 1, 'data_schema_persistence': 1, 'dependency_or_build': 1, 'human_reported_issue_no_linked_fix': 1, 'partial blueprint fit': 1}\nOutcomes: {'not_resolved_or_not_observed': 6}\nQuality tiers: {'unresolved': 3, 'assumption_check': 3}\nCI labels: {}\nCurriculum targets:\n- Teach models to preserve unresolved human feedback instead of hallucinating fixes.\n- Build issue-to-regression examples where no accepted fix exists yet.\nAssumption checks:\n- Can a commit be linked by issue number, SHA, changed path, or time window?\n- If no link exists, is this explicitly labelled unresolved?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/timogilvie/wavemill", "source_id": "graph-query-motif_query-4a3fd3851fa1f699", "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": "timogilvie/wavemill", "source_dataset": "graph_queries/unresolved_feedback", "training_usage": "negative_or_unresolved"}}}, {"ruleId": "foundry_unresolved_feedback", "level": "warning", "message": {"text": "Foundry mined unresolved feedback: timogilvie/wavemill"}, "properties": {"repobilityId": 430285, "scanner": "foundry_dataset", "fingerprint": "0a78dd4f80232a56db06889f6072b127a4cece99996933f305b2c8f73c61b640", "category": "practices", "severity": "medium", "confidence": 0.7, "triageState": "open", "verdict": "needs_review", "isResolved": false, "reason": "Imported from mined Foundry/Fable5 evidence with real GitHub/source provenance. Review source_id before acting.", "evidence": {"meta": {"kind": "graph_query_record", "title": "Human feedback without linked fix evidence", "intent": "Negative/unresolved examples that should not be hallucinated into fixes.", "labels": {"test_or_ci": 1, "api_or_backend": 2, "source_or_other": 1, "mock_placeholder": 1, "dependency_or_build": 1, "issue_or_pull_request_thread": 1, "not_resolved_or_not_observed": 3, "human_reported_issue_no_linked_fix": 1, "thread_has_human_issue_without_fix_context": 2}, "source": "graph_query_export", "motif_id": "unlinked_feedback_needs_evidence", "outcomes": {"not_resolved_or_not_observed": 6}, "polarity": "bad", "query_id": "unresolved_feedback", "severity": "medium", "ci_labels": {}, "synthetic": false, "edge_count": 26, "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_touches_file": 5, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 1}, "node_count": 14, "node_types": {"repo": 1, "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": "timogilvie/wavemill#735", "issue_number": "735", "quality_tiers": {"unresolved": 3}, "repo_full_name": "timogilvie/wavemill", "training_usage": "negative_or_unresolved", "source_motif_id": "graph-pattern-motif-thread-f36a31edffa5f3ee", "graph_gold_label": "needs_more_evidence", "changed_file_labels": {"test_or_ci": 4, "api_or_backend": 8, "source_or_other": 4, "dependency_or_build": 4}}, "text": "Graph query export: Human feedback without linked fix evidence\nQuery id: unresolved_feedback\nQuery type: motif_query\nIntent: Negative/unresolved examples that should not be hallucinated into fixes.\nMotif: unlinked_feedback_needs_evidence\nTraining usage: negative_or_unresolved\nGraph gold label: needs_more_evidence\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#735\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: timogilvie/wavemill\nThread: timogilvie/wavemill#735\nGraph gold label: needs_more_evidence\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: timogilvie/wavemill#735\nRepo: timogilvie/wavemill\nIssue/PR number: 735\nGraph consistency label: needs_more_evidence\nNodes: 14\nEdges: 26\nNode types: {'pr_file': 5, '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, '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: {'not_resolved_or_not_observed': 3, 'api_or_backend': 2, 'thread_has_human_issue_without_fix_context': 2, 'issue_or_pull_request_thread': 1, 'mock_placeholder': 1, 'dependency_or_build': 1, 'source_or_other': 1, 'test_or_ci': 1, 'human_reported_issue_no_linked_fix': 1}\nOutcomes: {'not_resolved_or_not_observed': 6}\nQuality tiers: {'unresolved': 3}\nCI labels: {}\nCurriculum targets:\n- Teach models to preserve unresolved human feedback instead of hallucinating fixes.\n- Build issue-to-regression examples where no accepted fix exists yet.\nAssumption checks:\n- Can a commit be linked by issue number, SHA, changed path, or time window?\n- If no link exists, is this explicitly labelled unresolved?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/timogilvie/wavemill", "source_id": "graph-query-motif_query-1e30420a5b949425", "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": "timogilvie/wavemill", "source_dataset": "graph_queries/unresolved_feedback", "training_usage": "negative_or_unresolved"}}}, {"ruleId": "foundry_unresolved_feedback", "level": "warning", "message": {"text": "Foundry mined unresolved feedback: timogilvie/wavemill"}, "properties": {"repobilityId": 430284, "scanner": "foundry_dataset", "fingerprint": "e1ef669fe780124f8c674b64ce82540a8d5c692602c4dd8e3562c90806da5e09", "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": {"runtime_failure": 2, "human_feedback_general": 1, "unlinked_human_feedback": 1, "issue_or_pull_request_thread": 1, "not_resolved_or_not_observed": 4, "ambiguous_needs_more_evidence": 1, "human_reported_issue_no_linked_fix": 2, "thread_has_human_issue_without_fix_context": 2}, "source": "graph_query_export", "motif_id": "unlinked_feedback_needs_evidence", "outcomes": {"not_resolved_or_not_observed": 8, "ambiguous_needs_more_evidence": 2}, "polarity": "bad", "query_id": "unresolved_feedback", "severity": "medium", "ci_labels": {}, "synthetic": false, "edge_count": 21, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 3, "thread_has_comment": 3, "chain_has_link_quality": 5, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 3, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 3}, "node_count": 15, "node_types": {"repo": 1, "thread": 1, "comment": 3, "fix_outcome": 1, "issue_chain": 1, "link_quality": 5, "comment_chain": 3}, "query_type": "motif_query", "thread_key": "timogilvie/wavemill#58", "issue_number": "58", "quality_tiers": {"unresolved": 5}, "repo_full_name": "timogilvie/wavemill", "training_usage": "negative_or_unresolved", "source_motif_id": "graph-pattern-motif-thread-7b513e82d2560e1d", "graph_gold_label": "needs_more_evidence", "changed_file_labels": {}}, "text": "Graph query export: Human feedback without linked fix evidence\nQuery id: unresolved_feedback\nQuery type: motif_query\nIntent: Negative/unresolved examples that should not be hallucinated into fixes.\nMotif: unlinked_feedback_needs_evidence\nTraining usage: negative_or_unresolved\nGraph gold label: needs_more_evidence\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#58\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: timogilvie/wavemill\nThread: timogilvie/wavemill#58\nGraph gold label: needs_more_evidence\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: timogilvie/wavemill#58\nRepo: timogilvie/wavemill\nIssue/PR number: 58\nGraph consistency label: needs_more_evidence\nNodes: 15\nEdges: 21\nNode types: {'link_quality': 5, 'comment': 3, 'comment_chain': 3, 'thread': 1, 'repo': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'chain_has_link_quality': 5, 'thread_has_comment': 3, 'thread_has_comment_chain': 3, 'comment_has_chain': 3, 'issue_chain_has_comment_chain': 3, 'repo_has_thread': 1, 'thread_has_issue_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'not_resolved_or_not_observed': 4, 'runtime_failure': 2, 'human_reported_issue_no_linked_fix': 2, 'thread_has_human_issue_without_fix_context': 2, 'issue_or_pull_request_thread': 1, 'human_feedback_general': 1, 'unlinked_human_feedback': 1, 'ambiguous_needs_more_evidence': 1}\nOutcomes: {'not_resolved_or_not_observed': 8, 'ambiguous_needs_more_evidence': 2}\nQuality tiers: {'unresolved': 5}\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/timogilvie/wavemill", "source_id": "graph-query-motif_query-c5ce1382fc59089a", "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": "timogilvie/wavemill", "source_dataset": "graph_queries/unresolved_feedback", "training_usage": "negative_or_unresolved"}}}, {"ruleId": "foundry_unresolved_feedback", "level": "warning", "message": {"text": "Foundry mined unresolved feedback: timogilvie/wavemill"}, "properties": {"repobilityId": 430283, "scanner": "foundry_dataset", "fingerprint": "868bf54cdd6dbfb77510611497433aaead1a47789012bd07596953fa11c84a94", "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": {"human_feedback_general": 1, "unlinked_human_feedback": 1, "thread_needs_classification": 2, "issue_or_pull_request_thread": 1, "ambiguous_needs_more_evidence": 3}, "source": "graph_query_export", "motif_id": "unlinked_feedback_needs_evidence", "outcomes": {"ambiguous_needs_more_evidence": 6}, "polarity": "bad", "query_id": "unresolved_feedback", "severity": "medium", "ci_labels": {}, "synthetic": false, "edge_count": 11, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 1, "thread_has_comment": 1, "chain_has_link_quality": 3, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 1, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 1}, "node_count": 9, "node_types": {"repo": 1, "thread": 1, "comment": 1, "fix_outcome": 1, "issue_chain": 1, "link_quality": 3, "comment_chain": 1}, "query_type": "motif_query", "thread_key": "timogilvie/wavemill#54", "issue_number": "54", "quality_tiers": {"unresolved": 3}, "repo_full_name": "timogilvie/wavemill", "training_usage": "negative_or_unresolved", "source_motif_id": "graph-pattern-motif-thread-d08d1e9dd2424a0c", "graph_gold_label": "needs_more_evidence", "changed_file_labels": {}}, "text": "Graph query export: Human feedback without linked fix evidence\nQuery id: unresolved_feedback\nQuery type: motif_query\nIntent: Negative/unresolved examples that should not be hallucinated into fixes.\nMotif: unlinked_feedback_needs_evidence\nTraining usage: negative_or_unresolved\nGraph gold label: needs_more_evidence\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#54\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: timogilvie/wavemill\nThread: timogilvie/wavemill#54\nGraph gold label: needs_more_evidence\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: timogilvie/wavemill#54\nRepo: timogilvie/wavemill\nIssue/PR number: 54\nGraph consistency label: needs_more_evidence\nNodes: 9\nEdges: 11\nNode types: {'link_quality': 3, 'thread': 1, 'repo': 1, 'comment': 1, 'comment_chain': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'chain_has_link_quality': 3, 'repo_has_thread': 1, 'thread_has_comment': 1, 'thread_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: {'ambiguous_needs_more_evidence': 3, 'thread_needs_classification': 2, 'issue_or_pull_request_thread': 1, 'human_feedback_general': 1, 'unlinked_human_feedback': 1}\nOutcomes: {'ambiguous_needs_more_evidence': 6}\nQuality tiers: {'unresolved': 3}\nCI labels: {}\nCurriculum targets:\n- Teach models to preserve unresolved human feedback instead of hallucinating fixes.\n- Build issue-to-regression examples where no accepted fix exists yet.\nAssumption checks:\n- Can a commit be linked by issue number, SHA, changed path, or time window?\n- If no link exists, is this explicitly labelled unresolved?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/timogilvie/wavemill", "source_id": "graph-query-motif_query-347df7110bd9e5ac", "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": "timogilvie/wavemill", "source_dataset": "graph_queries/unresolved_feedback", "training_usage": "negative_or_unresolved"}}}, {"ruleId": "foundry_unresolved_feedback", "level": "warning", "message": {"text": "Foundry mined unresolved feedback: timogilvie/wavemill"}, "properties": {"repobilityId": 430282, "scanner": "foundry_dataset", "fingerprint": "5de004cad2caa71c19738263278e4ceea52ced47bbed22438a6da15332fbde4d", "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": {"human_feedback_general": 1, "unlinked_human_feedback": 1, "thread_needs_classification": 2, "issue_or_pull_request_thread": 1, "ambiguous_needs_more_evidence": 3}, "source": "graph_query_export", "motif_id": "unlinked_feedback_needs_evidence", "outcomes": {"ambiguous_needs_more_evidence": 6}, "polarity": "bad", "query_id": "unresolved_feedback", "severity": "medium", "ci_labels": {}, "synthetic": false, "edge_count": 11, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 1, "thread_has_comment": 1, "chain_has_link_quality": 3, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 1, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 1}, "node_count": 9, "node_types": {"repo": 1, "thread": 1, "comment": 1, "fix_outcome": 1, "issue_chain": 1, "link_quality": 3, "comment_chain": 1}, "query_type": "motif_query", "thread_key": "timogilvie/wavemill#40", "issue_number": "40", "quality_tiers": {"unresolved": 3}, "repo_full_name": "timogilvie/wavemill", "training_usage": "negative_or_unresolved", "source_motif_id": "graph-pattern-motif-thread-a12185a91d518fb4", "graph_gold_label": "needs_more_evidence", "changed_file_labels": {}}, "text": "Graph query export: Human feedback without linked fix evidence\nQuery id: unresolved_feedback\nQuery type: motif_query\nIntent: Negative/unresolved examples that should not be hallucinated into fixes.\nMotif: unlinked_feedback_needs_evidence\nTraining usage: negative_or_unresolved\nGraph gold label: needs_more_evidence\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#40\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: timogilvie/wavemill\nThread: timogilvie/wavemill#40\nGraph gold label: needs_more_evidence\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: timogilvie/wavemill#40\nRepo: timogilvie/wavemill\nIssue/PR number: 40\nGraph consistency label: needs_more_evidence\nNodes: 9\nEdges: 11\nNode types: {'link_quality': 3, 'thread': 1, 'repo': 1, 'comment': 1, 'comment_chain': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'chain_has_link_quality': 3, 'repo_has_thread': 1, 'thread_has_comment': 1, 'thread_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: {'ambiguous_needs_more_evidence': 3, 'thread_needs_classification': 2, 'issue_or_pull_request_thread': 1, 'human_feedback_general': 1, 'unlinked_human_feedback': 1}\nOutcomes: {'ambiguous_needs_more_evidence': 6}\nQuality tiers: {'unresolved': 3}\nCI labels: {}\nCurriculum targets:\n- Teach models to preserve unresolved human feedback instead of hallucinating fixes.\n- Build issue-to-regression examples where no accepted fix exists yet.\nAssumption checks:\n- Can a commit be linked by issue number, SHA, changed path, or time window?\n- If no link exists, is this explicitly labelled unresolved?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/timogilvie/wavemill", "source_id": "graph-query-motif_query-12c7d6782145d767", "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": "timogilvie/wavemill", "source_dataset": "graph_queries/unresolved_feedback", "training_usage": "negative_or_unresolved"}}}, {"ruleId": "foundry_unresolved_feedback", "level": "warning", "message": {"text": "Foundry mined unresolved feedback: timogilvie/wavemill"}, "properties": {"repobilityId": 430281, "scanner": "foundry_dataset", "fingerprint": "417656a5ec4a55e580834dc80c9e5a80b0a9ee5bbe07762289267fac8d9035ad", "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": {"human_feedback_general": 1, "unlinked_human_feedback": 1, "thread_needs_classification": 2, "issue_or_pull_request_thread": 1, "ambiguous_needs_more_evidence": 3}, "source": "graph_query_export", "motif_id": "unlinked_feedback_needs_evidence", "outcomes": {"ambiguous_needs_more_evidence": 6}, "polarity": "bad", "query_id": "unresolved_feedback", "severity": "medium", "ci_labels": {}, "synthetic": false, "edge_count": 11, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 1, "thread_has_comment": 1, "chain_has_link_quality": 3, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 1, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 1}, "node_count": 9, "node_types": {"repo": 1, "thread": 1, "comment": 1, "fix_outcome": 1, "issue_chain": 1, "link_quality": 3, "comment_chain": 1}, "query_type": "motif_query", "thread_key": "timogilvie/wavemill#32", "issue_number": "32", "quality_tiers": {"unresolved": 3}, "repo_full_name": "timogilvie/wavemill", "training_usage": "negative_or_unresolved", "source_motif_id": "graph-pattern-motif-thread-f554635ad152dd04", "graph_gold_label": "needs_more_evidence", "changed_file_labels": {}}, "text": "Graph query export: Human feedback without linked fix evidence\nQuery id: unresolved_feedback\nQuery type: motif_query\nIntent: Negative/unresolved examples that should not be hallucinated into fixes.\nMotif: unlinked_feedback_needs_evidence\nTraining usage: negative_or_unresolved\nGraph gold label: needs_more_evidence\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#32\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: timogilvie/wavemill\nThread: timogilvie/wavemill#32\nGraph gold label: needs_more_evidence\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: timogilvie/wavemill#32\nRepo: timogilvie/wavemill\nIssue/PR number: 32\nGraph consistency label: needs_more_evidence\nNodes: 9\nEdges: 11\nNode types: {'link_quality': 3, 'thread': 1, 'repo': 1, 'comment': 1, 'comment_chain': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'chain_has_link_quality': 3, 'repo_has_thread': 1, 'thread_has_comment': 1, 'thread_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: {'ambiguous_needs_more_evidence': 3, 'thread_needs_classification': 2, 'issue_or_pull_request_thread': 1, 'human_feedback_general': 1, 'unlinked_human_feedback': 1}\nOutcomes: {'ambiguous_needs_more_evidence': 6}\nQuality tiers: {'unresolved': 3}\nCI labels: {}\nCurriculum targets:\n- Teach models to preserve unresolved human feedback instead of hallucinating fixes.\n- Build issue-to-regression examples where no accepted fix exists yet.\nAssumption checks:\n- Can a commit be linked by issue number, SHA, changed path, or time window?\n- If no link exists, is this explicitly labelled unresolved?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/timogilvie/wavemill", "source_id": "graph-query-motif_query-3290bbd732fa08d6", "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": "timogilvie/wavemill", "source_dataset": "graph_queries/unresolved_feedback", "training_usage": "negative_or_unresolved"}}}, {"ruleId": "foundry_unresolved_feedback", "level": "warning", "message": {"text": "Foundry mined unresolved feedback: timogilvie/wavemill"}, "properties": {"repobilityId": 430280, "scanner": "foundry_dataset", "fingerprint": "3d5e350747292c10ac8e00a7ac09778a71c0585caf3ef44dcca67c20e67a1271", "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": {"human_feedback_general": 1, "unlinked_human_feedback": 1, "thread_needs_classification": 2, "issue_or_pull_request_thread": 1, "ambiguous_needs_more_evidence": 3}, "source": "graph_query_export", "motif_id": "unlinked_feedback_needs_evidence", "outcomes": {"ambiguous_needs_more_evidence": 6}, "polarity": "bad", "query_id": "unresolved_feedback", "severity": "medium", "ci_labels": {}, "synthetic": false, "edge_count": 11, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 1, "thread_has_comment": 1, "chain_has_link_quality": 3, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 1, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 1}, "node_count": 9, "node_types": {"repo": 1, "thread": 1, "comment": 1, "fix_outcome": 1, "issue_chain": 1, "link_quality": 3, "comment_chain": 1}, "query_type": "motif_query", "thread_key": "timogilvie/wavemill#31", "issue_number": "31", "quality_tiers": {"unresolved": 3}, "repo_full_name": "timogilvie/wavemill", "training_usage": "negative_or_unresolved", "source_motif_id": "graph-pattern-motif-thread-22e0a6625c56bc9e", "graph_gold_label": "needs_more_evidence", "changed_file_labels": {}}, "text": "Graph query export: Human feedback without linked fix evidence\nQuery id: unresolved_feedback\nQuery type: motif_query\nIntent: Negative/unresolved examples that should not be hallucinated into fixes.\nMotif: unlinked_feedback_needs_evidence\nTraining usage: negative_or_unresolved\nGraph gold label: needs_more_evidence\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#31\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: timogilvie/wavemill\nThread: timogilvie/wavemill#31\nGraph gold label: needs_more_evidence\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: timogilvie/wavemill#31\nRepo: timogilvie/wavemill\nIssue/PR number: 31\nGraph consistency label: needs_more_evidence\nNodes: 9\nEdges: 11\nNode types: {'link_quality': 3, 'thread': 1, 'repo': 1, 'comment': 1, 'comment_chain': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'chain_has_link_quality': 3, 'repo_has_thread': 1, 'thread_has_comment': 1, 'thread_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: {'ambiguous_needs_more_evidence': 3, 'thread_needs_classification': 2, 'issue_or_pull_request_thread': 1, 'human_feedback_general': 1, 'unlinked_human_feedback': 1}\nOutcomes: {'ambiguous_needs_more_evidence': 6}\nQuality tiers: {'unresolved': 3}\nCI labels: {}\nCurriculum targets:\n- Teach models to preserve unresolved human feedback instead of hallucinating fixes.\n- Build issue-to-regression examples where no accepted fix exists yet.\nAssumption checks:\n- Can a commit be linked by issue number, SHA, changed path, or time window?\n- If no link exists, is this explicitly labelled unresolved?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/timogilvie/wavemill", "source_id": "graph-query-motif_query-17d1dc82f88e6492", "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": "timogilvie/wavemill", "source_dataset": "graph_queries/unresolved_feedback", "training_usage": "negative_or_unresolved"}}}, {"ruleId": "foundry_unresolved_feedback", "level": "warning", "message": {"text": "Foundry mined unresolved feedback: timogilvie/wavemill"}, "properties": {"repobilityId": 430279, "scanner": "foundry_dataset", "fingerprint": "1b717ba10f4395621d0934082121c1fe1bccf6964a7173bc957240f64fe95ca7", "category": "practices", "severity": "medium", "confidence": 0.7, "triageState": "open", "verdict": "needs_review", "isResolved": false, "reason": "Imported from mined Foundry/Fable5 evidence with real GitHub/source provenance. Review source_id before acting.", "evidence": {"meta": {"kind": "graph_query_record", "title": "Human feedback without linked fix evidence", "intent": "Negative/unresolved examples that should not be hallucinated into fixes.", "labels": {"test_ci_gap": 1, "weak blueprint fit": 2, "partial blueprint fit": 1, "verification_or_tests": 4, "human_feedback_general": 1, "unlinked_human_feedback": 1, "issue_or_pull_request_thread": 1, "ambiguous_needs_more_evidence": 4, "blueprint_human_gap_alignment": 3, "comment_has_related_commit_context": 1, "thread_has_human_issue_and_fix_context": 2}, "source": "graph_query_export", "motif_id": "unlinked_feedback_needs_evidence", "outcomes": {"ambiguous_needs_more_evidence": 8}, "polarity": "bad", "query_id": "unresolved_feedback", "severity": "medium", "ci_labels": {}, "synthetic": false, "edge_count": 32, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 2, "thread_has_comment": 2, "alignment_uses_comment": 3, "alignment_uses_finding": 3, "chain_has_link_quality": 7, "comment_aligns_finding": 3, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 2, "comment_chain_links_commit": 4, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 2}, "node_count": 25, "node_types": {"repo": 1, "commit": 4, "thread": 1, "comment": 2, "alignment": 3, "fix_outcome": 1, "issue_chain": 1, "link_quality": 7, "comment_chain": 2, "blueprint_finding": 3}, "query_type": "motif_query", "thread_key": "timogilvie/wavemill#250", "issue_number": "250", "quality_tiers": {"unresolved": 1, "assumption_check": 3, "weak_supervision": 3}, "repo_full_name": "timogilvie/wavemill", "training_usage": "negative_or_unresolved", "source_motif_id": "graph-pattern-motif-thread-b57ac70e5225239d", "graph_gold_label": "weak_supervision_needs_review", "changed_file_labels": {}}, "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: timogilvie/wavemill\nThread: timogilvie/wavemill#250\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: timogilvie/wavemill\nThread: timogilvie/wavemill#250\nGraph gold label: weak_supervision_needs_review\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: timogilvie/wavemill#250\nRepo: timogilvie/wavemill\nIssue/PR number: 250\nGraph consistency label: weak_supervision_needs_review\nNodes: 25\nEdges: 32\nNode types: {'link_quality': 7, 'commit': 4, 'alignment': 3, 'blueprint_finding': 3, 'comment': 2, 'comment_chain': 2, 'thread': 1, 'repo': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'chain_has_link_quality': 7, 'comment_chain_links_commit': 4, 'alignment_uses_comment': 3, 'alignment_uses_finding': 3, 'comment_aligns_finding': 3, 'thread_has_comment': 2, 'thread_has_comment_chain': 2, 'comment_has_chain': 2, 'issue_chain_has_comment_chain': 2, 'repo_has_thread': 1, 'thread_has_issue_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'verification_or_tests': 4, 'ambiguous_needs_more_evidence': 4, 'blueprint_human_gap_alignment': 3, 'thread_has_human_issue_and_fix_context': 2, 'weak blueprint fit': 2, 'issue_or_pull_request_thread': 1, 'test_ci_gap': 1, 'human_feedback_general': 1, 'comment_has_related_commit_context': 1, 'unlinked_human_feedback': 1, 'partial blueprint fit': 1}\nOutcomes: {'ambiguous_needs_more_evidence': 8}\nQuality tiers: {'weak_supervision': 3, 'assumption_check': 3, '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/timogilvie/wavemill", "source_id": "graph-query-motif_query-e9a8753adc554c08", "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": "timogilvie/wavemill", "source_dataset": "graph_queries/unresolved_feedback", "training_usage": "negative_or_unresolved"}}}, {"ruleId": "foundry_unresolved_feedback", "level": "warning", "message": {"text": "Foundry mined unresolved feedback: timogilvie/wavemill"}, "properties": {"repobilityId": 430278, "scanner": "foundry_dataset", "fingerprint": "0713d1aa4826e07684b99a895512b62ee9e8a55bf33d3a7642232a6012ab0b30", "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": {"agent_instruction_gap": 1, "human_feedback_general": 1, "unlinked_human_feedback": 1, "issue_or_pull_request_thread": 1, "not_resolved_or_not_observed": 3, "ambiguous_needs_more_evidence": 1, "human_reported_issue_no_linked_fix": 1, "thread_has_human_issue_without_fix_context": 2}, "source": "graph_query_export", "motif_id": "unlinked_feedback_needs_evidence", "outcomes": {"not_resolved_or_not_observed": 6, "ambiguous_needs_more_evidence": 2}, "polarity": "bad", "query_id": "unresolved_feedback", "severity": "medium", "ci_labels": {}, "synthetic": false, "edge_count": 16, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 2, "thread_has_comment": 2, "chain_has_link_quality": 4, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 2, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 2}, "node_count": 12, "node_types": {"repo": 1, "thread": 1, "comment": 2, "fix_outcome": 1, "issue_chain": 1, "link_quality": 4, "comment_chain": 2}, "query_type": "motif_query", "thread_key": "timogilvie/wavemill#249", "issue_number": "249", "quality_tiers": {"unresolved": 4}, "repo_full_name": "timogilvie/wavemill", "training_usage": "negative_or_unresolved", "source_motif_id": "graph-pattern-motif-thread-2465461f43f5ff99", "graph_gold_label": "needs_more_evidence", "changed_file_labels": {}}, "text": "Graph query export: Human feedback without linked fix evidence\nQuery id: unresolved_feedback\nQuery type: motif_query\nIntent: Negative/unresolved examples that should not be hallucinated into fixes.\nMotif: unlinked_feedback_needs_evidence\nTraining usage: negative_or_unresolved\nGraph gold label: needs_more_evidence\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#249\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: timogilvie/wavemill\nThread: timogilvie/wavemill#249\nGraph gold label: needs_more_evidence\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: timogilvie/wavemill#249\nRepo: timogilvie/wavemill\nIssue/PR number: 249\nGraph consistency label: needs_more_evidence\nNodes: 12\nEdges: 16\nNode types: {'link_quality': 4, 'comment': 2, 'comment_chain': 2, 'thread': 1, 'repo': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'chain_has_link_quality': 4, 'thread_has_comment': 2, 'thread_has_comment_chain': 2, 'comment_has_chain': 2, 'issue_chain_has_comment_chain': 2, 'repo_has_thread': 1, 'thread_has_issue_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'not_resolved_or_not_observed': 3, 'thread_has_human_issue_without_fix_context': 2, 'issue_or_pull_request_thread': 1, 'agent_instruction_gap': 1, 'human_feedback_general': 1, 'human_reported_issue_no_linked_fix': 1, 'unlinked_human_feedback': 1, 'ambiguous_needs_more_evidence': 1}\nOutcomes: {'not_resolved_or_not_observed': 6, 'ambiguous_needs_more_evidence': 2}\nQuality tiers: {'unresolved': 4}\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/timogilvie/wavemill", "source_id": "graph-query-motif_query-2097f51b7eccb0a8", "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": "timogilvie/wavemill", "source_dataset": "graph_queries/unresolved_feedback", "training_usage": "negative_or_unresolved"}}}, {"ruleId": "foundry_unresolved_feedback", "level": "warning", "message": {"text": "Foundry mined unresolved feedback: timogilvie/wavemill"}, "properties": {"repobilityId": 430277, "scanner": "foundry_dataset", "fingerprint": "b27ec803b40a3eb36864f2e0c422febbd01348c33ecc6e9576403e8de6998c7d", "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": {"agent_instruction_gap": 1, "issue_or_pull_request_thread": 1, "not_resolved_or_not_observed": 3, "human_reported_issue_no_linked_fix": 1, "thread_has_human_issue_without_fix_context": 2}, "source": "graph_query_export", "motif_id": "unlinked_feedback_needs_evidence", "outcomes": {"not_resolved_or_not_observed": 6}, "polarity": "bad", "query_id": "unresolved_feedback", "severity": "medium", "ci_labels": {}, "synthetic": false, "edge_count": 11, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 1, "thread_has_comment": 1, "chain_has_link_quality": 3, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 1, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 1}, "node_count": 9, "node_types": {"repo": 1, "thread": 1, "comment": 1, "fix_outcome": 1, "issue_chain": 1, "link_quality": 3, "comment_chain": 1}, "query_type": "motif_query", "thread_key": "timogilvie/wavemill#248", "issue_number": "248", "quality_tiers": {"unresolved": 3}, "repo_full_name": "timogilvie/wavemill", "training_usage": "negative_or_unresolved", "source_motif_id": "graph-pattern-motif-thread-0d1809943a7fc43d", "graph_gold_label": "needs_more_evidence", "changed_file_labels": {}}, "text": "Graph query export: Human feedback without linked fix evidence\nQuery id: unresolved_feedback\nQuery type: motif_query\nIntent: Negative/unresolved examples that should not be hallucinated into fixes.\nMotif: unlinked_feedback_needs_evidence\nTraining usage: negative_or_unresolved\nGraph gold label: needs_more_evidence\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#248\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: timogilvie/wavemill\nThread: timogilvie/wavemill#248\nGraph gold label: needs_more_evidence\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: timogilvie/wavemill#248\nRepo: timogilvie/wavemill\nIssue/PR number: 248\nGraph consistency label: needs_more_evidence\nNodes: 9\nEdges: 11\nNode types: {'link_quality': 3, 'thread': 1, 'repo': 1, 'comment': 1, 'comment_chain': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'chain_has_link_quality': 3, 'repo_has_thread': 1, 'thread_has_comment': 1, 'thread_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: {'not_resolved_or_not_observed': 3, 'thread_has_human_issue_without_fix_context': 2, 'issue_or_pull_request_thread': 1, 'agent_instruction_gap': 1, 'human_reported_issue_no_linked_fix': 1}\nOutcomes: {'not_resolved_or_not_observed': 6}\nQuality tiers: {'unresolved': 3}\nCI labels: {}\nCurriculum targets:\n- Teach models to preserve unresolved human feedback instead of hallucinating fixes.\n- Build issue-to-regression examples where no accepted fix exists yet.\nAssumption checks:\n- Can a commit be linked by issue number, SHA, changed path, or time window?\n- If no link exists, is this explicitly labelled unresolved?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/timogilvie/wavemill", "source_id": "graph-query-motif_query-4628151ccbf06fc2", "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": "timogilvie/wavemill", "source_dataset": "graph_queries/unresolved_feedback", "training_usage": "negative_or_unresolved"}}}, {"ruleId": "foundry_unresolved_feedback", "level": "warning", "message": {"text": "Foundry mined unresolved feedback: timogilvie/wavemill"}, "properties": {"repobilityId": 430276, "scanner": "foundry_dataset", "fingerprint": "87dca23d6e6748b3271298c4aee55095b30e45f097f66c2f6b356c6d85c2c744", "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": 1, "test_ci_gap": 1, "weak blueprint fit": 2, "agent_instruction_gap": 1, "partial blueprint fit": 1, "verification_or_tests": 4, "issue_or_pull_request_thread": 1, "not_resolved_or_not_observed": 1, "blueprint_human_gap_alignment": 3, "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": 33, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 2, "thread_has_comment": 2, "alignment_uses_comment": 3, "alignment_uses_finding": 3, "chain_has_link_quality": 7, "comment_aligns_finding": 3, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 2, "comment_chain_links_commit": 5, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 2}, "node_count": 26, "node_types": {"repo": 1, "commit": 5, "thread": 1, "comment": 2, "alignment": 3, "fix_outcome": 1, "issue_chain": 1, "link_quality": 7, "comment_chain": 2, "blueprint_finding": 3}, "query_type": "motif_query", "thread_key": "timogilvie/wavemill#247", "issue_number": "247", "quality_tiers": {"unresolved": 1, "assumption_check": 3, "weak_supervision": 3}, "repo_full_name": "timogilvie/wavemill", "training_usage": "negative_or_unresolved", "source_motif_id": "graph-pattern-motif-thread-6893268696a9c281", "graph_gold_label": "supported_by_verification_signal", "changed_file_labels": {}}, "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: timogilvie/wavemill\nThread: timogilvie/wavemill#247\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: timogilvie/wavemill\nThread: timogilvie/wavemill#247\nGraph gold label: supported_by_verification_signal\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: timogilvie/wavemill#247\nRepo: timogilvie/wavemill\nIssue/PR number: 247\nGraph consistency label: supported_by_verification_signal\nNodes: 26\nEdges: 33\nNode types: {'link_quality': 7, 'commit': 5, 'alignment': 3, 'blueprint_finding': 3, 'comment': 2, 'comment_chain': 2, 'thread': 1, 'repo': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'chain_has_link_quality': 7, 'comment_chain_links_commit': 5, 'alignment_uses_comment': 3, 'alignment_uses_finding': 3, 'comment_aligns_finding': 3, 'thread_has_comment': 2, 'thread_has_comment_chain': 2, 'comment_has_chain': 2, 'issue_chain_has_comment_chain': 2, 'repo_has_thread': 1, 'thread_has_issue_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'verification_or_tests': 4, 'claimed_resolved_with_verification_signal': 3, 'blueprint_human_gap_alignment': 3, 'thread_has_human_issue_and_fix_context': 2, 'weak blueprint fit': 2, 'issue_or_pull_request_thread': 1, 'test_ci_gap': 1, 'agent_instruction_gap': 1, 'human_reported_issue_then_verified_fix_attempt': 1, 'bug_fix': 1, 'human_reported_issue_no_linked_fix': 1, 'not_resolved_or_not_observed': 1, 'partial blueprint fit': 1}\nOutcomes: {'claimed_resolved_with_verification_signal': 6, 'not_resolved_or_not_observed': 2}\nQuality tiers: {'weak_supervision': 3, 'assumption_check': 3, '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/timogilvie/wavemill", "source_id": "graph-query-motif_query-3ecdc2ef7f159af1", "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": "timogilvie/wavemill", "source_dataset": "graph_queries/unresolved_feedback", "training_usage": "negative_or_unresolved"}}}, {"ruleId": "foundry_unresolved_feedback", "level": "warning", "message": {"text": "Foundry mined unresolved feedback: timogilvie/wavemill"}, "properties": {"repobilityId": 430275, "scanner": "foundry_dataset", "fingerprint": "9ae5caf5c5f5bdf466ccb6f1de9bb39f033f5cf23e1bc73b6fd66ace33ecc8dd", "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": 1, "agent_instruction_gap": 1, "verification_or_tests": 4, "human_feedback_general": 2, "unlinked_human_feedback": 1, "issue_or_pull_request_thread": 1, "not_resolved_or_not_observed": 1, "ambiguous_needs_more_evidence": 4, "comment_has_related_commit_context": 1, "human_reported_issue_no_linked_fix": 1, "thread_has_human_issue_and_fix_context": 2}, "source": "graph_query_export", "motif_id": "unlinked_feedback_needs_evidence", "outcomes": {"not_resolved_or_not_observed": 2, "ambiguous_needs_more_evidence": 8}, "polarity": "bad", "query_id": "unresolved_feedback", "severity": "medium", "ci_labels": {}, "synthetic": false, "edge_count": 26, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 3, "thread_has_comment": 3, "chain_has_link_quality": 5, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 3, "comment_chain_links_commit": 5, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 3}, "node_count": 20, "node_types": {"repo": 1, "commit": 5, "thread": 1, "comment": 3, "fix_outcome": 1, "issue_chain": 1, "link_quality": 5, "comment_chain": 3}, "query_type": "motif_query", "thread_key": "timogilvie/wavemill#246", "issue_number": "246", "quality_tiers": {"unresolved": 2, "weak_supervision": 3}, "repo_full_name": "timogilvie/wavemill", "training_usage": "negative_or_unresolved", "source_motif_id": "graph-pattern-motif-thread-0edfb9c68fd75802", "graph_gold_label": "weak_supervision_needs_review", "changed_file_labels": {}}, "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: timogilvie/wavemill\nThread: timogilvie/wavemill#246\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: timogilvie/wavemill\nThread: timogilvie/wavemill#246\nGraph gold label: weak_supervision_needs_review\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: timogilvie/wavemill#246\nRepo: timogilvie/wavemill\nIssue/PR number: 246\nGraph consistency label: weak_supervision_needs_review\nNodes: 20\nEdges: 26\nNode types: {'commit': 5, 'link_quality': 5, 'comment': 3, 'comment_chain': 3, 'thread': 1, 'repo': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'comment_chain_links_commit': 5, 'chain_has_link_quality': 5, 'thread_has_comment': 3, 'thread_has_comment_chain': 3, 'comment_has_chain': 3, 'issue_chain_has_comment_chain': 3, 'repo_has_thread': 1, 'thread_has_issue_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'verification_or_tests': 4, 'ambiguous_needs_more_evidence': 4, 'human_feedback_general': 2, 'thread_has_human_issue_and_fix_context': 2, 'issue_or_pull_request_thread': 1, 'agent_instruction_gap': 1, 'comment_has_related_commit_context': 1, 'bug_fix': 1, 'human_reported_issue_no_linked_fix': 1, 'not_resolved_or_not_observed': 1, 'unlinked_human_feedback': 1}\nOutcomes: {'ambiguous_needs_more_evidence': 8, 'not_resolved_or_not_observed': 2}\nQuality tiers: {'weak_supervision': 3, 'unresolved': 2}\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/timogilvie/wavemill", "source_id": "graph-query-motif_query-55f5401d164b6038", "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": "timogilvie/wavemill", "source_dataset": "graph_queries/unresolved_feedback", "training_usage": "negative_or_unresolved"}}}, {"ruleId": "foundry_unresolved_feedback", "level": "warning", "message": {"text": "Foundry mined unresolved feedback: timogilvie/wavemill"}, "properties": {"repobilityId": 430274, "scanner": "foundry_dataset", "fingerprint": "2ee3262bf2687072193079e8814ee4d92a4bdb19dcee019076232847044b0bcf", "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": {"agent_instruction_gap": 1, "issue_or_pull_request_thread": 1, "not_resolved_or_not_observed": 3, "human_reported_issue_no_linked_fix": 1, "thread_has_human_issue_without_fix_context": 2}, "source": "graph_query_export", "motif_id": "unlinked_feedback_needs_evidence", "outcomes": {"not_resolved_or_not_observed": 6}, "polarity": "bad", "query_id": "unresolved_feedback", "severity": "medium", "ci_labels": {}, "synthetic": false, "edge_count": 11, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 1, "thread_has_comment": 1, "chain_has_link_quality": 3, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 1, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 1}, "node_count": 9, "node_types": {"repo": 1, "thread": 1, "comment": 1, "fix_outcome": 1, "issue_chain": 1, "link_quality": 3, "comment_chain": 1}, "query_type": "motif_query", "thread_key": "timogilvie/wavemill#239", "issue_number": "239", "quality_tiers": {"unresolved": 3}, "repo_full_name": "timogilvie/wavemill", "training_usage": "negative_or_unresolved", "source_motif_id": "graph-pattern-motif-thread-fd6bbc5e1e346fab", "graph_gold_label": "needs_more_evidence", "changed_file_labels": {}}, "text": "Graph query export: Human feedback without linked fix evidence\nQuery id: unresolved_feedback\nQuery type: motif_query\nIntent: Negative/unresolved examples that should not be hallucinated into fixes.\nMotif: unlinked_feedback_needs_evidence\nTraining usage: negative_or_unresolved\nGraph gold label: needs_more_evidence\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#239\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: timogilvie/wavemill\nThread: timogilvie/wavemill#239\nGraph gold label: needs_more_evidence\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: timogilvie/wavemill#239\nRepo: timogilvie/wavemill\nIssue/PR number: 239\nGraph consistency label: needs_more_evidence\nNodes: 9\nEdges: 11\nNode types: {'link_quality': 3, 'thread': 1, 'repo': 1, 'comment': 1, 'comment_chain': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'chain_has_link_quality': 3, 'repo_has_thread': 1, 'thread_has_comment': 1, 'thread_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: {'not_resolved_or_not_observed': 3, 'thread_has_human_issue_without_fix_context': 2, 'issue_or_pull_request_thread': 1, 'agent_instruction_gap': 1, 'human_reported_issue_no_linked_fix': 1}\nOutcomes: {'not_resolved_or_not_observed': 6}\nQuality tiers: {'unresolved': 3}\nCI labels: {}\nCurriculum targets:\n- Teach models to preserve unresolved human feedback instead of hallucinating fixes.\n- Build issue-to-regression examples where no accepted fix exists yet.\nAssumption checks:\n- Can a commit be linked by issue number, SHA, changed path, or time window?\n- If no link exists, is this explicitly labelled unresolved?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/timogilvie/wavemill", "source_id": "graph-query-motif_query-be83a3b9ff65401a", "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": "timogilvie/wavemill", "source_dataset": "graph_queries/unresolved_feedback", "training_usage": "negative_or_unresolved"}}}, {"ruleId": "foundry_unresolved_feedback", "level": "warning", "message": {"text": "Foundry mined unresolved feedback: timogilvie/wavemill"}, "properties": {"repobilityId": 430273, "scanner": "foundry_dataset", "fingerprint": "1ba0c9c9b1170f3dc422ef65f7c0091a675bc62b9fda188f5b53ce2bf93a8155", "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": {"agent_instruction_gap": 1, "human_feedback_general": 1, "unlinked_human_feedback": 1, "issue_or_pull_request_thread": 1, "not_resolved_or_not_observed": 3, "ambiguous_needs_more_evidence": 1, "human_reported_issue_no_linked_fix": 1, "thread_has_human_issue_without_fix_context": 2}, "source": "graph_query_export", "motif_id": "unlinked_feedback_needs_evidence", "outcomes": {"not_resolved_or_not_observed": 6, "ambiguous_needs_more_evidence": 2}, "polarity": "bad", "query_id": "unresolved_feedback", "severity": "medium", "ci_labels": {}, "synthetic": false, "edge_count": 16, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 2, "thread_has_comment": 2, "chain_has_link_quality": 4, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 2, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 2}, "node_count": 12, "node_types": {"repo": 1, "thread": 1, "comment": 2, "fix_outcome": 1, "issue_chain": 1, "link_quality": 4, "comment_chain": 2}, "query_type": "motif_query", "thread_key": "timogilvie/wavemill#238", "issue_number": "238", "quality_tiers": {"unresolved": 4}, "repo_full_name": "timogilvie/wavemill", "training_usage": "negative_or_unresolved", "source_motif_id": "graph-pattern-motif-thread-7b88ae0b5993da1f", "graph_gold_label": "needs_more_evidence", "changed_file_labels": {}}, "text": "Graph query export: Human feedback without linked fix evidence\nQuery id: unresolved_feedback\nQuery type: motif_query\nIntent: Negative/unresolved examples that should not be hallucinated into fixes.\nMotif: unlinked_feedback_needs_evidence\nTraining usage: negative_or_unresolved\nGraph gold label: needs_more_evidence\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#238\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: timogilvie/wavemill\nThread: timogilvie/wavemill#238\nGraph gold label: needs_more_evidence\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: timogilvie/wavemill#238\nRepo: timogilvie/wavemill\nIssue/PR number: 238\nGraph consistency label: needs_more_evidence\nNodes: 12\nEdges: 16\nNode types: {'link_quality': 4, 'comment': 2, 'comment_chain': 2, 'thread': 1, 'repo': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'chain_has_link_quality': 4, 'thread_has_comment': 2, 'thread_has_comment_chain': 2, 'comment_has_chain': 2, 'issue_chain_has_comment_chain': 2, 'repo_has_thread': 1, 'thread_has_issue_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'not_resolved_or_not_observed': 3, 'thread_has_human_issue_without_fix_context': 2, 'issue_or_pull_request_thread': 1, 'agent_instruction_gap': 1, 'human_feedback_general': 1, 'human_reported_issue_no_linked_fix': 1, 'unlinked_human_feedback': 1, 'ambiguous_needs_more_evidence': 1}\nOutcomes: {'not_resolved_or_not_observed': 6, 'ambiguous_needs_more_evidence': 2}\nQuality tiers: {'unresolved': 4}\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/timogilvie/wavemill", "source_id": "graph-query-motif_query-001ad0c66a0b6bce", "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": "timogilvie/wavemill", "source_dataset": "graph_queries/unresolved_feedback", "training_usage": "negative_or_unresolved"}}}, {"ruleId": "foundry_unresolved_feedback", "level": "warning", "message": {"text": "Foundry mined unresolved feedback: timogilvie/wavemill"}, "properties": {"repobilityId": 430272, "scanner": "foundry_dataset", "fingerprint": "a8941e6db2087deb7b841488cd4788ba1f1d049e345ac4c9c4f3c16e3ad9e856", "category": "practices", "severity": "medium", "confidence": 0.7, "triageState": "open", "verdict": "needs_review", "isResolved": false, "reason": "Imported from mined Foundry/Fable5 evidence with real GitHub/source provenance. Review source_id before acting.", "evidence": {"meta": {"kind": "graph_query_record", "title": "Human feedback without linked fix evidence", "intent": "Negative/unresolved examples that should not be hallucinated into fixes.", "labels": {"test_ci_gap": 1, "weak blueprint fit": 2, "agent_instruction_gap": 1, "partial blueprint fit": 1, "verification_or_tests": 5, "human_feedback_general": 1, "unlinked_human_feedback": 1, "issue_or_pull_request_thread": 1, "not_resolved_or_not_observed": 1, "ambiguous_needs_more_evidence": 4, "blueprint_human_gap_alignment": 3, "comment_has_related_commit_context": 1, "human_reported_issue_no_linked_fix": 1, "thread_has_human_issue_and_fix_context": 2}, "source": "graph_query_export", "motif_id": "unlinked_feedback_needs_evidence", "outcomes": {"not_resolved_or_not_observed": 2, "ambiguous_needs_more_evidence": 8}, "polarity": "bad", "query_id": "unresolved_feedback", "severity": "medium", "ci_labels": {}, "synthetic": false, "edge_count": 38, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 3, "thread_has_comment": 3, "alignment_uses_comment": 3, "alignment_uses_finding": 3, "chain_has_link_quality": 8, "comment_aligns_finding": 3, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 3, "comment_chain_links_commit": 5, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 3}, "node_count": 29, "node_types": {"repo": 1, "commit": 5, "thread": 1, "comment": 3, "alignment": 3, "fix_outcome": 1, "issue_chain": 1, "link_quality": 8, "comment_chain": 3, "blueprint_finding": 3}, "query_type": "motif_query", "thread_key": "timogilvie/wavemill#236", "issue_number": "236", "quality_tiers": {"unresolved": 2, "assumption_check": 3, "weak_supervision": 3}, "repo_full_name": "timogilvie/wavemill", "training_usage": "negative_or_unresolved", "source_motif_id": "graph-pattern-motif-thread-6b6da336de6b5294", "graph_gold_label": "weak_supervision_needs_review", "changed_file_labels": {}}, "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: timogilvie/wavemill\nThread: timogilvie/wavemill#236\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: timogilvie/wavemill\nThread: timogilvie/wavemill#236\nGraph gold label: weak_supervision_needs_review\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: timogilvie/wavemill#236\nRepo: timogilvie/wavemill\nIssue/PR number: 236\nGraph consistency label: weak_supervision_needs_review\nNodes: 29\nEdges: 38\nNode types: {'link_quality': 8, 'commit': 5, 'comment': 3, 'comment_chain': 3, 'alignment': 3, 'blueprint_finding': 3, 'thread': 1, 'repo': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'chain_has_link_quality': 8, 'comment_chain_links_commit': 5, 'thread_has_comment': 3, 'thread_has_comment_chain': 3, 'comment_has_chain': 3, 'issue_chain_has_comment_chain': 3, 'alignment_uses_comment': 3, 'alignment_uses_finding': 3, 'comment_aligns_finding': 3, 'repo_has_thread': 1, 'thread_has_issue_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'verification_or_tests': 5, 'ambiguous_needs_more_evidence': 4, 'blueprint_human_gap_alignment': 3, 'thread_has_human_issue_and_fix_context': 2, 'weak blueprint fit': 2, 'issue_or_pull_request_thread': 1, 'test_ci_gap': 1, 'agent_instruction_gap': 1, 'human_feedback_general': 1, 'comment_has_related_commit_context': 1, 'human_reported_issue_no_linked_fix': 1, 'not_resolved_or_not_observed': 1, 'unlinked_human_feedback': 1, 'partial blueprint fit': 1}\nOutcomes: {'ambiguous_needs_more_evidence': 8, 'not_resolved_or_not_observed': 2}\nQuality tiers: {'weak_supervision': 3, 'assumption_check': 3, 'unresolved': 2}\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/timogilvie/wavemill", "source_id": "graph-query-motif_query-632f96938ba0634e", "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": "timogilvie/wavemill", "source_dataset": "graph_queries/unresolved_feedback", "training_usage": "negative_or_unresolved"}}}, {"ruleId": "foundry_unresolved_feedback", "level": "warning", "message": {"text": "Foundry mined unresolved feedback: timogilvie/wavemill"}, "properties": {"repobilityId": 430271, "scanner": "foundry_dataset", "fingerprint": "b46a49842b675a4ba88fa477f146f4b9b05b0c8c813270e32f20012b6722b6b1", "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": 1, "test_ci_gap": 1, "weak blueprint fit": 2, "agent_instruction_gap": 1, "partial blueprint fit": 1, "verification_or_tests": 4, "issue_or_pull_request_thread": 1, "not_resolved_or_not_observed": 1, "blueprint_human_gap_alignment": 3, "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": 33, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 2, "thread_has_comment": 2, "alignment_uses_comment": 3, "alignment_uses_finding": 3, "chain_has_link_quality": 7, "comment_aligns_finding": 3, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 2, "comment_chain_links_commit": 5, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 2}, "node_count": 26, "node_types": {"repo": 1, "commit": 5, "thread": 1, "comment": 2, "alignment": 3, "fix_outcome": 1, "issue_chain": 1, "link_quality": 7, "comment_chain": 2, "blueprint_finding": 3}, "query_type": "motif_query", "thread_key": "timogilvie/wavemill#234", "issue_number": "234", "quality_tiers": {"unresolved": 1, "assumption_check": 3, "weak_supervision": 3}, "repo_full_name": "timogilvie/wavemill", "training_usage": "negative_or_unresolved", "source_motif_id": "graph-pattern-motif-thread-486c8c3f07eccc06", "graph_gold_label": "supported_by_verification_signal", "changed_file_labels": {}}, "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: timogilvie/wavemill\nThread: timogilvie/wavemill#234\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: timogilvie/wavemill\nThread: timogilvie/wavemill#234\nGraph gold label: supported_by_verification_signal\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: timogilvie/wavemill#234\nRepo: timogilvie/wavemill\nIssue/PR number: 234\nGraph consistency label: supported_by_verification_signal\nNodes: 26\nEdges: 33\nNode types: {'link_quality': 7, 'commit': 5, 'alignment': 3, 'blueprint_finding': 3, 'comment': 2, 'comment_chain': 2, 'thread': 1, 'repo': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'chain_has_link_quality': 7, 'comment_chain_links_commit': 5, 'alignment_uses_comment': 3, 'alignment_uses_finding': 3, 'comment_aligns_finding': 3, 'thread_has_comment': 2, 'thread_has_comment_chain': 2, 'comment_has_chain': 2, 'issue_chain_has_comment_chain': 2, 'repo_has_thread': 1, 'thread_has_issue_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'verification_or_tests': 4, 'claimed_resolved_with_verification_signal': 3, 'blueprint_human_gap_alignment': 3, 'thread_has_human_issue_and_fix_context': 2, 'weak blueprint fit': 2, 'issue_or_pull_request_thread': 1, 'test_ci_gap': 1, 'agent_instruction_gap': 1, 'human_reported_issue_then_verified_fix_attempt': 1, 'bug_fix': 1, 'human_reported_issue_no_linked_fix': 1, 'not_resolved_or_not_observed': 1, 'partial blueprint fit': 1}\nOutcomes: {'claimed_resolved_with_verification_signal': 6, 'not_resolved_or_not_observed': 2}\nQuality tiers: {'weak_supervision': 3, 'assumption_check': 3, '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/timogilvie/wavemill", "source_id": "graph-query-motif_query-ff6f690e90274027", "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": "timogilvie/wavemill", "source_dataset": "graph_queries/unresolved_feedback", "training_usage": "negative_or_unresolved"}}}, {"ruleId": "foundry_unresolved_feedback", "level": "warning", "message": {"text": "Foundry mined unresolved feedback: timogilvie/wavemill"}, "properties": {"repobilityId": 430270, "scanner": "foundry_dataset", "fingerprint": "3bfe3243a71b065899250f0e03ce855015064c8b84b3f412e09be8cf95d257cc", "category": "practices", "severity": "medium", "confidence": 0.7, "triageState": "open", "verdict": "needs_review", "isResolved": false, "reason": "Imported from mined Foundry/Fable5 evidence with real GitHub/source provenance. Review source_id before acting.", "evidence": {"meta": {"kind": "graph_query_record", "title": "Human feedback without linked fix evidence", "intent": "Negative/unresolved examples that should not be hallucinated into fixes.", "labels": {"test_ci_gap": 1, "weak blueprint fit": 2, "partial blueprint fit": 1, "positive_human_signal": 1, "verification_or_tests": 4, "human_feedback_general": 1, "unlinked_human_feedback": 1, "issue_or_pull_request_thread": 1, "ambiguous_needs_more_evidence": 4, "blueprint_human_gap_alignment": 3, "comment_has_related_commit_context": 1, "positive_feedback_no_linked_change": 1, "human_positive_or_acceptance_signal": 1, "thread_has_human_issue_and_fix_context": 2}, "source": "graph_query_export", "motif_id": "unlinked_feedback_needs_evidence", "outcomes": {"ambiguous_needs_more_evidence": 8, "human_positive_or_acceptance_signal": 2}, "polarity": "bad", "query_id": "unresolved_feedback", "severity": "medium", "ci_labels": {}, "synthetic": false, "edge_count": 37, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 3, "thread_has_comment": 3, "alignment_uses_comment": 3, "alignment_uses_finding": 3, "chain_has_link_quality": 8, "comment_aligns_finding": 3, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 3, "comment_chain_links_commit": 4, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 3}, "node_count": 28, "node_types": {"repo": 1, "commit": 4, "thread": 1, "comment": 3, "alignment": 3, "fix_outcome": 1, "issue_chain": 1, "link_quality": 8, "comment_chain": 3, "blueprint_finding": 3}, "query_type": "motif_query", "thread_key": "timogilvie/wavemill#233", "issue_number": "233", "quality_tiers": {"unresolved": 2, "assumption_check": 3, "weak_supervision": 3}, "repo_full_name": "timogilvie/wavemill", "training_usage": "negative_or_unresolved", "source_motif_id": "graph-pattern-motif-thread-09186c1e20c455cd", "graph_gold_label": "weak_supervision_needs_review", "changed_file_labels": {}}, "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: timogilvie/wavemill\nThread: timogilvie/wavemill#233\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: timogilvie/wavemill\nThread: timogilvie/wavemill#233\nGraph gold label: weak_supervision_needs_review\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: timogilvie/wavemill#233\nRepo: timogilvie/wavemill\nIssue/PR number: 233\nGraph consistency label: weak_supervision_needs_review\nNodes: 28\nEdges: 37\nNode types: {'link_quality': 8, 'commit': 4, 'comment': 3, 'comment_chain': 3, 'alignment': 3, 'blueprint_finding': 3, 'thread': 1, 'repo': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'chain_has_link_quality': 8, 'comment_chain_links_commit': 4, 'thread_has_comment': 3, 'thread_has_comment_chain': 3, 'comment_has_chain': 3, 'issue_chain_has_comment_chain': 3, 'alignment_uses_comment': 3, 'alignment_uses_finding': 3, 'comment_aligns_finding': 3, 'repo_has_thread': 1, 'thread_has_issue_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'verification_or_tests': 4, 'ambiguous_needs_more_evidence': 4, 'blueprint_human_gap_alignment': 3, 'thread_has_human_issue_and_fix_context': 2, 'weak blueprint fit': 2, 'issue_or_pull_request_thread': 1, 'test_ci_gap': 1, 'human_feedback_general': 1, 'positive_human_signal': 1, 'comment_has_related_commit_context': 1, 'unlinked_human_feedback': 1, 'positive_feedback_no_linked_change': 1, 'human_positive_or_acceptance_signal': 1, 'partial blueprint fit': 1}\nOutcomes: {'ambiguous_needs_more_evidence': 8, 'human_positive_or_acceptance_signal': 2}\nQuality tiers: {'weak_supervision': 3, 'assumption_check': 3, 'unresolved': 2}\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/timogilvie/wavemill", "source_id": "graph-query-motif_query-ffc0d748fed7692f", "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": "timogilvie/wavemill", "source_dataset": "graph_queries/unresolved_feedback", "training_usage": "negative_or_unresolved"}}}, {"ruleId": "foundry_unresolved_feedback", "level": "warning", "message": {"text": "Foundry mined unresolved feedback: timogilvie/wavemill"}, "properties": {"repobilityId": 430269, "scanner": "foundry_dataset", "fingerprint": "2de3dfea073411f9f37d28c43f54b26b75d262aed33a680c79be03a20baf0c65", "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_gap": 1, "weak blueprint fit": 2, "partial blueprint fit": 1, "verification_or_tests": 6, "human_feedback_general": 3, "unlinked_human_feedback": 1, "issue_or_pull_request_thread": 1, "ambiguous_needs_more_evidence": 6, "blueprint_human_gap_alignment": 3, "comment_has_related_commit_context": 3, "thread_has_human_issue_and_fix_context": 2}, "source": "graph_query_export", "motif_id": "unlinked_feedback_needs_evidence", "outcomes": {"ambiguous_needs_more_evidence": 12}, "polarity": "bad", "query_id": "unresolved_feedback", "severity": "medium", "ci_labels": {}, "synthetic": false, "edge_count": 45, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 4, "thread_has_comment": 4, "alignment_uses_comment": 3, "alignment_uses_finding": 3, "chain_has_link_quality": 9, "comment_aligns_finding": 3, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 4, "comment_chain_links_commit": 7, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 4}, "node_count": 33, "node_types": {"repo": 1, "commit": 6, "thread": 1, "comment": 4, "alignment": 3, "fix_outcome": 1, "issue_chain": 1, "link_quality": 9, "comment_chain": 4, "blueprint_finding": 3}, "query_type": "motif_query", "thread_key": "timogilvie/wavemill#232", "issue_number": "232", "quality_tiers": {"unresolved": 1, "assumption_check": 3, "weak_supervision": 5}, "repo_full_name": "timogilvie/wavemill", "training_usage": "negative_or_unresolved", "source_motif_id": "graph-pattern-motif-thread-2c2aea6e111669eb", "graph_gold_label": "weak_supervision_needs_review", "changed_file_labels": {}}, "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: timogilvie/wavemill\nThread: timogilvie/wavemill#232\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: timogilvie/wavemill\nThread: timogilvie/wavemill#232\nGraph gold label: weak_supervision_needs_review\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: timogilvie/wavemill#232\nRepo: timogilvie/wavemill\nIssue/PR number: 232\nGraph consistency label: weak_supervision_needs_review\nNodes: 33\nEdges: 45\nNode types: {'link_quality': 9, 'commit': 6, 'comment': 4, 'comment_chain': 4, 'alignment': 3, 'blueprint_finding': 3, 'thread': 1, 'repo': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'chain_has_link_quality': 9, 'comment_chain_links_commit': 7, 'thread_has_comment': 4, 'thread_has_comment_chain': 4, 'comment_has_chain': 4, 'issue_chain_has_comment_chain': 4, 'alignment_uses_comment': 3, 'alignment_uses_finding': 3, 'comment_aligns_finding': 3, 'repo_has_thread': 1, 'thread_has_issue_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'ambiguous_needs_more_evidence': 6, 'verification_or_tests': 6, 'human_feedback_general': 3, 'comment_has_related_commit_context': 3, 'blueprint_human_gap_alignment': 3, 'thread_has_human_issue_and_fix_context': 2, 'weak blueprint fit': 2, 'issue_or_pull_request_thread': 1, 'ui_workflow_gap': 1, 'unlinked_human_feedback': 1, 'partial blueprint fit': 1}\nOutcomes: {'ambiguous_needs_more_evidence': 12}\nQuality tiers: {'weak_supervision': 5, 'assumption_check': 3, '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/timogilvie/wavemill", "source_id": "graph-query-motif_query-28b839cc5820d9c5", "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": "timogilvie/wavemill", "source_dataset": "graph_queries/unresolved_feedback", "training_usage": "negative_or_unresolved"}}}, {"ruleId": "foundry_unresolved_feedback", "level": "warning", "message": {"text": "Foundry mined unresolved feedback: timogilvie/wavemill"}, "properties": {"repobilityId": 430268, "scanner": "foundry_dataset", "fingerprint": "b2da3038db05ec1e45d2103cd4a884393cfd6136a0bd36d15023c56b6c031885", "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_gap": 1, "weak blueprint fit": 2, "partial blueprint fit": 1, "verification_or_tests": 5, "human_feedback_general": 1, "unlinked_human_feedback": 1, "issue_or_pull_request_thread": 1, "ambiguous_needs_more_evidence": 4, "blueprint_human_gap_alignment": 3, "comment_has_related_commit_context": 1, "thread_has_human_issue_and_fix_context": 2}, "source": "graph_query_export", "motif_id": "unlinked_feedback_needs_evidence", "outcomes": {"ambiguous_needs_more_evidence": 8}, "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, "alignment_uses_comment": 3, "alignment_uses_finding": 3, "chain_has_link_quality": 7, "comment_aligns_finding": 3, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 2, "comment_chain_links_commit": 5, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 2}, "node_count": 26, "node_types": {"repo": 1, "commit": 5, "thread": 1, "comment": 2, "alignment": 3, "fix_outcome": 1, "issue_chain": 1, "link_quality": 7, "comment_chain": 2, "blueprint_finding": 3}, "query_type": "motif_query", "thread_key": "timogilvie/wavemill#230", "issue_number": "230", "quality_tiers": {"unresolved": 1, "assumption_check": 3, "weak_supervision": 3}, "repo_full_name": "timogilvie/wavemill", "training_usage": "negative_or_unresolved", "source_motif_id": "graph-pattern-motif-thread-60767f757f6e33b3", "graph_gold_label": "weak_supervision_needs_review", "changed_file_labels": {}}, "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: timogilvie/wavemill\nThread: timogilvie/wavemill#230\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: timogilvie/wavemill\nThread: timogilvie/wavemill#230\nGraph gold label: weak_supervision_needs_review\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: timogilvie/wavemill#230\nRepo: timogilvie/wavemill\nIssue/PR number: 230\nGraph consistency label: weak_supervision_needs_review\nNodes: 26\nEdges: 33\nNode types: {'link_quality': 7, 'commit': 5, 'alignment': 3, 'blueprint_finding': 3, 'comment': 2, 'comment_chain': 2, 'thread': 1, 'repo': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'chain_has_link_quality': 7, 'comment_chain_links_commit': 5, 'alignment_uses_comment': 3, 'alignment_uses_finding': 3, 'comment_aligns_finding': 3, 'thread_has_comment': 2, 'thread_has_comment_chain': 2, 'comment_has_chain': 2, 'issue_chain_has_comment_chain': 2, 'repo_has_thread': 1, 'thread_has_issue_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'verification_or_tests': 5, 'ambiguous_needs_more_evidence': 4, 'blueprint_human_gap_alignment': 3, 'thread_has_human_issue_and_fix_context': 2, 'weak blueprint fit': 2, 'issue_or_pull_request_thread': 1, 'ui_workflow_gap': 1, 'human_feedback_general': 1, 'comment_has_related_commit_context': 1, 'unlinked_human_feedback': 1, 'partial blueprint fit': 1}\nOutcomes: {'ambiguous_needs_more_evidence': 8}\nQuality tiers: {'weak_supervision': 3, 'assumption_check': 3, '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/timogilvie/wavemill", "source_id": "graph-query-motif_query-df5c5cb9dda2fc06", "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": "timogilvie/wavemill", "source_dataset": "graph_queries/unresolved_feedback", "training_usage": "negative_or_unresolved"}}}, {"ruleId": "foundry_unresolved_feedback", "level": "warning", "message": {"text": "Foundry mined unresolved feedback: timogilvie/wavemill"}, "properties": {"repobilityId": 430267, "scanner": "foundry_dataset", "fingerprint": "969f38d50d0a8812bd6bb89dc2bf87185aab339af58c64f21c4aa0b20b60c64f", "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": 1, "agent_instruction_gap": 1, "human_feedback_general": 1, "unlinked_human_feedback": 1, "claimed_resolved_unverified": 3, "issue_or_pull_request_thread": 1, "ambiguous_needs_more_evidence": 1, "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": 17, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 2, "thread_has_comment": 2, "chain_has_link_quality": 4, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 2, "comment_chain_links_commit": 1, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 2}, "node_count": 13, "node_types": {"repo": 1, "commit": 1, "thread": 1, "comment": 2, "fix_outcome": 1, "issue_chain": 1, "link_quality": 4, "comment_chain": 2}, "query_type": "motif_query", "thread_key": "timogilvie/wavemill#227", "issue_number": "227", "quality_tiers": {"unresolved": 1, "weak_supervision": 3}, "repo_full_name": "timogilvie/wavemill", "training_usage": "negative_or_unresolved", "source_motif_id": "graph-pattern-motif-thread-39920798e56a7649", "graph_gold_label": "weak_supervision_needs_review", "changed_file_labels": {}}, "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: timogilvie/wavemill\nThread: timogilvie/wavemill#227\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: timogilvie/wavemill\nThread: timogilvie/wavemill#227\nGraph gold label: weak_supervision_needs_review\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: timogilvie/wavemill#227\nRepo: timogilvie/wavemill\nIssue/PR number: 227\nGraph consistency label: weak_supervision_needs_review\nNodes: 13\nEdges: 17\nNode types: {'link_quality': 4, 'comment': 2, 'comment_chain': 2, 'thread': 1, 'repo': 1, 'commit': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'chain_has_link_quality': 4, 'thread_has_comment': 2, 'thread_has_comment_chain': 2, 'comment_has_chain': 2, 'issue_chain_has_comment_chain': 2, 'repo_has_thread': 1, 'comment_chain_links_commit': 1, 'thread_has_issue_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'claimed_resolved_unverified': 3, 'thread_has_human_issue_and_fix_context': 2, 'issue_or_pull_request_thread': 1, 'agent_instruction_gap': 1, 'human_feedback_general': 1, 'human_reported_issue_then_fix_attempt': 1, 'bug_fix': 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, '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/timogilvie/wavemill", "source_id": "graph-query-motif_query-1b04fc7c4318c82f", "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": "timogilvie/wavemill", "source_dataset": "graph_queries/unresolved_feedback", "training_usage": "negative_or_unresolved"}}}, {"ruleId": "foundry_unresolved_feedback", "level": "warning", "message": {"text": "Foundry mined unresolved feedback: timogilvie/wavemill"}, "properties": {"repobilityId": 430266, "scanner": "foundry_dataset", "fingerprint": "6f0c494075bc7448cc9d57d771cde10e8c7a01df690b4dda3a11d329a3d732f6", "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": {"human_feedback_general": 1, "unlinked_human_feedback": 1, "thread_needs_classification": 2, "issue_or_pull_request_thread": 1, "ambiguous_needs_more_evidence": 3}, "source": "graph_query_export", "motif_id": "unlinked_feedback_needs_evidence", "outcomes": {"ambiguous_needs_more_evidence": 6}, "polarity": "bad", "query_id": "unresolved_feedback", "severity": "medium", "ci_labels": {}, "synthetic": false, "edge_count": 11, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 1, "thread_has_comment": 1, "chain_has_link_quality": 3, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 1, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 1}, "node_count": 9, "node_types": {"repo": 1, "thread": 1, "comment": 1, "fix_outcome": 1, "issue_chain": 1, "link_quality": 3, "comment_chain": 1}, "query_type": "motif_query", "thread_key": "timogilvie/wavemill#224", "issue_number": "224", "quality_tiers": {"unresolved": 3}, "repo_full_name": "timogilvie/wavemill", "training_usage": "negative_or_unresolved", "source_motif_id": "graph-pattern-motif-thread-51d84f1ccf484b33", "graph_gold_label": "needs_more_evidence", "changed_file_labels": {}}, "text": "Graph query export: Human feedback without linked fix evidence\nQuery id: unresolved_feedback\nQuery type: motif_query\nIntent: Negative/unresolved examples that should not be hallucinated into fixes.\nMotif: unlinked_feedback_needs_evidence\nTraining usage: negative_or_unresolved\nGraph gold label: needs_more_evidence\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#224\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: timogilvie/wavemill\nThread: timogilvie/wavemill#224\nGraph gold label: needs_more_evidence\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: timogilvie/wavemill#224\nRepo: timogilvie/wavemill\nIssue/PR number: 224\nGraph consistency label: needs_more_evidence\nNodes: 9\nEdges: 11\nNode types: {'link_quality': 3, 'thread': 1, 'repo': 1, 'comment': 1, 'comment_chain': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'chain_has_link_quality': 3, 'repo_has_thread': 1, 'thread_has_comment': 1, 'thread_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: {'ambiguous_needs_more_evidence': 3, 'thread_needs_classification': 2, 'issue_or_pull_request_thread': 1, 'human_feedback_general': 1, 'unlinked_human_feedback': 1}\nOutcomes: {'ambiguous_needs_more_evidence': 6}\nQuality tiers: {'unresolved': 3}\nCI labels: {}\nCurriculum targets:\n- Teach models to preserve unresolved human feedback instead of hallucinating fixes.\n- Build issue-to-regression examples where no accepted fix exists yet.\nAssumption checks:\n- Can a commit be linked by issue number, SHA, changed path, or time window?\n- If no link exists, is this explicitly labelled unresolved?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/timogilvie/wavemill", "source_id": "graph-query-motif_query-66637980433f6352", "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": "timogilvie/wavemill", "source_dataset": "graph_queries/unresolved_feedback", "training_usage": "negative_or_unresolved"}}}, {"ruleId": "foundry_unresolved_feedback", "level": "warning", "message": {"text": "Foundry mined unresolved feedback: timogilvie/wavemill"}, "properties": {"repobilityId": 430265, "scanner": "foundry_dataset", "fingerprint": "8b65bc59b0a842ca235ff464dfcd8f25a97983cae2df400f5c20269369d937ac", "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": 1, "agent_instruction_gap": 2, "human_feedback_general": 2, "unlinked_human_feedback": 2, "claimed_resolved_unverified": 1, "issue_or_pull_request_thread": 1, "not_resolved_or_not_observed": 1, "ambiguous_needs_more_evidence": 4, "human_reported_issue_no_linked_fix": 1, "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": 2, "not_resolved_or_not_observed": 2, "ambiguous_needs_more_evidence": 8}, "polarity": "bad", "query_id": "unresolved_feedback", "severity": "medium", "ci_labels": {}, "synthetic": false, "edge_count": 27, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 4, "thread_has_comment": 4, "chain_has_link_quality": 6, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 4, "comment_chain_links_commit": 1, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 4}, "node_count": 19, "node_types": {"repo": 1, "commit": 1, "thread": 1, "comment": 4, "fix_outcome": 1, "issue_chain": 1, "link_quality": 6, "comment_chain": 4}, "query_type": "motif_query", "thread_key": "timogilvie/wavemill#221", "issue_number": "221", "quality_tiers": {"unresolved": 3, "weak_supervision": 3}, "repo_full_name": "timogilvie/wavemill", "training_usage": "negative_or_unresolved", "source_motif_id": "graph-pattern-motif-thread-12c0f8526217583e", "graph_gold_label": "weak_supervision_needs_review", "changed_file_labels": {}}, "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: timogilvie/wavemill\nThread: timogilvie/wavemill#221\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: timogilvie/wavemill\nThread: timogilvie/wavemill#221\nGraph gold label: weak_supervision_needs_review\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: timogilvie/wavemill#221\nRepo: timogilvie/wavemill\nIssue/PR number: 221\nGraph consistency label: weak_supervision_needs_review\nNodes: 19\nEdges: 27\nNode types: {'link_quality': 6, 'comment': 4, 'comment_chain': 4, 'thread': 1, 'repo': 1, 'commit': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'chain_has_link_quality': 6, 'thread_has_comment': 4, 'thread_has_comment_chain': 4, 'comment_has_chain': 4, 'issue_chain_has_comment_chain': 4, 'repo_has_thread': 1, 'comment_chain_links_commit': 1, 'thread_has_issue_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'ambiguous_needs_more_evidence': 4, 'agent_instruction_gap': 2, 'human_feedback_general': 2, 'unlinked_human_feedback': 2, 'thread_has_human_issue_and_fix_context': 2, 'issue_or_pull_request_thread': 1, 'human_reported_issue_then_fix_attempt': 1, 'bug_fix': 1, 'claimed_resolved_unverified': 1, 'human_reported_issue_no_linked_fix': 1, 'not_resolved_or_not_observed': 1}\nOutcomes: {'ambiguous_needs_more_evidence': 8, 'claimed_resolved_unverified': 2, 'not_resolved_or_not_observed': 2}\nQuality tiers: {'weak_supervision': 3, 'unresolved': 3}\nCI labels: {}\nCurriculum targets:\n- Teach models to preserve unresolved human feedback instead of hallucinating fixes.\n- Build issue-to-regression examples where no accepted fix exists yet.\nAssumption checks:\n- Can a commit be linked by issue number, SHA, changed path, or time window?\n- If no link exists, is this explicitly labelled unresolved?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/timogilvie/wavemill", "source_id": "graph-query-motif_query-ede811bf71aa1c7e", "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": "timogilvie/wavemill", "source_dataset": "graph_queries/unresolved_feedback", "training_usage": "negative_or_unresolved"}}}, {"ruleId": "foundry_unresolved_feedback", "level": "warning", "message": {"text": "Foundry mined unresolved feedback: timogilvie/wavemill"}, "properties": {"repobilityId": 430264, "scanner": "foundry_dataset", "fingerprint": "01c43ec0b3dfa5469548e6fee2b4d8ec1a07e74c614e6ef58cc17a393f03d83f", "category": "practices", "severity": "medium", "confidence": 0.7, "triageState": "open", "verdict": "needs_review", "isResolved": false, "reason": "Imported from mined Foundry/Fable5 evidence with real GitHub/source provenance. Review source_id before acting.", "evidence": {"meta": {"kind": "graph_query_record", "title": "Human feedback without linked fix evidence", "intent": "Negative/unresolved examples that should not be hallucinated into fixes.", "labels": {"test_ci_gap": 1, "weak blueprint fit": 2, "partial blueprint fit": 1, "verification_or_tests": 1, "human_feedback_general": 1, "unlinked_human_feedback": 1, "issue_or_pull_request_thread": 1, "ambiguous_needs_more_evidence": 4, "blueprint_human_gap_alignment": 3, "comment_has_related_commit_context": 1, "thread_has_human_issue_and_fix_context": 2}, "source": "graph_query_export", "motif_id": "unlinked_feedback_needs_evidence", "outcomes": {"ambiguous_needs_more_evidence": 8}, "polarity": "bad", "query_id": "unresolved_feedback", "severity": "medium", "ci_labels": {}, "synthetic": false, "edge_count": 29, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 2, "thread_has_comment": 2, "alignment_uses_comment": 3, "alignment_uses_finding": 3, "chain_has_link_quality": 7, "comment_aligns_finding": 3, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 2, "comment_chain_links_commit": 1, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 2}, "node_count": 22, "node_types": {"repo": 1, "commit": 1, "thread": 1, "comment": 2, "alignment": 3, "fix_outcome": 1, "issue_chain": 1, "link_quality": 7, "comment_chain": 2, "blueprint_finding": 3}, "query_type": "motif_query", "thread_key": "timogilvie/wavemill#220", "issue_number": "220", "quality_tiers": {"unresolved": 1, "assumption_check": 3, "weak_supervision": 3}, "repo_full_name": "timogilvie/wavemill", "training_usage": "negative_or_unresolved", "source_motif_id": "graph-pattern-motif-thread-90c0df916ed3542c", "graph_gold_label": "weak_supervision_needs_review", "changed_file_labels": {}}, "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: timogilvie/wavemill\nThread: timogilvie/wavemill#220\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: timogilvie/wavemill\nThread: timogilvie/wavemill#220\nGraph gold label: weak_supervision_needs_review\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: timogilvie/wavemill#220\nRepo: timogilvie/wavemill\nIssue/PR number: 220\nGraph consistency label: weak_supervision_needs_review\nNodes: 22\nEdges: 29\nNode types: {'link_quality': 7, 'alignment': 3, 'blueprint_finding': 3, 'comment': 2, 'comment_chain': 2, 'thread': 1, 'repo': 1, 'commit': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'chain_has_link_quality': 7, 'alignment_uses_comment': 3, 'alignment_uses_finding': 3, 'comment_aligns_finding': 3, 'thread_has_comment': 2, 'thread_has_comment_chain': 2, 'comment_has_chain': 2, 'issue_chain_has_comment_chain': 2, 'repo_has_thread': 1, 'comment_chain_links_commit': 1, 'thread_has_issue_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'ambiguous_needs_more_evidence': 4, 'blueprint_human_gap_alignment': 3, 'thread_has_human_issue_and_fix_context': 2, 'weak blueprint fit': 2, 'issue_or_pull_request_thread': 1, 'test_ci_gap': 1, 'human_feedback_general': 1, 'comment_has_related_commit_context': 1, 'verification_or_tests': 1, 'unlinked_human_feedback': 1, 'partial blueprint fit': 1}\nOutcomes: {'ambiguous_needs_more_evidence': 8}\nQuality tiers: {'weak_supervision': 3, 'assumption_check': 3, '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/timogilvie/wavemill", "source_id": "graph-query-motif_query-c2520492cee0aee2", "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": "timogilvie/wavemill", "source_dataset": "graph_queries/unresolved_feedback", "training_usage": "negative_or_unresolved"}}}, {"ruleId": "foundry_unresolved_feedback", "level": "warning", "message": {"text": "Foundry mined unresolved feedback: timogilvie/wavemill"}, "properties": {"repobilityId": 430263, "scanner": "foundry_dataset", "fingerprint": "aaa2aabca3a7be24e0e24332ba647575f8350c84b31170b118f3fe3431c1a7de", "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": {"agent_instruction_gap": 2, "issue_or_pull_request_thread": 1, "not_resolved_or_not_observed": 4, "human_reported_issue_no_linked_fix": 2, "thread_has_human_issue_without_fix_context": 2}, "source": "graph_query_export", "motif_id": "unlinked_feedback_needs_evidence", "outcomes": {"not_resolved_or_not_observed": 8}, "polarity": "bad", "query_id": "unresolved_feedback", "severity": "medium", "ci_labels": {}, "synthetic": false, "edge_count": 16, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 2, "thread_has_comment": 2, "chain_has_link_quality": 4, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 2, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 2}, "node_count": 12, "node_types": {"repo": 1, "thread": 1, "comment": 2, "fix_outcome": 1, "issue_chain": 1, "link_quality": 4, "comment_chain": 2}, "query_type": "motif_query", "thread_key": "timogilvie/wavemill#219", "issue_number": "219", "quality_tiers": {"unresolved": 4}, "repo_full_name": "timogilvie/wavemill", "training_usage": "negative_or_unresolved", "source_motif_id": "graph-pattern-motif-thread-c17fd4d34bcd5820", "graph_gold_label": "needs_more_evidence", "changed_file_labels": {}}, "text": "Graph query export: Human feedback without linked fix evidence\nQuery id: unresolved_feedback\nQuery type: motif_query\nIntent: Negative/unresolved examples that should not be hallucinated into fixes.\nMotif: unlinked_feedback_needs_evidence\nTraining usage: negative_or_unresolved\nGraph gold label: needs_more_evidence\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#219\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: timogilvie/wavemill\nThread: timogilvie/wavemill#219\nGraph gold label: needs_more_evidence\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: timogilvie/wavemill#219\nRepo: timogilvie/wavemill\nIssue/PR number: 219\nGraph consistency label: needs_more_evidence\nNodes: 12\nEdges: 16\nNode types: {'link_quality': 4, 'comment': 2, 'comment_chain': 2, 'thread': 1, 'repo': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'chain_has_link_quality': 4, 'thread_has_comment': 2, 'thread_has_comment_chain': 2, 'comment_has_chain': 2, 'issue_chain_has_comment_chain': 2, 'repo_has_thread': 1, 'thread_has_issue_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'not_resolved_or_not_observed': 4, 'agent_instruction_gap': 2, 'human_reported_issue_no_linked_fix': 2, 'thread_has_human_issue_without_fix_context': 2, 'issue_or_pull_request_thread': 1}\nOutcomes: {'not_resolved_or_not_observed': 8}\nQuality tiers: {'unresolved': 4}\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/timogilvie/wavemill", "source_id": "graph-query-motif_query-30264635d35e2eb0", "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": "timogilvie/wavemill", "source_dataset": "graph_queries/unresolved_feedback", "training_usage": "negative_or_unresolved"}}}, {"ruleId": "foundry_unresolved_feedback", "level": "warning", "message": {"text": "Foundry mined unresolved feedback: timogilvie/wavemill"}, "properties": {"repobilityId": 430262, "scanner": "foundry_dataset", "fingerprint": "8ce08a19aed83f90bdbf52b7ba1e502c993398cc29c912bc69f312630a76f136", "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": {"agent_instruction_gap": 1, "human_feedback_general": 1, "unlinked_human_feedback": 1, "issue_or_pull_request_thread": 1, "not_resolved_or_not_observed": 1, "ambiguous_needs_more_evidence": 3, "human_reported_issue_no_linked_fix": 1, "thread_has_human_issue_without_fix_context": 2}, "source": "graph_query_export", "motif_id": "unlinked_feedback_needs_evidence", "outcomes": {"not_resolved_or_not_observed": 2, "ambiguous_needs_more_evidence": 6}, "polarity": "bad", "query_id": "unresolved_feedback", "severity": "medium", "ci_labels": {}, "synthetic": false, "edge_count": 16, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 2, "thread_has_comment": 2, "chain_has_link_quality": 4, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 2, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 2}, "node_count": 12, "node_types": {"repo": 1, "thread": 1, "comment": 2, "fix_outcome": 1, "issue_chain": 1, "link_quality": 4, "comment_chain": 2}, "query_type": "motif_query", "thread_key": "timogilvie/wavemill#217", "issue_number": "217", "quality_tiers": {"unresolved": 4}, "repo_full_name": "timogilvie/wavemill", "training_usage": "negative_or_unresolved", "source_motif_id": "graph-pattern-motif-thread-de53aae30249e15b", "graph_gold_label": "needs_more_evidence", "changed_file_labels": {}}, "text": "Graph query export: Human feedback without linked fix evidence\nQuery id: unresolved_feedback\nQuery type: motif_query\nIntent: Negative/unresolved examples that should not be hallucinated into fixes.\nMotif: unlinked_feedback_needs_evidence\nTraining usage: negative_or_unresolved\nGraph gold label: needs_more_evidence\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#217\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: timogilvie/wavemill\nThread: timogilvie/wavemill#217\nGraph gold label: needs_more_evidence\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: timogilvie/wavemill#217\nRepo: timogilvie/wavemill\nIssue/PR number: 217\nGraph consistency label: needs_more_evidence\nNodes: 12\nEdges: 16\nNode types: {'link_quality': 4, 'comment': 2, 'comment_chain': 2, 'thread': 1, 'repo': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'chain_has_link_quality': 4, 'thread_has_comment': 2, 'thread_has_comment_chain': 2, 'comment_has_chain': 2, 'issue_chain_has_comment_chain': 2, 'repo_has_thread': 1, 'thread_has_issue_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'ambiguous_needs_more_evidence': 3, 'thread_has_human_issue_without_fix_context': 2, 'issue_or_pull_request_thread': 1, 'human_feedback_general': 1, 'agent_instruction_gap': 1, 'unlinked_human_feedback': 1, 'human_reported_issue_no_linked_fix': 1, 'not_resolved_or_not_observed': 1}\nOutcomes: {'ambiguous_needs_more_evidence': 6, 'not_resolved_or_not_observed': 2}\nQuality tiers: {'unresolved': 4}\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/timogilvie/wavemill", "source_id": "graph-query-motif_query-ac4f137054686641", "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": "timogilvie/wavemill", "source_dataset": "graph_queries/unresolved_feedback", "training_usage": "negative_or_unresolved"}}}, {"ruleId": "foundry_unresolved_feedback", "level": "warning", "message": {"text": "Foundry mined unresolved feedback: timogilvie/wavemill"}, "properties": {"repobilityId": 430261, "scanner": "foundry_dataset", "fingerprint": "20232d6806898125bc20454c504b2958b1acca0cace675c3f357901360add626", "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": {"agent_instruction_gap": 1, "human_feedback_general": 1, "unlinked_human_feedback": 1, "issue_or_pull_request_thread": 1, "not_resolved_or_not_observed": 3, "ambiguous_needs_more_evidence": 1, "human_reported_issue_no_linked_fix": 1, "thread_has_human_issue_without_fix_context": 2}, "source": "graph_query_export", "motif_id": "unlinked_feedback_needs_evidence", "outcomes": {"not_resolved_or_not_observed": 6, "ambiguous_needs_more_evidence": 2}, "polarity": "bad", "query_id": "unresolved_feedback", "severity": "medium", "ci_labels": {}, "synthetic": false, "edge_count": 16, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 2, "thread_has_comment": 2, "chain_has_link_quality": 4, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 2, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 2}, "node_count": 12, "node_types": {"repo": 1, "thread": 1, "comment": 2, "fix_outcome": 1, "issue_chain": 1, "link_quality": 4, "comment_chain": 2}, "query_type": "motif_query", "thread_key": "timogilvie/wavemill#216", "issue_number": "216", "quality_tiers": {"unresolved": 4}, "repo_full_name": "timogilvie/wavemill", "training_usage": "negative_or_unresolved", "source_motif_id": "graph-pattern-motif-thread-0178a97f1b0215fc", "graph_gold_label": "needs_more_evidence", "changed_file_labels": {}}, "text": "Graph query export: Human feedback without linked fix evidence\nQuery id: unresolved_feedback\nQuery type: motif_query\nIntent: Negative/unresolved examples that should not be hallucinated into fixes.\nMotif: unlinked_feedback_needs_evidence\nTraining usage: negative_or_unresolved\nGraph gold label: needs_more_evidence\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#216\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: timogilvie/wavemill\nThread: timogilvie/wavemill#216\nGraph gold label: needs_more_evidence\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: timogilvie/wavemill#216\nRepo: timogilvie/wavemill\nIssue/PR number: 216\nGraph consistency label: needs_more_evidence\nNodes: 12\nEdges: 16\nNode types: {'link_quality': 4, 'comment': 2, 'comment_chain': 2, 'thread': 1, 'repo': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'chain_has_link_quality': 4, 'thread_has_comment': 2, 'thread_has_comment_chain': 2, 'comment_has_chain': 2, 'issue_chain_has_comment_chain': 2, 'repo_has_thread': 1, 'thread_has_issue_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'not_resolved_or_not_observed': 3, 'thread_has_human_issue_without_fix_context': 2, 'issue_or_pull_request_thread': 1, 'agent_instruction_gap': 1, 'human_feedback_general': 1, 'human_reported_issue_no_linked_fix': 1, 'unlinked_human_feedback': 1, 'ambiguous_needs_more_evidence': 1}\nOutcomes: {'not_resolved_or_not_observed': 6, 'ambiguous_needs_more_evidence': 2}\nQuality tiers: {'unresolved': 4}\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/timogilvie/wavemill", "source_id": "graph-query-motif_query-6f0f1d72a5434a72", "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": "timogilvie/wavemill", "source_dataset": "graph_queries/unresolved_feedback", "training_usage": "negative_or_unresolved"}}}, {"ruleId": "foundry_unresolved_feedback", "level": "warning", "message": {"text": "Foundry mined unresolved feedback: timogilvie/wavemill"}, "properties": {"repobilityId": 430260, "scanner": "foundry_dataset", "fingerprint": "d379f9d6b52903b93e9c37bab9fe9bc0f48db3ad532adf354d7ec9169e09ab99", "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": {"human_feedback_general": 1, "unlinked_human_feedback": 1, "thread_needs_classification": 2, "issue_or_pull_request_thread": 1, "ambiguous_needs_more_evidence": 3}, "source": "graph_query_export", "motif_id": "unlinked_feedback_needs_evidence", "outcomes": {"ambiguous_needs_more_evidence": 6}, "polarity": "bad", "query_id": "unresolved_feedback", "severity": "medium", "ci_labels": {}, "synthetic": false, "edge_count": 11, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 1, "thread_has_comment": 1, "chain_has_link_quality": 3, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 1, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 1}, "node_count": 9, "node_types": {"repo": 1, "thread": 1, "comment": 1, "fix_outcome": 1, "issue_chain": 1, "link_quality": 3, "comment_chain": 1}, "query_type": "motif_query", "thread_key": "timogilvie/wavemill#213", "issue_number": "213", "quality_tiers": {"unresolved": 3}, "repo_full_name": "timogilvie/wavemill", "training_usage": "negative_or_unresolved", "source_motif_id": "graph-pattern-motif-thread-58f11f438a465c8d", "graph_gold_label": "needs_more_evidence", "changed_file_labels": {}}, "text": "Graph query export: Human feedback without linked fix evidence\nQuery id: unresolved_feedback\nQuery type: motif_query\nIntent: Negative/unresolved examples that should not be hallucinated into fixes.\nMotif: unlinked_feedback_needs_evidence\nTraining usage: negative_or_unresolved\nGraph gold label: needs_more_evidence\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#213\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: timogilvie/wavemill\nThread: timogilvie/wavemill#213\nGraph gold label: needs_more_evidence\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: timogilvie/wavemill#213\nRepo: timogilvie/wavemill\nIssue/PR number: 213\nGraph consistency label: needs_more_evidence\nNodes: 9\nEdges: 11\nNode types: {'link_quality': 3, 'thread': 1, 'repo': 1, 'comment': 1, 'comment_chain': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'chain_has_link_quality': 3, 'repo_has_thread': 1, 'thread_has_comment': 1, 'thread_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: {'ambiguous_needs_more_evidence': 3, 'thread_needs_classification': 2, 'issue_or_pull_request_thread': 1, 'human_feedback_general': 1, 'unlinked_human_feedback': 1}\nOutcomes: {'ambiguous_needs_more_evidence': 6}\nQuality tiers: {'unresolved': 3}\nCI labels: {}\nCurriculum targets:\n- Teach models to preserve unresolved human feedback instead of hallucinating fixes.\n- Build issue-to-regression examples where no accepted fix exists yet.\nAssumption checks:\n- Can a commit be linked by issue number, SHA, changed path, or time window?\n- If no link exists, is this explicitly labelled unresolved?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/timogilvie/wavemill", "source_id": "graph-query-motif_query-33e81e79df91701f", "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": "timogilvie/wavemill", "source_dataset": "graph_queries/unresolved_feedback", "training_usage": "negative_or_unresolved"}}}, {"ruleId": "foundry_unresolved_feedback", "level": "warning", "message": {"text": "Foundry mined unresolved feedback: timogilvie/wavemill"}, "properties": {"repobilityId": 430259, "scanner": "foundry_dataset", "fingerprint": "5b462dd67e447584f0a5c46db209462f07c4cdff715e35b470e0dfef0dc696a8", "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": {"data_schema": 1, "weak blueprint fit": 2, "partial blueprint fit": 1, "verification_or_tests": 4, "human_feedback_general": 1, "data_schema_persistence": 1, "unlinked_human_feedback": 1, "issue_or_pull_request_thread": 1, "ambiguous_needs_more_evidence": 1, "blueprint_human_gap_alignment": 3, "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": {"ambiguous_needs_more_evidence": 2, "claimed_resolved_with_verification_signal": 6}, "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, "alignment_uses_comment": 3, "alignment_uses_finding": 3, "chain_has_link_quality": 7, "comment_aligns_finding": 3, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 2, "comment_chain_links_commit": 5, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 2}, "node_count": 26, "node_types": {"repo": 1, "commit": 5, "thread": 1, "comment": 2, "alignment": 3, "fix_outcome": 1, "issue_chain": 1, "link_quality": 7, "comment_chain": 2, "blueprint_finding": 3}, "query_type": "motif_query", "thread_key": "timogilvie/wavemill#212", "issue_number": "212", "quality_tiers": {"unresolved": 1, "assumption_check": 3, "weak_supervision": 3}, "repo_full_name": "timogilvie/wavemill", "training_usage": "negative_or_unresolved", "source_motif_id": "graph-pattern-motif-thread-2ac8b28c9acb2a5b", "graph_gold_label": "supported_by_verification_signal", "changed_file_labels": {}}, "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: timogilvie/wavemill\nThread: timogilvie/wavemill#212\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: timogilvie/wavemill\nThread: timogilvie/wavemill#212\nGraph gold label: supported_by_verification_signal\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: timogilvie/wavemill#212\nRepo: timogilvie/wavemill\nIssue/PR number: 212\nGraph consistency label: supported_by_verification_signal\nNodes: 26\nEdges: 33\nNode types: {'link_quality': 7, 'commit': 5, 'alignment': 3, 'blueprint_finding': 3, 'comment': 2, 'comment_chain': 2, 'thread': 1, 'repo': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'chain_has_link_quality': 7, 'comment_chain_links_commit': 5, 'alignment_uses_comment': 3, 'alignment_uses_finding': 3, 'comment_aligns_finding': 3, 'thread_has_comment': 2, 'thread_has_comment_chain': 2, 'comment_has_chain': 2, 'issue_chain_has_comment_chain': 2, 'repo_has_thread': 1, 'thread_has_issue_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'verification_or_tests': 4, 'claimed_resolved_with_verification_signal': 3, 'blueprint_human_gap_alignment': 3, 'thread_has_human_issue_and_fix_context': 2, 'weak blueprint fit': 2, 'issue_or_pull_request_thread': 1, 'data_schema_persistence': 1, 'human_feedback_general': 1, 'human_reported_issue_then_verified_fix_attempt': 1, 'data_schema': 1, 'unlinked_human_feedback': 1, 'ambiguous_needs_more_evidence': 1, 'partial blueprint fit': 1}\nOutcomes: {'claimed_resolved_with_verification_signal': 6, 'ambiguous_needs_more_evidence': 2}\nQuality tiers: {'weak_supervision': 3, 'assumption_check': 3, '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/timogilvie/wavemill", "source_id": "graph-query-motif_query-dadf9f9354f9796d", "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": "timogilvie/wavemill", "source_dataset": "graph_queries/unresolved_feedback", "training_usage": "negative_or_unresolved"}}}, {"ruleId": "foundry_unresolved_feedback", "level": "warning", "message": {"text": "Foundry mined unresolved feedback: timogilvie/wavemill"}, "properties": {"repobilityId": 430258, "scanner": "foundry_dataset", "fingerprint": "df10c683297c98b4d01dc435d9af7b08f7135ec69108c57cbe7f85e0723f15b2", "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": {"human_feedback_general": 1, "unlinked_human_feedback": 1, "thread_needs_classification": 2, "issue_or_pull_request_thread": 1, "ambiguous_needs_more_evidence": 3}, "source": "graph_query_export", "motif_id": "unlinked_feedback_needs_evidence", "outcomes": {"ambiguous_needs_more_evidence": 6}, "polarity": "bad", "query_id": "unresolved_feedback", "severity": "medium", "ci_labels": {}, "synthetic": false, "edge_count": 11, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 1, "thread_has_comment": 1, "chain_has_link_quality": 3, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 1, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 1}, "node_count": 9, "node_types": {"repo": 1, "thread": 1, "comment": 1, "fix_outcome": 1, "issue_chain": 1, "link_quality": 3, "comment_chain": 1}, "query_type": "motif_query", "thread_key": "timogilvie/wavemill#211", "issue_number": "211", "quality_tiers": {"unresolved": 3}, "repo_full_name": "timogilvie/wavemill", "training_usage": "negative_or_unresolved", "source_motif_id": "graph-pattern-motif-thread-7c3e8e284c0fa560", "graph_gold_label": "needs_more_evidence", "changed_file_labels": {}}, "text": "Graph query export: Human feedback without linked fix evidence\nQuery id: unresolved_feedback\nQuery type: motif_query\nIntent: Negative/unresolved examples that should not be hallucinated into fixes.\nMotif: unlinked_feedback_needs_evidence\nTraining usage: negative_or_unresolved\nGraph gold label: needs_more_evidence\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#211\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: timogilvie/wavemill\nThread: timogilvie/wavemill#211\nGraph gold label: needs_more_evidence\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: timogilvie/wavemill#211\nRepo: timogilvie/wavemill\nIssue/PR number: 211\nGraph consistency label: needs_more_evidence\nNodes: 9\nEdges: 11\nNode types: {'link_quality': 3, 'thread': 1, 'repo': 1, 'comment': 1, 'comment_chain': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'chain_has_link_quality': 3, 'repo_has_thread': 1, 'thread_has_comment': 1, 'thread_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: {'ambiguous_needs_more_evidence': 3, 'thread_needs_classification': 2, 'issue_or_pull_request_thread': 1, 'human_feedback_general': 1, 'unlinked_human_feedback': 1}\nOutcomes: {'ambiguous_needs_more_evidence': 6}\nQuality tiers: {'unresolved': 3}\nCI labels: {}\nCurriculum targets:\n- Teach models to preserve unresolved human feedback instead of hallucinating fixes.\n- Build issue-to-regression examples where no accepted fix exists yet.\nAssumption checks:\n- Can a commit be linked by issue number, SHA, changed path, or time window?\n- If no link exists, is this explicitly labelled unresolved?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/timogilvie/wavemill", "source_id": "graph-query-motif_query-1fe5b2a980e7ab08", "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": "timogilvie/wavemill", "source_dataset": "graph_queries/unresolved_feedback", "training_usage": "negative_or_unresolved"}}}, {"ruleId": "foundry_unresolved_feedback", "level": "warning", "message": {"text": "Foundry mined unresolved feedback: timogilvie/wavemill"}, "properties": {"repobilityId": 430257, "scanner": "foundry_dataset", "fingerprint": "5a932b0c14902a636fd579863b86b855efece9824db7e58c2e1ac822065f486e", "category": "practices", "severity": "medium", "confidence": 0.7, "triageState": "open", "verdict": "needs_review", "isResolved": false, "reason": "Imported from mined Foundry/Fable5 evidence with real GitHub/source provenance. Review source_id before acting.", "evidence": {"meta": {"kind": "graph_query_record", "title": "Human feedback without linked fix evidence", "intent": "Negative/unresolved examples that should not be hallucinated into fixes.", "labels": {"test_ci_gap": 1, "weak blueprint fit": 2, "partial blueprint fit": 1, "verification_or_tests": 4, "human_feedback_general": 1, "unlinked_human_feedback": 1, "issue_or_pull_request_thread": 1, "ambiguous_needs_more_evidence": 4, "blueprint_human_gap_alignment": 3, "comment_has_related_commit_context": 1, "thread_has_human_issue_and_fix_context": 2}, "source": "graph_query_export", "motif_id": "unlinked_feedback_needs_evidence", "outcomes": {"ambiguous_needs_more_evidence": 8}, "polarity": "bad", "query_id": "unresolved_feedback", "severity": "medium", "ci_labels": {}, "synthetic": false, "edge_count": 32, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 2, "thread_has_comment": 2, "alignment_uses_comment": 3, "alignment_uses_finding": 3, "chain_has_link_quality": 7, "comment_aligns_finding": 3, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 2, "comment_chain_links_commit": 4, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 2}, "node_count": 25, "node_types": {"repo": 1, "commit": 4, "thread": 1, "comment": 2, "alignment": 3, "fix_outcome": 1, "issue_chain": 1, "link_quality": 7, "comment_chain": 2, "blueprint_finding": 3}, "query_type": "motif_query", "thread_key": "timogilvie/wavemill#205", "issue_number": "205", "quality_tiers": {"unresolved": 1, "assumption_check": 3, "weak_supervision": 3}, "repo_full_name": "timogilvie/wavemill", "training_usage": "negative_or_unresolved", "source_motif_id": "graph-pattern-motif-thread-29fd67ee60b5ed42", "graph_gold_label": "weak_supervision_needs_review", "changed_file_labels": {}}, "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: timogilvie/wavemill\nThread: timogilvie/wavemill#205\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: timogilvie/wavemill\nThread: timogilvie/wavemill#205\nGraph gold label: weak_supervision_needs_review\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: timogilvie/wavemill#205\nRepo: timogilvie/wavemill\nIssue/PR number: 205\nGraph consistency label: weak_supervision_needs_review\nNodes: 25\nEdges: 32\nNode types: {'link_quality': 7, 'commit': 4, 'alignment': 3, 'blueprint_finding': 3, 'comment': 2, 'comment_chain': 2, 'thread': 1, 'repo': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'chain_has_link_quality': 7, 'comment_chain_links_commit': 4, 'alignment_uses_comment': 3, 'alignment_uses_finding': 3, 'comment_aligns_finding': 3, 'thread_has_comment': 2, 'thread_has_comment_chain': 2, 'comment_has_chain': 2, 'issue_chain_has_comment_chain': 2, 'repo_has_thread': 1, 'thread_has_issue_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'verification_or_tests': 4, 'ambiguous_needs_more_evidence': 4, 'blueprint_human_gap_alignment': 3, 'thread_has_human_issue_and_fix_context': 2, 'weak blueprint fit': 2, 'issue_or_pull_request_thread': 1, 'test_ci_gap': 1, 'human_feedback_general': 1, 'comment_has_related_commit_context': 1, 'unlinked_human_feedback': 1, 'partial blueprint fit': 1}\nOutcomes: {'ambiguous_needs_more_evidence': 8}\nQuality tiers: {'weak_supervision': 3, 'assumption_check': 3, '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/timogilvie/wavemill", "source_id": "graph-query-motif_query-135e72ae6c2db344", "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": "timogilvie/wavemill", "source_dataset": "graph_queries/unresolved_feedback", "training_usage": "negative_or_unresolved"}}}, {"ruleId": "foundry_unresolved_feedback", "level": "warning", "message": {"text": "Foundry mined unresolved feedback: timogilvie/wavemill"}, "properties": {"repobilityId": 430256, "scanner": "foundry_dataset", "fingerprint": "d84940982380050e3c3b49691b438a86f40f89c9be012a6c0cec477e5b61e6a9", "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": {"weak blueprint fit": 2, "api_integration_gap": 1, "partial blueprint fit": 1, "verification_or_tests": 4, "human_feedback_general": 1, "unlinked_human_feedback": 1, "issue_or_pull_request_thread": 1, "ambiguous_needs_more_evidence": 4, "blueprint_human_gap_alignment": 3, "comment_has_related_commit_context": 1, "thread_has_human_issue_and_fix_context": 2}, "source": "graph_query_export", "motif_id": "unlinked_feedback_needs_evidence", "outcomes": {"ambiguous_needs_more_evidence": 8}, "polarity": "bad", "query_id": "unresolved_feedback", "severity": "medium", "ci_labels": {}, "synthetic": false, "edge_count": 32, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 2, "thread_has_comment": 2, "alignment_uses_comment": 3, "alignment_uses_finding": 3, "chain_has_link_quality": 7, "comment_aligns_finding": 3, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 2, "comment_chain_links_commit": 4, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 2}, "node_count": 25, "node_types": {"repo": 1, "commit": 4, "thread": 1, "comment": 2, "alignment": 3, "fix_outcome": 1, "issue_chain": 1, "link_quality": 7, "comment_chain": 2, "blueprint_finding": 3}, "query_type": "motif_query", "thread_key": "timogilvie/wavemill#198", "issue_number": "198", "quality_tiers": {"unresolved": 1, "assumption_check": 3, "weak_supervision": 3}, "repo_full_name": "timogilvie/wavemill", "training_usage": "negative_or_unresolved", "source_motif_id": "graph-pattern-motif-thread-f2c188c81a8dac2b", "graph_gold_label": "weak_supervision_needs_review", "changed_file_labels": {}}, "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: timogilvie/wavemill\nThread: timogilvie/wavemill#198\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: timogilvie/wavemill\nThread: timogilvie/wavemill#198\nGraph gold label: weak_supervision_needs_review\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: timogilvie/wavemill#198\nRepo: timogilvie/wavemill\nIssue/PR number: 198\nGraph consistency label: weak_supervision_needs_review\nNodes: 25\nEdges: 32\nNode types: {'link_quality': 7, 'commit': 4, 'alignment': 3, 'blueprint_finding': 3, 'comment': 2, 'comment_chain': 2, 'thread': 1, 'repo': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'chain_has_link_quality': 7, 'comment_chain_links_commit': 4, 'alignment_uses_comment': 3, 'alignment_uses_finding': 3, 'comment_aligns_finding': 3, 'thread_has_comment': 2, 'thread_has_comment_chain': 2, 'comment_has_chain': 2, 'issue_chain_has_comment_chain': 2, 'repo_has_thread': 1, 'thread_has_issue_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'verification_or_tests': 4, 'ambiguous_needs_more_evidence': 4, 'blueprint_human_gap_alignment': 3, 'thread_has_human_issue_and_fix_context': 2, 'weak blueprint fit': 2, 'issue_or_pull_request_thread': 1, 'api_integration_gap': 1, 'human_feedback_general': 1, 'comment_has_related_commit_context': 1, 'unlinked_human_feedback': 1, 'partial blueprint fit': 1}\nOutcomes: {'ambiguous_needs_more_evidence': 8}\nQuality tiers: {'weak_supervision': 3, 'assumption_check': 3, '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/timogilvie/wavemill", "source_id": "graph-query-motif_query-323761eeda66fd58", "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": "timogilvie/wavemill", "source_dataset": "graph_queries/unresolved_feedback", "training_usage": "negative_or_unresolved"}}}, {"ruleId": "foundry_unresolved_feedback", "level": "warning", "message": {"text": "Foundry mined unresolved feedback: timogilvie/wavemill"}, "properties": {"repobilityId": 430255, "scanner": "foundry_dataset", "fingerprint": "bf5e78916d41b3c34d0edbe1b7448d16ea164b172387bb527ad89e42437f4dd8", "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": {"weak blueprint fit": 2, "api_integration_gap": 1, "partial blueprint fit": 1, "verification_or_tests": 4, "human_feedback_general": 1, "unlinked_human_feedback": 1, "issue_or_pull_request_thread": 1, "ambiguous_needs_more_evidence": 4, "blueprint_human_gap_alignment": 3, "comment_has_related_commit_context": 1, "thread_has_human_issue_and_fix_context": 2}, "source": "graph_query_export", "motif_id": "unlinked_feedback_needs_evidence", "outcomes": {"ambiguous_needs_more_evidence": 8}, "polarity": "bad", "query_id": "unresolved_feedback", "severity": "medium", "ci_labels": {}, "synthetic": false, "edge_count": 32, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 2, "thread_has_comment": 2, "alignment_uses_comment": 3, "alignment_uses_finding": 3, "chain_has_link_quality": 7, "comment_aligns_finding": 3, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 2, "comment_chain_links_commit": 4, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 2}, "node_count": 25, "node_types": {"repo": 1, "commit": 4, "thread": 1, "comment": 2, "alignment": 3, "fix_outcome": 1, "issue_chain": 1, "link_quality": 7, "comment_chain": 2, "blueprint_finding": 3}, "query_type": "motif_query", "thread_key": "timogilvie/wavemill#197", "issue_number": "197", "quality_tiers": {"unresolved": 1, "assumption_check": 3, "weak_supervision": 3}, "repo_full_name": "timogilvie/wavemill", "training_usage": "negative_or_unresolved", "source_motif_id": "graph-pattern-motif-thread-de61b0c80df8d1d9", "graph_gold_label": "weak_supervision_needs_review", "changed_file_labels": {}}, "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: timogilvie/wavemill\nThread: timogilvie/wavemill#197\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: timogilvie/wavemill\nThread: timogilvie/wavemill#197\nGraph gold label: weak_supervision_needs_review\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: timogilvie/wavemill#197\nRepo: timogilvie/wavemill\nIssue/PR number: 197\nGraph consistency label: weak_supervision_needs_review\nNodes: 25\nEdges: 32\nNode types: {'link_quality': 7, 'commit': 4, 'alignment': 3, 'blueprint_finding': 3, 'comment': 2, 'comment_chain': 2, 'thread': 1, 'repo': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'chain_has_link_quality': 7, 'comment_chain_links_commit': 4, 'alignment_uses_comment': 3, 'alignment_uses_finding': 3, 'comment_aligns_finding': 3, 'thread_has_comment': 2, 'thread_has_comment_chain': 2, 'comment_has_chain': 2, 'issue_chain_has_comment_chain': 2, 'repo_has_thread': 1, 'thread_has_issue_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'ambiguous_needs_more_evidence': 4, 'verification_or_tests': 4, 'blueprint_human_gap_alignment': 3, 'thread_has_human_issue_and_fix_context': 2, 'weak blueprint fit': 2, 'issue_or_pull_request_thread': 1, 'human_feedback_general': 1, 'api_integration_gap': 1, 'unlinked_human_feedback': 1, 'comment_has_related_commit_context': 1, 'partial blueprint fit': 1}\nOutcomes: {'ambiguous_needs_more_evidence': 8}\nQuality tiers: {'weak_supervision': 3, 'assumption_check': 3, '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/timogilvie/wavemill", "source_id": "graph-query-motif_query-8947adff853f5425", "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": "timogilvie/wavemill", "source_dataset": "graph_queries/unresolved_feedback", "training_usage": "negative_or_unresolved"}}}, {"ruleId": "foundry_unresolved_feedback", "level": "warning", "message": {"text": "Foundry mined unresolved feedback: timogilvie/wavemill"}, "properties": {"repobilityId": 430254, "scanner": "foundry_dataset", "fingerprint": "c9683f30150e1cea7e30a7ccfdb1bb6546560455c526bd4f494da78592d574a8", "category": "practices", "severity": "medium", "confidence": 0.7, "triageState": "open", "verdict": "needs_review", "isResolved": false, "reason": "Imported from mined Foundry/Fable5 evidence with real GitHub/source provenance. Review source_id before acting.", "evidence": {"meta": {"kind": "graph_query_record", "title": "Human feedback without linked fix evidence", "intent": "Negative/unresolved examples that should not be hallucinated into fixes.", "labels": {"test_ci_gap": 1, "weak blueprint fit": 2, "partial blueprint fit": 1, "verification_or_tests": 3, "human_feedback_general": 1, "unlinked_human_feedback": 1, "issue_or_pull_request_thread": 1, "ambiguous_needs_more_evidence": 4, "blueprint_human_gap_alignment": 3, "comment_has_related_commit_context": 1, "thread_has_human_issue_and_fix_context": 2}, "source": "graph_query_export", "motif_id": "unlinked_feedback_needs_evidence", "outcomes": {"ambiguous_needs_more_evidence": 8}, "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, "alignment_uses_comment": 3, "alignment_uses_finding": 3, "chain_has_link_quality": 7, "comment_aligns_finding": 3, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 2, "comment_chain_links_commit": 3, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 2}, "node_count": 24, "node_types": {"repo": 1, "commit": 3, "thread": 1, "comment": 2, "alignment": 3, "fix_outcome": 1, "issue_chain": 1, "link_quality": 7, "comment_chain": 2, "blueprint_finding": 3}, "query_type": "motif_query", "thread_key": "timogilvie/wavemill#196", "issue_number": "196", "quality_tiers": {"unresolved": 1, "assumption_check": 3, "weak_supervision": 3}, "repo_full_name": "timogilvie/wavemill", "training_usage": "negative_or_unresolved", "source_motif_id": "graph-pattern-motif-thread-7b7fbf5c99572172", "graph_gold_label": "weak_supervision_needs_review", "changed_file_labels": {}}, "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: timogilvie/wavemill\nThread: timogilvie/wavemill#196\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: timogilvie/wavemill\nThread: timogilvie/wavemill#196\nGraph gold label: weak_supervision_needs_review\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: timogilvie/wavemill#196\nRepo: timogilvie/wavemill\nIssue/PR number: 196\nGraph consistency label: weak_supervision_needs_review\nNodes: 24\nEdges: 31\nNode types: {'link_quality': 7, 'commit': 3, 'alignment': 3, 'blueprint_finding': 3, 'comment': 2, 'comment_chain': 2, 'thread': 1, 'repo': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'chain_has_link_quality': 7, 'comment_chain_links_commit': 3, 'alignment_uses_comment': 3, 'alignment_uses_finding': 3, 'comment_aligns_finding': 3, 'thread_has_comment': 2, 'thread_has_comment_chain': 2, 'comment_has_chain': 2, 'issue_chain_has_comment_chain': 2, 'repo_has_thread': 1, 'thread_has_issue_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'ambiguous_needs_more_evidence': 4, 'verification_or_tests': 3, 'blueprint_human_gap_alignment': 3, 'thread_has_human_issue_and_fix_context': 2, 'weak blueprint fit': 2, 'issue_or_pull_request_thread': 1, 'human_feedback_general': 1, 'test_ci_gap': 1, 'unlinked_human_feedback': 1, 'comment_has_related_commit_context': 1, 'partial blueprint fit': 1}\nOutcomes: {'ambiguous_needs_more_evidence': 8}\nQuality tiers: {'weak_supervision': 3, 'assumption_check': 3, '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/timogilvie/wavemill", "source_id": "graph-query-motif_query-6ef67107f3e5b449", "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": "timogilvie/wavemill", "source_dataset": "graph_queries/unresolved_feedback", "training_usage": "negative_or_unresolved"}}}, {"ruleId": "foundry_unresolved_feedback", "level": "warning", "message": {"text": "Foundry mined unresolved feedback: timogilvie/wavemill"}, "properties": {"repobilityId": 430253, "scanner": "foundry_dataset", "fingerprint": "25f84fe99b9eb8c677a1197b2f56e60fadfd478bbc2a743e43a1c214fcfc5eeb", "category": "practices", "severity": "medium", "confidence": 0.7, "triageState": "open", "verdict": "needs_review", "isResolved": false, "reason": "Imported from mined Foundry/Fable5 evidence with real GitHub/source provenance. Review source_id before acting.", "evidence": {"meta": {"kind": "graph_query_record", "title": "Human feedback without linked fix evidence", "intent": "Negative/unresolved examples that should not be hallucinated into fixes.", "labels": {"test_ci_gap": 1, "weak blueprint fit": 2, "partial blueprint fit": 1, "verification_or_tests": 3, "human_feedback_general": 2, "unlinked_human_feedback": 2, "issue_or_pull_request_thread": 1, "ambiguous_needs_more_evidence": 5, "blueprint_human_gap_alignment": 3, "comment_has_related_commit_context": 1, "thread_has_human_issue_and_fix_context": 2}, "source": "graph_query_export", "motif_id": "unlinked_feedback_needs_evidence", "outcomes": {"ambiguous_needs_more_evidence": 10}, "polarity": "bad", "query_id": "unresolved_feedback", "severity": "medium", "ci_labels": {}, "synthetic": false, "edge_count": 36, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 3, "thread_has_comment": 3, "alignment_uses_comment": 3, "alignment_uses_finding": 3, "chain_has_link_quality": 8, "comment_aligns_finding": 3, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 3, "comment_chain_links_commit": 3, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 3}, "node_count": 27, "node_types": {"repo": 1, "commit": 3, "thread": 1, "comment": 3, "alignment": 3, "fix_outcome": 1, "issue_chain": 1, "link_quality": 8, "comment_chain": 3, "blueprint_finding": 3}, "query_type": "motif_query", "thread_key": "timogilvie/wavemill#195", "issue_number": "195", "quality_tiers": {"unresolved": 2, "assumption_check": 3, "weak_supervision": 3}, "repo_full_name": "timogilvie/wavemill", "training_usage": "negative_or_unresolved", "source_motif_id": "graph-pattern-motif-thread-7f2697d694921443", "graph_gold_label": "weak_supervision_needs_review", "changed_file_labels": {}}, "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: timogilvie/wavemill\nThread: timogilvie/wavemill#195\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: timogilvie/wavemill\nThread: timogilvie/wavemill#195\nGraph gold label: weak_supervision_needs_review\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: timogilvie/wavemill#195\nRepo: timogilvie/wavemill\nIssue/PR number: 195\nGraph consistency label: weak_supervision_needs_review\nNodes: 27\nEdges: 36\nNode types: {'link_quality': 8, 'comment': 3, 'comment_chain': 3, 'commit': 3, 'alignment': 3, 'blueprint_finding': 3, 'thread': 1, 'repo': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'chain_has_link_quality': 8, 'thread_has_comment': 3, 'thread_has_comment_chain': 3, 'comment_has_chain': 3, 'comment_chain_links_commit': 3, 'issue_chain_has_comment_chain': 3, 'alignment_uses_comment': 3, 'alignment_uses_finding': 3, 'comment_aligns_finding': 3, 'repo_has_thread': 1, 'thread_has_issue_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'ambiguous_needs_more_evidence': 5, 'verification_or_tests': 3, 'blueprint_human_gap_alignment': 3, 'human_feedback_general': 2, 'unlinked_human_feedback': 2, 'thread_has_human_issue_and_fix_context': 2, 'weak blueprint fit': 2, 'issue_or_pull_request_thread': 1, 'test_ci_gap': 1, 'comment_has_related_commit_context': 1, 'partial blueprint fit': 1}\nOutcomes: {'ambiguous_needs_more_evidence': 10}\nQuality tiers: {'weak_supervision': 3, 'assumption_check': 3, 'unresolved': 2}\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/timogilvie/wavemill", "source_id": "graph-query-motif_query-cfc73091d49f8329", "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": "timogilvie/wavemill", "source_dataset": "graph_queries/unresolved_feedback", "training_usage": "negative_or_unresolved"}}}, {"ruleId": "foundry_unresolved_feedback", "level": "warning", "message": {"text": "Foundry mined unresolved feedback: timogilvie/wavemill"}, "properties": {"repobilityId": 430252, "scanner": "foundry_dataset", "fingerprint": "c617f51958f4e6bcb96babd70dcd560ff76804de1f05b40f478759209c26e58b", "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": {"human_feedback_general": 1, "unlinked_human_feedback": 1, "thread_needs_classification": 2, "issue_or_pull_request_thread": 1, "ambiguous_needs_more_evidence": 3}, "source": "graph_query_export", "motif_id": "unlinked_feedback_needs_evidence", "outcomes": {"ambiguous_needs_more_evidence": 6}, "polarity": "bad", "query_id": "unresolved_feedback", "severity": "medium", "ci_labels": {}, "synthetic": false, "edge_count": 11, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 1, "thread_has_comment": 1, "chain_has_link_quality": 3, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 1, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 1}, "node_count": 9, "node_types": {"repo": 1, "thread": 1, "comment": 1, "fix_outcome": 1, "issue_chain": 1, "link_quality": 3, "comment_chain": 1}, "query_type": "motif_query", "thread_key": "timogilvie/wavemill#191", "issue_number": "191", "quality_tiers": {"unresolved": 3}, "repo_full_name": "timogilvie/wavemill", "training_usage": "negative_or_unresolved", "source_motif_id": "graph-pattern-motif-thread-77b3d7fb39c0ad14", "graph_gold_label": "needs_more_evidence", "changed_file_labels": {}}, "text": "Graph query export: Human feedback without linked fix evidence\nQuery id: unresolved_feedback\nQuery type: motif_query\nIntent: Negative/unresolved examples that should not be hallucinated into fixes.\nMotif: unlinked_feedback_needs_evidence\nTraining usage: negative_or_unresolved\nGraph gold label: needs_more_evidence\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#191\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: timogilvie/wavemill\nThread: timogilvie/wavemill#191\nGraph gold label: needs_more_evidence\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: timogilvie/wavemill#191\nRepo: timogilvie/wavemill\nIssue/PR number: 191\nGraph consistency label: needs_more_evidence\nNodes: 9\nEdges: 11\nNode types: {'link_quality': 3, 'thread': 1, 'repo': 1, 'comment': 1, 'comment_chain': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'chain_has_link_quality': 3, 'repo_has_thread': 1, 'thread_has_comment': 1, 'thread_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: {'ambiguous_needs_more_evidence': 3, 'thread_needs_classification': 2, 'issue_or_pull_request_thread': 1, 'human_feedback_general': 1, 'unlinked_human_feedback': 1}\nOutcomes: {'ambiguous_needs_more_evidence': 6}\nQuality tiers: {'unresolved': 3}\nCI labels: {}\nCurriculum targets:\n- Teach models to preserve unresolved human feedback instead of hallucinating fixes.\n- Build issue-to-regression examples where no accepted fix exists yet.\nAssumption checks:\n- Can a commit be linked by issue number, SHA, changed path, or time window?\n- If no link exists, is this explicitly labelled unresolved?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/timogilvie/wavemill", "source_id": "graph-query-motif_query-3fcb1f3d3005c1c6", "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": "timogilvie/wavemill", "source_dataset": "graph_queries/unresolved_feedback", "training_usage": "negative_or_unresolved"}}}, {"ruleId": "foundry_unresolved_feedback", "level": "warning", "message": {"text": "Foundry mined unresolved feedback: timogilvie/wavemill"}, "properties": {"repobilityId": 430251, "scanner": "foundry_dataset", "fingerprint": "110fec016d241d3298c981f89c5d4f7c6e7c4c6c48ddb865df4fed086a39260f", "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": {"human_feedback_general": 1, "unlinked_human_feedback": 1, "thread_needs_classification": 2, "issue_or_pull_request_thread": 1, "ambiguous_needs_more_evidence": 3}, "source": "graph_query_export", "motif_id": "unlinked_feedback_needs_evidence", "outcomes": {"ambiguous_needs_more_evidence": 6}, "polarity": "bad", "query_id": "unresolved_feedback", "severity": "medium", "ci_labels": {}, "synthetic": false, "edge_count": 11, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 1, "thread_has_comment": 1, "chain_has_link_quality": 3, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 1, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 1}, "node_count": 9, "node_types": {"repo": 1, "thread": 1, "comment": 1, "fix_outcome": 1, "issue_chain": 1, "link_quality": 3, "comment_chain": 1}, "query_type": "motif_query", "thread_key": "timogilvie/wavemill#190", "issue_number": "190", "quality_tiers": {"unresolved": 3}, "repo_full_name": "timogilvie/wavemill", "training_usage": "negative_or_unresolved", "source_motif_id": "graph-pattern-motif-thread-bd4a8e04662a23e0", "graph_gold_label": "needs_more_evidence", "changed_file_labels": {}}, "text": "Graph query export: Human feedback without linked fix evidence\nQuery id: unresolved_feedback\nQuery type: motif_query\nIntent: Negative/unresolved examples that should not be hallucinated into fixes.\nMotif: unlinked_feedback_needs_evidence\nTraining usage: negative_or_unresolved\nGraph gold label: needs_more_evidence\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#190\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: timogilvie/wavemill\nThread: timogilvie/wavemill#190\nGraph gold label: needs_more_evidence\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: timogilvie/wavemill#190\nRepo: timogilvie/wavemill\nIssue/PR number: 190\nGraph consistency label: needs_more_evidence\nNodes: 9\nEdges: 11\nNode types: {'link_quality': 3, 'thread': 1, 'repo': 1, 'comment': 1, 'comment_chain': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'chain_has_link_quality': 3, 'repo_has_thread': 1, 'thread_has_comment': 1, 'thread_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: {'ambiguous_needs_more_evidence': 3, 'thread_needs_classification': 2, 'issue_or_pull_request_thread': 1, 'human_feedback_general': 1, 'unlinked_human_feedback': 1}\nOutcomes: {'ambiguous_needs_more_evidence': 6}\nQuality tiers: {'unresolved': 3}\nCI labels: {}\nCurriculum targets:\n- Teach models to preserve unresolved human feedback instead of hallucinating fixes.\n- Build issue-to-regression examples where no accepted fix exists yet.\nAssumption checks:\n- Can a commit be linked by issue number, SHA, changed path, or time window?\n- If no link exists, is this explicitly labelled unresolved?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/timogilvie/wavemill", "source_id": "graph-query-motif_query-a0d39a29b7b48f21", "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": "timogilvie/wavemill", "source_dataset": "graph_queries/unresolved_feedback", "training_usage": "negative_or_unresolved"}}}, {"ruleId": "foundry_unresolved_feedback", "level": "warning", "message": {"text": "Foundry mined unresolved feedback: timogilvie/wavemill"}, "properties": {"repobilityId": 430250, "scanner": "foundry_dataset", "fingerprint": "a2a861934cb94634e173a4338a70f20f06124bff14d99790bf9d3f8f2051f8ab", "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": {"human_feedback_general": 1, "unlinked_human_feedback": 1, "thread_needs_classification": 2, "issue_or_pull_request_thread": 1, "ambiguous_needs_more_evidence": 3}, "source": "graph_query_export", "motif_id": "unlinked_feedback_needs_evidence", "outcomes": {"ambiguous_needs_more_evidence": 6}, "polarity": "bad", "query_id": "unresolved_feedback", "severity": "medium", "ci_labels": {}, "synthetic": false, "edge_count": 11, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 1, "thread_has_comment": 1, "chain_has_link_quality": 3, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 1, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 1}, "node_count": 9, "node_types": {"repo": 1, "thread": 1, "comment": 1, "fix_outcome": 1, "issue_chain": 1, "link_quality": 3, "comment_chain": 1}, "query_type": "motif_query", "thread_key": "timogilvie/wavemill#188", "issue_number": "188", "quality_tiers": {"unresolved": 3}, "repo_full_name": "timogilvie/wavemill", "training_usage": "negative_or_unresolved", "source_motif_id": "graph-pattern-motif-thread-b67b3735fad04b2c", "graph_gold_label": "needs_more_evidence", "changed_file_labels": {}}, "text": "Graph query export: Human feedback without linked fix evidence\nQuery id: unresolved_feedback\nQuery type: motif_query\nIntent: Negative/unresolved examples that should not be hallucinated into fixes.\nMotif: unlinked_feedback_needs_evidence\nTraining usage: negative_or_unresolved\nGraph gold label: needs_more_evidence\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#188\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: timogilvie/wavemill\nThread: timogilvie/wavemill#188\nGraph gold label: needs_more_evidence\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: timogilvie/wavemill#188\nRepo: timogilvie/wavemill\nIssue/PR number: 188\nGraph consistency label: needs_more_evidence\nNodes: 9\nEdges: 11\nNode types: {'link_quality': 3, 'thread': 1, 'repo': 1, 'comment': 1, 'comment_chain': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'chain_has_link_quality': 3, 'repo_has_thread': 1, 'thread_has_comment': 1, 'thread_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: {'ambiguous_needs_more_evidence': 3, 'thread_needs_classification': 2, 'issue_or_pull_request_thread': 1, 'human_feedback_general': 1, 'unlinked_human_feedback': 1}\nOutcomes: {'ambiguous_needs_more_evidence': 6}\nQuality tiers: {'unresolved': 3}\nCI labels: {}\nCurriculum targets:\n- Teach models to preserve unresolved human feedback instead of hallucinating fixes.\n- Build issue-to-regression examples where no accepted fix exists yet.\nAssumption checks:\n- Can a commit be linked by issue number, SHA, changed path, or time window?\n- If no link exists, is this explicitly labelled unresolved?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/timogilvie/wavemill", "source_id": "graph-query-motif_query-df4d38bd489eb37b", "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": "timogilvie/wavemill", "source_dataset": "graph_queries/unresolved_feedback", "training_usage": "negative_or_unresolved"}}}, {"ruleId": "foundry_unresolved_feedback", "level": "warning", "message": {"text": "Foundry mined unresolved feedback: timogilvie/wavemill"}, "properties": {"repobilityId": 430249, "scanner": "foundry_dataset", "fingerprint": "d8b8f2d443956c95643c2fb51269f2e438ebf422b42ecd04dbf2dfb9d938f551", "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": {"verification_or_tests": 1, "human_feedback_general": 2, "unlinked_human_feedback": 1, "thread_needs_classification": 2, "issue_or_pull_request_thread": 1, "ambiguous_needs_more_evidence": 4, "comment_has_related_commit_context": 1}, "source": "graph_query_export", "motif_id": "unlinked_feedback_needs_evidence", "outcomes": {"ambiguous_needs_more_evidence": 8}, "polarity": "bad", "query_id": "unresolved_feedback", "severity": "medium", "ci_labels": {}, "synthetic": false, "edge_count": 17, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 2, "thread_has_comment": 2, "chain_has_link_quality": 4, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 2, "comment_chain_links_commit": 1, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 2}, "node_count": 13, "node_types": {"repo": 1, "commit": 1, "thread": 1, "comment": 2, "fix_outcome": 1, "issue_chain": 1, "link_quality": 4, "comment_chain": 2}, "query_type": "motif_query", "thread_key": "timogilvie/wavemill#185", "issue_number": "185", "quality_tiers": {"unresolved": 1, "weak_supervision": 3}, "repo_full_name": "timogilvie/wavemill", "training_usage": "negative_or_unresolved", "source_motif_id": "graph-pattern-motif-thread-2ef49d4e2fa32f96", "graph_gold_label": "weak_supervision_needs_review", "changed_file_labels": {}}, "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: timogilvie/wavemill\nThread: timogilvie/wavemill#185\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: timogilvie/wavemill\nThread: timogilvie/wavemill#185\nGraph gold label: weak_supervision_needs_review\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: timogilvie/wavemill#185\nRepo: timogilvie/wavemill\nIssue/PR number: 185\nGraph consistency label: weak_supervision_needs_review\nNodes: 13\nEdges: 17\nNode types: {'link_quality': 4, 'comment': 2, 'comment_chain': 2, 'thread': 1, 'repo': 1, 'commit': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'chain_has_link_quality': 4, 'thread_has_comment': 2, 'thread_has_comment_chain': 2, 'comment_has_chain': 2, 'issue_chain_has_comment_chain': 2, 'repo_has_thread': 1, 'comment_chain_links_commit': 1, 'thread_has_issue_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'ambiguous_needs_more_evidence': 4, 'human_feedback_general': 2, 'thread_needs_classification': 2, 'issue_or_pull_request_thread': 1, 'comment_has_related_commit_context': 1, 'verification_or_tests': 1, 'unlinked_human_feedback': 1}\nOutcomes: {'ambiguous_needs_more_evidence': 8}\nQuality tiers: {'weak_supervision': 3, '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/timogilvie/wavemill", "source_id": "graph-query-motif_query-167b762e852a54d3", "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": "timogilvie/wavemill", "source_dataset": "graph_queries/unresolved_feedback", "training_usage": "negative_or_unresolved"}}}, {"ruleId": "foundry_unresolved_feedback", "level": "warning", "message": {"text": "Foundry mined unresolved feedback: timogilvie/wavemill"}, "properties": {"repobilityId": 430248, "scanner": "foundry_dataset", "fingerprint": "628fce22d9e71921f7dbb6a1b59adf807866285efc74deb23332a06966581938", "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": {"human_feedback_general": 1, "unlinked_human_feedback": 1, "thread_needs_classification": 2, "issue_or_pull_request_thread": 1, "ambiguous_needs_more_evidence": 3}, "source": "graph_query_export", "motif_id": "unlinked_feedback_needs_evidence", "outcomes": {"ambiguous_needs_more_evidence": 6}, "polarity": "bad", "query_id": "unresolved_feedback", "severity": "medium", "ci_labels": {}, "synthetic": false, "edge_count": 11, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 1, "thread_has_comment": 1, "chain_has_link_quality": 3, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 1, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 1}, "node_count": 9, "node_types": {"repo": 1, "thread": 1, "comment": 1, "fix_outcome": 1, "issue_chain": 1, "link_quality": 3, "comment_chain": 1}, "query_type": "motif_query", "thread_key": "timogilvie/wavemill#183", "issue_number": "183", "quality_tiers": {"unresolved": 3}, "repo_full_name": "timogilvie/wavemill", "training_usage": "negative_or_unresolved", "source_motif_id": "graph-pattern-motif-thread-79ca8ffb3e8874aa", "graph_gold_label": "needs_more_evidence", "changed_file_labels": {}}, "text": "Graph query export: Human feedback without linked fix evidence\nQuery id: unresolved_feedback\nQuery type: motif_query\nIntent: Negative/unresolved examples that should not be hallucinated into fixes.\nMotif: unlinked_feedback_needs_evidence\nTraining usage: negative_or_unresolved\nGraph gold label: needs_more_evidence\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#183\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: timogilvie/wavemill\nThread: timogilvie/wavemill#183\nGraph gold label: needs_more_evidence\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: timogilvie/wavemill#183\nRepo: timogilvie/wavemill\nIssue/PR number: 183\nGraph consistency label: needs_more_evidence\nNodes: 9\nEdges: 11\nNode types: {'link_quality': 3, 'thread': 1, 'repo': 1, 'comment': 1, 'comment_chain': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'chain_has_link_quality': 3, 'repo_has_thread': 1, 'thread_has_comment': 1, 'thread_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: {'ambiguous_needs_more_evidence': 3, 'thread_needs_classification': 2, 'issue_or_pull_request_thread': 1, 'human_feedback_general': 1, 'unlinked_human_feedback': 1}\nOutcomes: {'ambiguous_needs_more_evidence': 6}\nQuality tiers: {'unresolved': 3}\nCI labels: {}\nCurriculum targets:\n- Teach models to preserve unresolved human feedback instead of hallucinating fixes.\n- Build issue-to-regression examples where no accepted fix exists yet.\nAssumption checks:\n- Can a commit be linked by issue number, SHA, changed path, or time window?\n- If no link exists, is this explicitly labelled unresolved?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/timogilvie/wavemill", "source_id": "graph-query-motif_query-ce57c6f43792a2a4", "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": "timogilvie/wavemill", "source_dataset": "graph_queries/unresolved_feedback", "training_usage": "negative_or_unresolved"}}}, {"ruleId": "foundry_unresolved_feedback", "level": "warning", "message": {"text": "Foundry mined unresolved feedback: timogilvie/wavemill"}, "properties": {"repobilityId": 430247, "scanner": "foundry_dataset", "fingerprint": "2df72440996c1b9d1e1c5d1d9e93136ca1d863cc50d69c5587e000ccb784670a", "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": {"human_feedback_general": 1, "unlinked_human_feedback": 1, "thread_needs_classification": 2, "issue_or_pull_request_thread": 1, "ambiguous_needs_more_evidence": 3}, "source": "graph_query_export", "motif_id": "unlinked_feedback_needs_evidence", "outcomes": {"ambiguous_needs_more_evidence": 6}, "polarity": "bad", "query_id": "unresolved_feedback", "severity": "medium", "ci_labels": {}, "synthetic": false, "edge_count": 11, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 1, "thread_has_comment": 1, "chain_has_link_quality": 3, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 1, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 1}, "node_count": 9, "node_types": {"repo": 1, "thread": 1, "comment": 1, "fix_outcome": 1, "issue_chain": 1, "link_quality": 3, "comment_chain": 1}, "query_type": "motif_query", "thread_key": "timogilvie/wavemill#182", "issue_number": "182", "quality_tiers": {"unresolved": 3}, "repo_full_name": "timogilvie/wavemill", "training_usage": "negative_or_unresolved", "source_motif_id": "graph-pattern-motif-thread-60e44eb9351e1d32", "graph_gold_label": "needs_more_evidence", "changed_file_labels": {}}, "text": "Graph query export: Human feedback without linked fix evidence\nQuery id: unresolved_feedback\nQuery type: motif_query\nIntent: Negative/unresolved examples that should not be hallucinated into fixes.\nMotif: unlinked_feedback_needs_evidence\nTraining usage: negative_or_unresolved\nGraph gold label: needs_more_evidence\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#182\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: timogilvie/wavemill\nThread: timogilvie/wavemill#182\nGraph gold label: needs_more_evidence\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: timogilvie/wavemill#182\nRepo: timogilvie/wavemill\nIssue/PR number: 182\nGraph consistency label: needs_more_evidence\nNodes: 9\nEdges: 11\nNode types: {'link_quality': 3, 'thread': 1, 'repo': 1, 'comment': 1, 'comment_chain': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'chain_has_link_quality': 3, 'repo_has_thread': 1, 'thread_has_comment': 1, 'thread_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: {'ambiguous_needs_more_evidence': 3, 'thread_needs_classification': 2, 'issue_or_pull_request_thread': 1, 'human_feedback_general': 1, 'unlinked_human_feedback': 1}\nOutcomes: {'ambiguous_needs_more_evidence': 6}\nQuality tiers: {'unresolved': 3}\nCI labels: {}\nCurriculum targets:\n- Teach models to preserve unresolved human feedback instead of hallucinating fixes.\n- Build issue-to-regression examples where no accepted fix exists yet.\nAssumption checks:\n- Can a commit be linked by issue number, SHA, changed path, or time window?\n- If no link exists, is this explicitly labelled unresolved?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/timogilvie/wavemill", "source_id": "graph-query-motif_query-52c5f699b8eb7e66", "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": "timogilvie/wavemill", "source_dataset": "graph_queries/unresolved_feedback", "training_usage": "negative_or_unresolved"}}}, {"ruleId": "foundry_unresolved_feedback", "level": "warning", "message": {"text": "Foundry mined unresolved feedback: timogilvie/wavemill"}, "properties": {"repobilityId": 430246, "scanner": "foundry_dataset", "fingerprint": "d258999a81b588460c0482aef40bb89f0cbfe1346294fe91c31fe78c627f30e0", "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": {"agent_instruction_gap": 1, "human_feedback_general": 2, "unlinked_human_feedback": 2, "issue_or_pull_request_thread": 1, "not_resolved_or_not_observed": 1, "ambiguous_needs_more_evidence": 4, "human_reported_issue_no_linked_fix": 1, "thread_has_human_issue_without_fix_context": 2}, "source": "graph_query_export", "motif_id": "unlinked_feedback_needs_evidence", "outcomes": {"not_resolved_or_not_observed": 2, "ambiguous_needs_more_evidence": 8}, "polarity": "bad", "query_id": "unresolved_feedback", "severity": "medium", "ci_labels": {}, "synthetic": false, "edge_count": 21, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 3, "thread_has_comment": 3, "chain_has_link_quality": 5, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 3, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 3}, "node_count": 15, "node_types": {"repo": 1, "thread": 1, "comment": 3, "fix_outcome": 1, "issue_chain": 1, "link_quality": 5, "comment_chain": 3}, "query_type": "motif_query", "thread_key": "timogilvie/wavemill#178", "issue_number": "178", "quality_tiers": {"unresolved": 5}, "repo_full_name": "timogilvie/wavemill", "training_usage": "negative_or_unresolved", "source_motif_id": "graph-pattern-motif-thread-bbc4350e4a3680bd", "graph_gold_label": "needs_more_evidence", "changed_file_labels": {}}, "text": "Graph query export: Human feedback without linked fix evidence\nQuery id: unresolved_feedback\nQuery type: motif_query\nIntent: Negative/unresolved examples that should not be hallucinated into fixes.\nMotif: unlinked_feedback_needs_evidence\nTraining usage: negative_or_unresolved\nGraph gold label: needs_more_evidence\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#178\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: timogilvie/wavemill\nThread: timogilvie/wavemill#178\nGraph gold label: needs_more_evidence\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: timogilvie/wavemill#178\nRepo: timogilvie/wavemill\nIssue/PR number: 178\nGraph consistency label: needs_more_evidence\nNodes: 15\nEdges: 21\nNode types: {'link_quality': 5, 'comment': 3, 'comment_chain': 3, 'thread': 1, 'repo': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'chain_has_link_quality': 5, 'thread_has_comment': 3, 'thread_has_comment_chain': 3, 'comment_has_chain': 3, 'issue_chain_has_comment_chain': 3, 'repo_has_thread': 1, 'thread_has_issue_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'ambiguous_needs_more_evidence': 4, 'human_feedback_general': 2, 'unlinked_human_feedback': 2, 'thread_has_human_issue_without_fix_context': 2, 'issue_or_pull_request_thread': 1, 'agent_instruction_gap': 1, 'human_reported_issue_no_linked_fix': 1, 'not_resolved_or_not_observed': 1}\nOutcomes: {'ambiguous_needs_more_evidence': 8, 'not_resolved_or_not_observed': 2}\nQuality tiers: {'unresolved': 5}\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/timogilvie/wavemill", "source_id": "graph-query-motif_query-70f4ec7a121d17a9", "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": "timogilvie/wavemill", "source_dataset": "graph_queries/unresolved_feedback", "training_usage": "negative_or_unresolved"}}}, {"ruleId": "foundry_unresolved_feedback", "level": "warning", "message": {"text": "Foundry mined unresolved feedback: timogilvie/wavemill"}, "properties": {"repobilityId": 430245, "scanner": "foundry_dataset", "fingerprint": "85e484ec9e8220ccede442ffab4f80c87789fbc052339a31b01ad10fe9d5a339", "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": {"agent_instruction_gap": 1, "human_feedback_general": 1, "unlinked_human_feedback": 1, "issue_or_pull_request_thread": 1, "not_resolved_or_not_observed": 1, "ambiguous_needs_more_evidence": 3, "human_reported_issue_no_linked_fix": 1, "thread_has_human_issue_without_fix_context": 2}, "source": "graph_query_export", "motif_id": "unlinked_feedback_needs_evidence", "outcomes": {"not_resolved_or_not_observed": 2, "ambiguous_needs_more_evidence": 6}, "polarity": "bad", "query_id": "unresolved_feedback", "severity": "medium", "ci_labels": {}, "synthetic": false, "edge_count": 16, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 2, "thread_has_comment": 2, "chain_has_link_quality": 4, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 2, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 2}, "node_count": 12, "node_types": {"repo": 1, "thread": 1, "comment": 2, "fix_outcome": 1, "issue_chain": 1, "link_quality": 4, "comment_chain": 2}, "query_type": "motif_query", "thread_key": "timogilvie/wavemill#177", "issue_number": "177", "quality_tiers": {"unresolved": 4}, "repo_full_name": "timogilvie/wavemill", "training_usage": "negative_or_unresolved", "source_motif_id": "graph-pattern-motif-thread-0e624588d3820204", "graph_gold_label": "needs_more_evidence", "changed_file_labels": {}}, "text": "Graph query export: Human feedback without linked fix evidence\nQuery id: unresolved_feedback\nQuery type: motif_query\nIntent: Negative/unresolved examples that should not be hallucinated into fixes.\nMotif: unlinked_feedback_needs_evidence\nTraining usage: negative_or_unresolved\nGraph gold label: needs_more_evidence\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#177\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: timogilvie/wavemill\nThread: timogilvie/wavemill#177\nGraph gold label: needs_more_evidence\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: timogilvie/wavemill#177\nRepo: timogilvie/wavemill\nIssue/PR number: 177\nGraph consistency label: needs_more_evidence\nNodes: 12\nEdges: 16\nNode types: {'link_quality': 4, 'comment': 2, 'comment_chain': 2, 'thread': 1, 'repo': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'chain_has_link_quality': 4, 'thread_has_comment': 2, 'thread_has_comment_chain': 2, 'comment_has_chain': 2, 'issue_chain_has_comment_chain': 2, 'repo_has_thread': 1, 'thread_has_issue_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'ambiguous_needs_more_evidence': 3, 'thread_has_human_issue_without_fix_context': 2, 'issue_or_pull_request_thread': 1, 'human_feedback_general': 1, 'agent_instruction_gap': 1, 'unlinked_human_feedback': 1, 'human_reported_issue_no_linked_fix': 1, 'not_resolved_or_not_observed': 1}\nOutcomes: {'ambiguous_needs_more_evidence': 6, 'not_resolved_or_not_observed': 2}\nQuality tiers: {'unresolved': 4}\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/timogilvie/wavemill", "source_id": "graph-query-motif_query-a309170df95ac3f0", "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": "timogilvie/wavemill", "source_dataset": "graph_queries/unresolved_feedback", "training_usage": "negative_or_unresolved"}}}, {"ruleId": "foundry_unresolved_feedback", "level": "warning", "message": {"text": "Foundry mined unresolved feedback: timogilvie/wavemill"}, "properties": {"repobilityId": 430244, "scanner": "foundry_dataset", "fingerprint": "58e52d5ff0311f0d46e18d4b2747ec4dee70fa035089c960ffee74076462b3a5", "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": {"human_feedback_general": 2, "unlinked_human_feedback": 2, "thread_needs_classification": 2, "issue_or_pull_request_thread": 1, "ambiguous_needs_more_evidence": 4}, "source": "graph_query_export", "motif_id": "unlinked_feedback_needs_evidence", "outcomes": {"ambiguous_needs_more_evidence": 8}, "polarity": "bad", "query_id": "unresolved_feedback", "severity": "medium", "ci_labels": {}, "synthetic": false, "edge_count": 16, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 2, "thread_has_comment": 2, "chain_has_link_quality": 4, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 2, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 2}, "node_count": 12, "node_types": {"repo": 1, "thread": 1, "comment": 2, "fix_outcome": 1, "issue_chain": 1, "link_quality": 4, "comment_chain": 2}, "query_type": "motif_query", "thread_key": "timogilvie/wavemill#176", "issue_number": "176", "quality_tiers": {"unresolved": 4}, "repo_full_name": "timogilvie/wavemill", "training_usage": "negative_or_unresolved", "source_motif_id": "graph-pattern-motif-thread-65d9e18eb143baae", "graph_gold_label": "needs_more_evidence", "changed_file_labels": {}}, "text": "Graph query export: Human feedback without linked fix evidence\nQuery id: unresolved_feedback\nQuery type: motif_query\nIntent: Negative/unresolved examples that should not be hallucinated into fixes.\nMotif: unlinked_feedback_needs_evidence\nTraining usage: negative_or_unresolved\nGraph gold label: needs_more_evidence\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#176\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: timogilvie/wavemill\nThread: timogilvie/wavemill#176\nGraph gold label: needs_more_evidence\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: timogilvie/wavemill#176\nRepo: timogilvie/wavemill\nIssue/PR number: 176\nGraph consistency label: needs_more_evidence\nNodes: 12\nEdges: 16\nNode types: {'link_quality': 4, 'comment': 2, 'comment_chain': 2, 'thread': 1, 'repo': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'chain_has_link_quality': 4, 'thread_has_comment': 2, 'thread_has_comment_chain': 2, 'comment_has_chain': 2, 'issue_chain_has_comment_chain': 2, 'repo_has_thread': 1, 'thread_has_issue_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'ambiguous_needs_more_evidence': 4, 'human_feedback_general': 2, 'unlinked_human_feedback': 2, 'thread_needs_classification': 2, 'issue_or_pull_request_thread': 1}\nOutcomes: {'ambiguous_needs_more_evidence': 8}\nQuality tiers: {'unresolved': 4}\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/timogilvie/wavemill", "source_id": "graph-query-motif_query-811fa461cee05b44", "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": "timogilvie/wavemill", "source_dataset": "graph_queries/unresolved_feedback", "training_usage": "negative_or_unresolved"}}}, {"ruleId": "foundry_unresolved_feedback", "level": "warning", "message": {"text": "Foundry mined unresolved feedback: timogilvie/wavemill"}, "properties": {"repobilityId": 430243, "scanner": "foundry_dataset", "fingerprint": "c3632d695232c7dcadbfa04109ca5086ef2d51ac6cc8438291577fed6365c2dc", "category": "practices", "severity": "medium", "confidence": 0.7, "triageState": "open", "verdict": "needs_review", "isResolved": false, "reason": "Imported from mined Foundry/Fable5 evidence with real GitHub/source provenance. Review source_id before acting.", "evidence": {"meta": {"kind": "graph_query_record", "title": "Human feedback without linked fix evidence", "intent": "Negative/unresolved examples that should not be hallucinated into fixes.", "labels": {"test_ci_gap": 2, "weak blueprint fit": 2, "partial blueprint fit": 1, "verification_or_tests": 2, "human_feedback_general": 2, "unlinked_human_feedback": 2, "issue_or_pull_request_thread": 1, "not_resolved_or_not_observed": 1, "ambiguous_needs_more_evidence": 5, "blueprint_human_gap_alignment": 6, "comment_has_related_commit_context": 1, "human_reported_issue_no_linked_fix": 1, "thread_has_human_issue_and_fix_context": 2}, "source": "graph_query_export", "motif_id": "unlinked_feedback_needs_evidence", "outcomes": {"not_resolved_or_not_observed": 2, "ambiguous_needs_more_evidence": 10}, "polarity": "bad", "query_id": "unresolved_feedback", "severity": "medium", "ci_labels": {}, "synthetic": false, "edge_count": 52, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 4, "thread_has_comment": 4, "alignment_uses_comment": 6, "alignment_uses_finding": 6, "chain_has_link_quality": 12, "comment_aligns_finding": 6, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 4, "comment_chain_links_commit": 2, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 4}, "node_count": 35, "node_types": {"repo": 1, "commit": 2, "thread": 1, "comment": 4, "alignment": 6, "fix_outcome": 1, "issue_chain": 1, "link_quality": 12, "comment_chain": 4, "blueprint_finding": 3}, "query_type": "motif_query", "thread_key": "timogilvie/wavemill#173", "issue_number": "173", "quality_tiers": {"unresolved": 3, "assumption_check": 6, "weak_supervision": 3}, "repo_full_name": "timogilvie/wavemill", "training_usage": "negative_or_unresolved", "source_motif_id": "graph-pattern-motif-thread-b00a0028ef84bb58", "graph_gold_label": "weak_supervision_needs_review", "changed_file_labels": {}}, "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: timogilvie/wavemill\nThread: timogilvie/wavemill#173\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: timogilvie/wavemill\nThread: timogilvie/wavemill#173\nGraph gold label: weak_supervision_needs_review\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: timogilvie/wavemill#173\nRepo: timogilvie/wavemill\nIssue/PR number: 173\nGraph consistency label: weak_supervision_needs_review\nNodes: 35\nEdges: 52\nNode types: {'link_quality': 12, 'alignment': 6, 'comment': 4, 'comment_chain': 4, 'blueprint_finding': 3, 'commit': 2, 'thread': 1, 'repo': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'chain_has_link_quality': 12, 'alignment_uses_comment': 6, 'alignment_uses_finding': 6, 'comment_aligns_finding': 6, 'thread_has_comment': 4, 'thread_has_comment_chain': 4, 'comment_has_chain': 4, 'issue_chain_has_comment_chain': 4, 'comment_chain_links_commit': 2, 'repo_has_thread': 1, 'thread_has_issue_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'blueprint_human_gap_alignment': 6, 'ambiguous_needs_more_evidence': 5, 'test_ci_gap': 2, 'human_feedback_general': 2, 'verification_or_tests': 2, 'unlinked_human_feedback': 2, 'thread_has_human_issue_and_fix_context': 2, 'weak blueprint fit': 2, 'issue_or_pull_request_thread': 1, 'comment_has_related_commit_context': 1, 'human_reported_issue_no_linked_fix': 1, 'not_resolved_or_not_observed': 1, 'partial blueprint fit': 1}\nOutcomes: {'ambiguous_needs_more_evidence': 10, 'not_resolved_or_not_observed': 2}\nQuality tiers: {'assumption_check': 6, 'weak_supervision': 3, 'unresolved': 3}\nCI labels: {}\nCurriculum targets:\n- Teach models to preserve unresolved human feedback instead of hallucinating fixes.\n- Build issue-to-regression examples where no accepted fix exists yet.\nAssumption checks:\n- Can a commit be linked by issue number, SHA, changed path, or time window?\n- If no link exists, is this explicitly labelled unresolved?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/timogilvie/wavemill", "source_id": "graph-query-motif_query-bfa1932b9bd71532", "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": "timogilvie/wavemill", "source_dataset": "graph_queries/unresolved_feedback", "training_usage": "negative_or_unresolved"}}}, {"ruleId": "foundry_unresolved_feedback", "level": "warning", "message": {"text": "Foundry mined unresolved feedback: timogilvie/wavemill"}, "properties": {"repobilityId": 430242, "scanner": "foundry_dataset", "fingerprint": "2e21498b9eeb5984e01deca4b43ada5364770694087f6049e5b5980282622a5a", "category": "practices", "severity": "medium", "confidence": 0.7, "triageState": "open", "verdict": "needs_review", "isResolved": false, "reason": "Imported from mined Foundry/Fable5 evidence with real GitHub/source provenance. Review source_id before acting.", "evidence": {"meta": {"kind": "graph_query_record", "title": "Human feedback without linked fix evidence", "intent": "Negative/unresolved examples that should not be hallucinated into fixes.", "labels": {"test_ci_gap": 1, "weak blueprint fit": 2, "agent_instruction_gap": 1, "partial blueprint fit": 1, "human_feedback_general": 1, "unlinked_human_feedback": 1, "issue_or_pull_request_thread": 1, "not_resolved_or_not_observed": 4, "ambiguous_needs_more_evidence": 1, "blueprint_human_gap_alignment": 3, "human_reported_issue_no_linked_fix": 2, "thread_has_human_issue_without_fix_context": 2}, "source": "graph_query_export", "motif_id": "unlinked_feedback_needs_evidence", "outcomes": {"not_resolved_or_not_observed": 8, "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": 3, "thread_has_comment": 3, "alignment_uses_comment": 3, "alignment_uses_finding": 3, "chain_has_link_quality": 8, "comment_aligns_finding": 3, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 3, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 3}, "node_count": 24, "node_types": {"repo": 1, "thread": 1, "comment": 3, "alignment": 3, "fix_outcome": 1, "issue_chain": 1, "link_quality": 8, "comment_chain": 3, "blueprint_finding": 3}, "query_type": "motif_query", "thread_key": "timogilvie/wavemill#172", "issue_number": "172", "quality_tiers": {"unresolved": 5, "assumption_check": 3}, "repo_full_name": "timogilvie/wavemill", "training_usage": "negative_or_unresolved", "source_motif_id": "graph-pattern-motif-thread-797f37fe903a149d", "graph_gold_label": "assumption_check", "changed_file_labels": {}}, "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: assumption_check\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#172\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: timogilvie/wavemill\nThread: timogilvie/wavemill#172\nGraph gold label: assumption_check\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: timogilvie/wavemill#172\nRepo: timogilvie/wavemill\nIssue/PR number: 172\nGraph consistency label: assumption_check\nNodes: 24\nEdges: 33\nNode types: {'link_quality': 8, 'comment': 3, 'comment_chain': 3, 'alignment': 3, 'blueprint_finding': 3, 'thread': 1, 'repo': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'chain_has_link_quality': 8, 'thread_has_comment': 3, 'thread_has_comment_chain': 3, 'comment_has_chain': 3, 'issue_chain_has_comment_chain': 3, 'alignment_uses_comment': 3, 'alignment_uses_finding': 3, 'comment_aligns_finding': 3, 'repo_has_thread': 1, 'thread_has_issue_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'not_resolved_or_not_observed': 4, 'blueprint_human_gap_alignment': 3, 'human_reported_issue_no_linked_fix': 2, 'thread_has_human_issue_without_fix_context': 2, 'weak blueprint fit': 2, 'issue_or_pull_request_thread': 1, 'agent_instruction_gap': 1, 'human_feedback_general': 1, 'test_ci_gap': 1, 'unlinked_human_feedback': 1, 'ambiguous_needs_more_evidence': 1, 'partial blueprint fit': 1}\nOutcomes: {'not_resolved_or_not_observed': 8, 'ambiguous_needs_more_evidence': 2}\nQuality tiers: {'unresolved': 5, 'assumption_check': 3}\nCI labels: {}\nCurriculum targets:\n- Teach models to preserve unresolved human feedback instead of hallucinating fixes.\n- Build issue-to-regression examples where no accepted fix exists yet.\nAssumption checks:\n- Can a commit be linked by issue number, SHA, changed path, or time window?\n- If no link exists, is this explicitly labelled unresolved?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/timogilvie/wavemill", "source_id": "graph-query-motif_query-e7c31e80a2952797", "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": "timogilvie/wavemill", "source_dataset": "graph_queries/unresolved_feedback", "training_usage": "negative_or_unresolved"}}}, {"ruleId": "foundry_unresolved_feedback", "level": "warning", "message": {"text": "Foundry mined unresolved feedback: timogilvie/wavemill"}, "properties": {"repobilityId": 430241, "scanner": "foundry_dataset", "fingerprint": "ee7f11c0d330e146362f31c90219f0bc2ef49401cef4caeaffbe8f5ac76384eb", "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": {"human_feedback_general": 1, "unlinked_human_feedback": 1, "thread_needs_classification": 2, "issue_or_pull_request_thread": 1, "ambiguous_needs_more_evidence": 3}, "source": "graph_query_export", "motif_id": "unlinked_feedback_needs_evidence", "outcomes": {"ambiguous_needs_more_evidence": 6}, "polarity": "bad", "query_id": "unresolved_feedback", "severity": "medium", "ci_labels": {}, "synthetic": false, "edge_count": 11, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 1, "thread_has_comment": 1, "chain_has_link_quality": 3, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 1, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 1}, "node_count": 9, "node_types": {"repo": 1, "thread": 1, "comment": 1, "fix_outcome": 1, "issue_chain": 1, "link_quality": 3, "comment_chain": 1}, "query_type": "motif_query", "thread_key": "timogilvie/wavemill#171", "issue_number": "171", "quality_tiers": {"unresolved": 3}, "repo_full_name": "timogilvie/wavemill", "training_usage": "negative_or_unresolved", "source_motif_id": "graph-pattern-motif-thread-d3138177efcfc8bb", "graph_gold_label": "needs_more_evidence", "changed_file_labels": {}}, "text": "Graph query export: Human feedback without linked fix evidence\nQuery id: unresolved_feedback\nQuery type: motif_query\nIntent: Negative/unresolved examples that should not be hallucinated into fixes.\nMotif: unlinked_feedback_needs_evidence\nTraining usage: negative_or_unresolved\nGraph gold label: needs_more_evidence\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#171\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: timogilvie/wavemill\nThread: timogilvie/wavemill#171\nGraph gold label: needs_more_evidence\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: timogilvie/wavemill#171\nRepo: timogilvie/wavemill\nIssue/PR number: 171\nGraph consistency label: needs_more_evidence\nNodes: 9\nEdges: 11\nNode types: {'link_quality': 3, 'thread': 1, 'repo': 1, 'comment': 1, 'comment_chain': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'chain_has_link_quality': 3, 'repo_has_thread': 1, 'thread_has_comment': 1, 'thread_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: {'ambiguous_needs_more_evidence': 3, 'thread_needs_classification': 2, 'issue_or_pull_request_thread': 1, 'human_feedback_general': 1, 'unlinked_human_feedback': 1}\nOutcomes: {'ambiguous_needs_more_evidence': 6}\nQuality tiers: {'unresolved': 3}\nCI labels: {}\nCurriculum targets:\n- Teach models to preserve unresolved human feedback instead of hallucinating fixes.\n- Build issue-to-regression examples where no accepted fix exists yet.\nAssumption checks:\n- Can a commit be linked by issue number, SHA, changed path, or time window?\n- If no link exists, is this explicitly labelled unresolved?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/timogilvie/wavemill", "source_id": "graph-query-motif_query-f5020765660dead8", "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": "timogilvie/wavemill", "source_dataset": "graph_queries/unresolved_feedback", "training_usage": "negative_or_unresolved"}}}, {"ruleId": "foundry_unresolved_feedback", "level": "warning", "message": {"text": "Foundry mined unresolved feedback: timogilvie/wavemill"}, "properties": {"repobilityId": 430240, "scanner": "foundry_dataset", "fingerprint": "97e20f4a66d1a719914b489e98c2082a255df14c5e37eb5a2f9fa9a2606f827b", "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": {"human_feedback_general": 1, "unlinked_human_feedback": 1, "thread_needs_classification": 2, "issue_or_pull_request_thread": 1, "ambiguous_needs_more_evidence": 3}, "source": "graph_query_export", "motif_id": "unlinked_feedback_needs_evidence", "outcomes": {"ambiguous_needs_more_evidence": 6}, "polarity": "bad", "query_id": "unresolved_feedback", "severity": "medium", "ci_labels": {}, "synthetic": false, "edge_count": 11, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 1, "thread_has_comment": 1, "chain_has_link_quality": 3, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 1, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 1}, "node_count": 9, "node_types": {"repo": 1, "thread": 1, "comment": 1, "fix_outcome": 1, "issue_chain": 1, "link_quality": 3, "comment_chain": 1}, "query_type": "motif_query", "thread_key": "timogilvie/wavemill#170", "issue_number": "170", "quality_tiers": {"unresolved": 3}, "repo_full_name": "timogilvie/wavemill", "training_usage": "negative_or_unresolved", "source_motif_id": "graph-pattern-motif-thread-889cb58eca53ae74", "graph_gold_label": "needs_more_evidence", "changed_file_labels": {}}, "text": "Graph query export: Human feedback without linked fix evidence\nQuery id: unresolved_feedback\nQuery type: motif_query\nIntent: Negative/unresolved examples that should not be hallucinated into fixes.\nMotif: unlinked_feedback_needs_evidence\nTraining usage: negative_or_unresolved\nGraph gold label: needs_more_evidence\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#170\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: timogilvie/wavemill\nThread: timogilvie/wavemill#170\nGraph gold label: needs_more_evidence\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: timogilvie/wavemill#170\nRepo: timogilvie/wavemill\nIssue/PR number: 170\nGraph consistency label: needs_more_evidence\nNodes: 9\nEdges: 11\nNode types: {'link_quality': 3, 'thread': 1, 'repo': 1, 'comment': 1, 'comment_chain': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'chain_has_link_quality': 3, 'repo_has_thread': 1, 'thread_has_comment': 1, 'thread_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: {'ambiguous_needs_more_evidence': 3, 'thread_needs_classification': 2, 'issue_or_pull_request_thread': 1, 'human_feedback_general': 1, 'unlinked_human_feedback': 1}\nOutcomes: {'ambiguous_needs_more_evidence': 6}\nQuality tiers: {'unresolved': 3}\nCI labels: {}\nCurriculum targets:\n- Teach models to preserve unresolved human feedback instead of hallucinating fixes.\n- Build issue-to-regression examples where no accepted fix exists yet.\nAssumption checks:\n- Can a commit be linked by issue number, SHA, changed path, or time window?\n- If no link exists, is this explicitly labelled unresolved?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/timogilvie/wavemill", "source_id": "graph-query-motif_query-96773ed31a6d7ef2", "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": "timogilvie/wavemill", "source_dataset": "graph_queries/unresolved_feedback", "training_usage": "negative_or_unresolved"}}}, {"ruleId": "foundry_unresolved_feedback", "level": "warning", "message": {"text": "Foundry mined unresolved feedback: timogilvie/wavemill"}, "properties": {"repobilityId": 430239, "scanner": "foundry_dataset", "fingerprint": "515590d15caa8a0e6f5f40938359f1319ec502bb7ff790e92e61a6a0a63a65bd", "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": {"human_feedback_general": 1, "unlinked_human_feedback": 1, "thread_needs_classification": 2, "issue_or_pull_request_thread": 1, "ambiguous_needs_more_evidence": 3}, "source": "graph_query_export", "motif_id": "unlinked_feedback_needs_evidence", "outcomes": {"ambiguous_needs_more_evidence": 6}, "polarity": "bad", "query_id": "unresolved_feedback", "severity": "medium", "ci_labels": {}, "synthetic": false, "edge_count": 11, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 1, "thread_has_comment": 1, "chain_has_link_quality": 3, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 1, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 1}, "node_count": 9, "node_types": {"repo": 1, "thread": 1, "comment": 1, "fix_outcome": 1, "issue_chain": 1, "link_quality": 3, "comment_chain": 1}, "query_type": "motif_query", "thread_key": "timogilvie/wavemill#169", "issue_number": "169", "quality_tiers": {"unresolved": 3}, "repo_full_name": "timogilvie/wavemill", "training_usage": "negative_or_unresolved", "source_motif_id": "graph-pattern-motif-thread-cb397f3885b33915", "graph_gold_label": "needs_more_evidence", "changed_file_labels": {}}, "text": "Graph query export: Human feedback without linked fix evidence\nQuery id: unresolved_feedback\nQuery type: motif_query\nIntent: Negative/unresolved examples that should not be hallucinated into fixes.\nMotif: unlinked_feedback_needs_evidence\nTraining usage: negative_or_unresolved\nGraph gold label: needs_more_evidence\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#169\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: timogilvie/wavemill\nThread: timogilvie/wavemill#169\nGraph gold label: needs_more_evidence\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: timogilvie/wavemill#169\nRepo: timogilvie/wavemill\nIssue/PR number: 169\nGraph consistency label: needs_more_evidence\nNodes: 9\nEdges: 11\nNode types: {'link_quality': 3, 'thread': 1, 'repo': 1, 'comment': 1, 'comment_chain': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'chain_has_link_quality': 3, 'repo_has_thread': 1, 'thread_has_comment': 1, 'thread_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: {'ambiguous_needs_more_evidence': 3, 'thread_needs_classification': 2, 'issue_or_pull_request_thread': 1, 'human_feedback_general': 1, 'unlinked_human_feedback': 1}\nOutcomes: {'ambiguous_needs_more_evidence': 6}\nQuality tiers: {'unresolved': 3}\nCI labels: {}\nCurriculum targets:\n- Teach models to preserve unresolved human feedback instead of hallucinating fixes.\n- Build issue-to-regression examples where no accepted fix exists yet.\nAssumption checks:\n- Can a commit be linked by issue number, SHA, changed path, or time window?\n- If no link exists, is this explicitly labelled unresolved?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/timogilvie/wavemill", "source_id": "graph-query-motif_query-40f0b8172dc7944a", "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": "timogilvie/wavemill", "source_dataset": "graph_queries/unresolved_feedback", "training_usage": "negative_or_unresolved"}}}, {"ruleId": "foundry_unresolved_feedback", "level": "warning", "message": {"text": "Foundry mined unresolved feedback: timogilvie/wavemill"}, "properties": {"repobilityId": 430238, "scanner": "foundry_dataset", "fingerprint": "a42e02ef11d2dd9f1675fe8ae82b1a4963505a40e688468defacefccc7bccf0d", "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": {"human_feedback_general": 1, "unlinked_human_feedback": 1, "thread_needs_classification": 2, "issue_or_pull_request_thread": 1, "ambiguous_needs_more_evidence": 3}, "source": "graph_query_export", "motif_id": "unlinked_feedback_needs_evidence", "outcomes": {"ambiguous_needs_more_evidence": 6}, "polarity": "bad", "query_id": "unresolved_feedback", "severity": "medium", "ci_labels": {}, "synthetic": false, "edge_count": 11, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 1, "thread_has_comment": 1, "chain_has_link_quality": 3, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 1, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 1}, "node_count": 9, "node_types": {"repo": 1, "thread": 1, "comment": 1, "fix_outcome": 1, "issue_chain": 1, "link_quality": 3, "comment_chain": 1}, "query_type": "motif_query", "thread_key": "timogilvie/wavemill#168", "issue_number": "168", "quality_tiers": {"unresolved": 3}, "repo_full_name": "timogilvie/wavemill", "training_usage": "negative_or_unresolved", "source_motif_id": "graph-pattern-motif-thread-2a387630d4e168a6", "graph_gold_label": "needs_more_evidence", "changed_file_labels": {}}, "text": "Graph query export: Human feedback without linked fix evidence\nQuery id: unresolved_feedback\nQuery type: motif_query\nIntent: Negative/unresolved examples that should not be hallucinated into fixes.\nMotif: unlinked_feedback_needs_evidence\nTraining usage: negative_or_unresolved\nGraph gold label: needs_more_evidence\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#168\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: timogilvie/wavemill\nThread: timogilvie/wavemill#168\nGraph gold label: needs_more_evidence\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: timogilvie/wavemill#168\nRepo: timogilvie/wavemill\nIssue/PR number: 168\nGraph consistency label: needs_more_evidence\nNodes: 9\nEdges: 11\nNode types: {'link_quality': 3, 'thread': 1, 'repo': 1, 'comment': 1, 'comment_chain': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'chain_has_link_quality': 3, 'repo_has_thread': 1, 'thread_has_comment': 1, 'thread_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: {'ambiguous_needs_more_evidence': 3, 'thread_needs_classification': 2, 'issue_or_pull_request_thread': 1, 'human_feedback_general': 1, 'unlinked_human_feedback': 1}\nOutcomes: {'ambiguous_needs_more_evidence': 6}\nQuality tiers: {'unresolved': 3}\nCI labels: {}\nCurriculum targets:\n- Teach models to preserve unresolved human feedback instead of hallucinating fixes.\n- Build issue-to-regression examples where no accepted fix exists yet.\nAssumption checks:\n- Can a commit be linked by issue number, SHA, changed path, or time window?\n- If no link exists, is this explicitly labelled unresolved?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/timogilvie/wavemill", "source_id": "graph-query-motif_query-9c7e630472504127", "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": "timogilvie/wavemill", "source_dataset": "graph_queries/unresolved_feedback", "training_usage": "negative_or_unresolved"}}}, {"ruleId": "foundry_unresolved_feedback", "level": "warning", "message": {"text": "Foundry mined unresolved feedback: timogilvie/wavemill"}, "properties": {"repobilityId": 430237, "scanner": "foundry_dataset", "fingerprint": "547b148dee55806e495031d942214ba7c1331f91834f5761172b76463926cdd0", "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": {"verification_or_tests": 5, "human_feedback_general": 2, "unlinked_human_feedback": 1, "thread_needs_classification": 2, "issue_or_pull_request_thread": 1, "ambiguous_needs_more_evidence": 4, "comment_has_related_commit_context": 1}, "source": "graph_query_export", "motif_id": "unlinked_feedback_needs_evidence", "outcomes": {"ambiguous_needs_more_evidence": 8}, "polarity": "bad", "query_id": "unresolved_feedback", "severity": "medium", "ci_labels": {}, "synthetic": false, "edge_count": 21, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 2, "thread_has_comment": 2, "chain_has_link_quality": 4, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 2, "comment_chain_links_commit": 5, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 2}, "node_count": 17, "node_types": {"repo": 1, "commit": 5, "thread": 1, "comment": 2, "fix_outcome": 1, "issue_chain": 1, "link_quality": 4, "comment_chain": 2}, "query_type": "motif_query", "thread_key": "timogilvie/wavemill#166", "issue_number": "166", "quality_tiers": {"unresolved": 1, "weak_supervision": 3}, "repo_full_name": "timogilvie/wavemill", "training_usage": "negative_or_unresolved", "source_motif_id": "graph-pattern-motif-thread-b8489a23035db802", "graph_gold_label": "weak_supervision_needs_review", "changed_file_labels": {}}, "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: timogilvie/wavemill\nThread: timogilvie/wavemill#166\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: timogilvie/wavemill\nThread: timogilvie/wavemill#166\nGraph gold label: weak_supervision_needs_review\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: timogilvie/wavemill#166\nRepo: timogilvie/wavemill\nIssue/PR number: 166\nGraph consistency label: weak_supervision_needs_review\nNodes: 17\nEdges: 21\nNode types: {'commit': 5, 'link_quality': 4, 'comment': 2, 'comment_chain': 2, 'thread': 1, 'repo': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'comment_chain_links_commit': 5, 'chain_has_link_quality': 4, 'thread_has_comment': 2, 'thread_has_comment_chain': 2, 'comment_has_chain': 2, 'issue_chain_has_comment_chain': 2, 'repo_has_thread': 1, 'thread_has_issue_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'verification_or_tests': 5, 'ambiguous_needs_more_evidence': 4, 'human_feedback_general': 2, 'thread_needs_classification': 2, 'issue_or_pull_request_thread': 1, 'comment_has_related_commit_context': 1, 'unlinked_human_feedback': 1}\nOutcomes: {'ambiguous_needs_more_evidence': 8}\nQuality tiers: {'weak_supervision': 3, '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/timogilvie/wavemill", "source_id": "graph-query-motif_query-49becdfcade400b6", "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": "timogilvie/wavemill", "source_dataset": "graph_queries/unresolved_feedback", "training_usage": "negative_or_unresolved"}}}, {"ruleId": "foundry_unresolved_feedback", "level": "warning", "message": {"text": "Foundry mined unresolved feedback: timogilvie/wavemill"}, "properties": {"repobilityId": 430236, "scanner": "foundry_dataset", "fingerprint": "4aefe755c9058cc3bfbc2c9c79b96ca16fb391cd7a1a3f5bf5baea186a1f6166", "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": {"data_schema": 1, "weak blueprint fit": 2, "partial blueprint fit": 1, "verification_or_tests": 7, "human_feedback_general": 2, "data_schema_persistence": 2, "unlinked_human_feedback": 2, "issue_or_pull_request_thread": 1, "ambiguous_needs_more_evidence": 5, "blueprint_human_gap_alignment": 6, "comment_has_related_commit_context": 1, "thread_has_human_issue_and_fix_context": 2, "claimed_resolved_with_verification_signal": 1, "human_reported_issue_then_verified_fix_attempt": 1}, "source": "graph_query_export", "motif_id": "unlinked_feedback_needs_evidence", "outcomes": {"ambiguous_needs_more_evidence": 10, "claimed_resolved_with_verification_signal": 2}, "polarity": "bad", "query_id": "unresolved_feedback", "severity": "medium", "ci_labels": {}, "synthetic": false, "edge_count": 59, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 4, "thread_has_comment": 4, "alignment_uses_comment": 6, "alignment_uses_finding": 6, "chain_has_link_quality": 12, "comment_aligns_finding": 6, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 4, "comment_chain_links_commit": 9, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 4}, "node_count": 41, "node_types": {"repo": 1, "commit": 8, "thread": 1, "comment": 4, "alignment": 6, "fix_outcome": 1, "issue_chain": 1, "link_quality": 12, "comment_chain": 4, "blueprint_finding": 3}, "query_type": "motif_query", "thread_key": "timogilvie/wavemill#164", "issue_number": "164", "quality_tiers": {"unresolved": 2, "assumption_check": 6, "weak_supervision": 4}, "repo_full_name": "timogilvie/wavemill", "training_usage": "negative_or_unresolved", "source_motif_id": "graph-pattern-motif-thread-537a7f9306ac934f", "graph_gold_label": "supported_by_verification_signal", "changed_file_labels": {}}, "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: timogilvie/wavemill\nThread: timogilvie/wavemill#164\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: timogilvie/wavemill\nThread: timogilvie/wavemill#164\nGraph gold label: supported_by_verification_signal\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: timogilvie/wavemill#164\nRepo: timogilvie/wavemill\nIssue/PR number: 164\nGraph consistency label: supported_by_verification_signal\nNodes: 41\nEdges: 59\nNode types: {'link_quality': 12, 'commit': 8, 'alignment': 6, 'comment': 4, 'comment_chain': 4, 'blueprint_finding': 3, 'thread': 1, 'repo': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'chain_has_link_quality': 12, 'comment_chain_links_commit': 9, 'alignment_uses_comment': 6, 'alignment_uses_finding': 6, 'comment_aligns_finding': 6, 'thread_has_comment': 4, 'thread_has_comment_chain': 4, 'comment_has_chain': 4, 'issue_chain_has_comment_chain': 4, 'repo_has_thread': 1, 'thread_has_issue_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'verification_or_tests': 7, 'blueprint_human_gap_alignment': 6, 'ambiguous_needs_more_evidence': 5, 'data_schema_persistence': 2, 'human_feedback_general': 2, 'unlinked_human_feedback': 2, 'thread_has_human_issue_and_fix_context': 2, 'weak blueprint fit': 2, 'issue_or_pull_request_thread': 1, 'comment_has_related_commit_context': 1, 'human_reported_issue_then_verified_fix_attempt': 1, 'data_schema': 1, 'claimed_resolved_with_verification_signal': 1, 'partial blueprint fit': 1}\nOutcomes: {'ambiguous_needs_more_evidence': 10, 'claimed_resolved_with_verification_signal': 2}\nQuality tiers: {'assumption_check': 6, 'weak_supervision': 4, 'unresolved': 2}\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/timogilvie/wavemill", "source_id": "graph-query-motif_query-28f59e821ca3382f", "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": "timogilvie/wavemill", "source_dataset": "graph_queries/unresolved_feedback", "training_usage": "negative_or_unresolved"}}}, {"ruleId": "foundry_unresolved_feedback", "level": "warning", "message": {"text": "Foundry mined unresolved feedback: timogilvie/wavemill"}, "properties": {"repobilityId": 430235, "scanner": "foundry_dataset", "fingerprint": "b4c5e1e96a129497812dae3da5602eb2650bf4e0c2efb30f6472411434fbb59f", "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": {"verification_or_tests": 1, "human_feedback_general": 2, "unlinked_human_feedback": 1, "thread_needs_classification": 2, "issue_or_pull_request_thread": 1, "ambiguous_needs_more_evidence": 4, "comment_has_related_commit_context": 1}, "source": "graph_query_export", "motif_id": "unlinked_feedback_needs_evidence", "outcomes": {"ambiguous_needs_more_evidence": 8}, "polarity": "bad", "query_id": "unresolved_feedback", "severity": "medium", "ci_labels": {}, "synthetic": false, "edge_count": 17, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 2, "thread_has_comment": 2, "chain_has_link_quality": 4, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 2, "comment_chain_links_commit": 1, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 2}, "node_count": 13, "node_types": {"repo": 1, "commit": 1, "thread": 1, "comment": 2, "fix_outcome": 1, "issue_chain": 1, "link_quality": 4, "comment_chain": 2}, "query_type": "motif_query", "thread_key": "timogilvie/wavemill#158", "issue_number": "158", "quality_tiers": {"unresolved": 1, "weak_supervision": 3}, "repo_full_name": "timogilvie/wavemill", "training_usage": "negative_or_unresolved", "source_motif_id": "graph-pattern-motif-thread-548a11cedf368e89", "graph_gold_label": "weak_supervision_needs_review", "changed_file_labels": {}}, "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: timogilvie/wavemill\nThread: timogilvie/wavemill#158\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: timogilvie/wavemill\nThread: timogilvie/wavemill#158\nGraph gold label: weak_supervision_needs_review\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: timogilvie/wavemill#158\nRepo: timogilvie/wavemill\nIssue/PR number: 158\nGraph consistency label: weak_supervision_needs_review\nNodes: 13\nEdges: 17\nNode types: {'link_quality': 4, 'comment': 2, 'comment_chain': 2, 'thread': 1, 'repo': 1, 'commit': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'chain_has_link_quality': 4, 'thread_has_comment': 2, 'thread_has_comment_chain': 2, 'comment_has_chain': 2, 'issue_chain_has_comment_chain': 2, 'repo_has_thread': 1, 'comment_chain_links_commit': 1, 'thread_has_issue_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'ambiguous_needs_more_evidence': 4, 'human_feedback_general': 2, 'thread_needs_classification': 2, 'issue_or_pull_request_thread': 1, 'comment_has_related_commit_context': 1, 'verification_or_tests': 1, 'unlinked_human_feedback': 1}\nOutcomes: {'ambiguous_needs_more_evidence': 8}\nQuality tiers: {'weak_supervision': 3, '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/timogilvie/wavemill", "source_id": "graph-query-motif_query-0523806fae050fde", "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": "timogilvie/wavemill", "source_dataset": "graph_queries/unresolved_feedback", "training_usage": "negative_or_unresolved"}}}, {"ruleId": "foundry_unresolved_feedback", "level": "warning", "message": {"text": "Foundry mined unresolved feedback: timogilvie/wavemill"}, "properties": {"repobilityId": 430234, "scanner": "foundry_dataset", "fingerprint": "497625884e9c27e31143a49ec583436064244b4e9250fadf583383613ab42150", "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": {"human_feedback_general": 1, "unlinked_human_feedback": 1, "thread_needs_classification": 2, "issue_or_pull_request_thread": 1, "ambiguous_needs_more_evidence": 3}, "source": "graph_query_export", "motif_id": "unlinked_feedback_needs_evidence", "outcomes": {"ambiguous_needs_more_evidence": 6}, "polarity": "bad", "query_id": "unresolved_feedback", "severity": "medium", "ci_labels": {}, "synthetic": false, "edge_count": 11, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 1, "thread_has_comment": 1, "chain_has_link_quality": 3, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 1, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 1}, "node_count": 9, "node_types": {"repo": 1, "thread": 1, "comment": 1, "fix_outcome": 1, "issue_chain": 1, "link_quality": 3, "comment_chain": 1}, "query_type": "motif_query", "thread_key": "timogilvie/wavemill#154", "issue_number": "154", "quality_tiers": {"unresolved": 3}, "repo_full_name": "timogilvie/wavemill", "training_usage": "negative_or_unresolved", "source_motif_id": "graph-pattern-motif-thread-410a269454e074f8", "graph_gold_label": "needs_more_evidence", "changed_file_labels": {}}, "text": "Graph query export: Human feedback without linked fix evidence\nQuery id: unresolved_feedback\nQuery type: motif_query\nIntent: Negative/unresolved examples that should not be hallucinated into fixes.\nMotif: unlinked_feedback_needs_evidence\nTraining usage: negative_or_unresolved\nGraph gold label: needs_more_evidence\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#154\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: timogilvie/wavemill\nThread: timogilvie/wavemill#154\nGraph gold label: needs_more_evidence\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: timogilvie/wavemill#154\nRepo: timogilvie/wavemill\nIssue/PR number: 154\nGraph consistency label: needs_more_evidence\nNodes: 9\nEdges: 11\nNode types: {'link_quality': 3, 'thread': 1, 'repo': 1, 'comment': 1, 'comment_chain': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'chain_has_link_quality': 3, 'repo_has_thread': 1, 'thread_has_comment': 1, 'thread_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: {'ambiguous_needs_more_evidence': 3, 'thread_needs_classification': 2, 'issue_or_pull_request_thread': 1, 'human_feedback_general': 1, 'unlinked_human_feedback': 1}\nOutcomes: {'ambiguous_needs_more_evidence': 6}\nQuality tiers: {'unresolved': 3}\nCI labels: {}\nCurriculum targets:\n- Teach models to preserve unresolved human feedback instead of hallucinating fixes.\n- Build issue-to-regression examples where no accepted fix exists yet.\nAssumption checks:\n- Can a commit be linked by issue number, SHA, changed path, or time window?\n- If no link exists, is this explicitly labelled unresolved?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/timogilvie/wavemill", "source_id": "graph-query-motif_query-7917edf4dd43970a", "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": "timogilvie/wavemill", "source_dataset": "graph_queries/unresolved_feedback", "training_usage": "negative_or_unresolved"}}}, {"ruleId": "foundry_unresolved_feedback", "level": "warning", "message": {"text": "Foundry mined unresolved feedback: timogilvie/wavemill"}, "properties": {"repobilityId": 430233, "scanner": "foundry_dataset", "fingerprint": "9d7b8025888085e3daf7e1b9bcdbc921117f6412a3c3e0e4bc2baa24b9ebd74c", "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": {"human_feedback_general": 1, "unlinked_human_feedback": 1, "thread_needs_classification": 2, "issue_or_pull_request_thread": 1, "ambiguous_needs_more_evidence": 3}, "source": "graph_query_export", "motif_id": "unlinked_feedback_needs_evidence", "outcomes": {"ambiguous_needs_more_evidence": 6}, "polarity": "bad", "query_id": "unresolved_feedback", "severity": "medium", "ci_labels": {}, "synthetic": false, "edge_count": 11, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 1, "thread_has_comment": 1, "chain_has_link_quality": 3, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 1, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 1}, "node_count": 9, "node_types": {"repo": 1, "thread": 1, "comment": 1, "fix_outcome": 1, "issue_chain": 1, "link_quality": 3, "comment_chain": 1}, "query_type": "motif_query", "thread_key": "timogilvie/wavemill#151", "issue_number": "151", "quality_tiers": {"unresolved": 3}, "repo_full_name": "timogilvie/wavemill", "training_usage": "negative_or_unresolved", "source_motif_id": "graph-pattern-motif-thread-0233cbb1ba848865", "graph_gold_label": "needs_more_evidence", "changed_file_labels": {}}, "text": "Graph query export: Human feedback without linked fix evidence\nQuery id: unresolved_feedback\nQuery type: motif_query\nIntent: Negative/unresolved examples that should not be hallucinated into fixes.\nMotif: unlinked_feedback_needs_evidence\nTraining usage: negative_or_unresolved\nGraph gold label: needs_more_evidence\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#151\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: timogilvie/wavemill\nThread: timogilvie/wavemill#151\nGraph gold label: needs_more_evidence\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: timogilvie/wavemill#151\nRepo: timogilvie/wavemill\nIssue/PR number: 151\nGraph consistency label: needs_more_evidence\nNodes: 9\nEdges: 11\nNode types: {'link_quality': 3, 'thread': 1, 'repo': 1, 'comment': 1, 'comment_chain': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'chain_has_link_quality': 3, 'repo_has_thread': 1, 'thread_has_comment': 1, 'thread_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: {'ambiguous_needs_more_evidence': 3, 'thread_needs_classification': 2, 'issue_or_pull_request_thread': 1, 'human_feedback_general': 1, 'unlinked_human_feedback': 1}\nOutcomes: {'ambiguous_needs_more_evidence': 6}\nQuality tiers: {'unresolved': 3}\nCI labels: {}\nCurriculum targets:\n- Teach models to preserve unresolved human feedback instead of hallucinating fixes.\n- Build issue-to-regression examples where no accepted fix exists yet.\nAssumption checks:\n- Can a commit be linked by issue number, SHA, changed path, or time window?\n- If no link exists, is this explicitly labelled unresolved?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/timogilvie/wavemill", "source_id": "graph-query-motif_query-55259cfd0279ef18", "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": "timogilvie/wavemill", "source_dataset": "graph_queries/unresolved_feedback", "training_usage": "negative_or_unresolved"}}}, {"ruleId": "foundry_unresolved_feedback", "level": "warning", "message": {"text": "Foundry mined unresolved feedback: timogilvie/wavemill"}, "properties": {"repobilityId": 430232, "scanner": "foundry_dataset", "fingerprint": "025cb5a014cc6b3b9481b1813201f3c5dfa9fa9f6f1f977108dea266c4540912", "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": {"agent_instruction_gap": 1, "issue_or_pull_request_thread": 1, "not_resolved_or_not_observed": 3, "human_reported_issue_no_linked_fix": 1, "thread_has_human_issue_without_fix_context": 2}, "source": "graph_query_export", "motif_id": "unlinked_feedback_needs_evidence", "outcomes": {"not_resolved_or_not_observed": 6}, "polarity": "bad", "query_id": "unresolved_feedback", "severity": "medium", "ci_labels": {}, "synthetic": false, "edge_count": 11, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 1, "thread_has_comment": 1, "chain_has_link_quality": 3, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 1, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 1}, "node_count": 9, "node_types": {"repo": 1, "thread": 1, "comment": 1, "fix_outcome": 1, "issue_chain": 1, "link_quality": 3, "comment_chain": 1}, "query_type": "motif_query", "thread_key": "timogilvie/wavemill#149", "issue_number": "149", "quality_tiers": {"unresolved": 3}, "repo_full_name": "timogilvie/wavemill", "training_usage": "negative_or_unresolved", "source_motif_id": "graph-pattern-motif-thread-c895bdf355696b4e", "graph_gold_label": "needs_more_evidence", "changed_file_labels": {}}, "text": "Graph query export: Human feedback without linked fix evidence\nQuery id: unresolved_feedback\nQuery type: motif_query\nIntent: Negative/unresolved examples that should not be hallucinated into fixes.\nMotif: unlinked_feedback_needs_evidence\nTraining usage: negative_or_unresolved\nGraph gold label: needs_more_evidence\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#149\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: timogilvie/wavemill\nThread: timogilvie/wavemill#149\nGraph gold label: needs_more_evidence\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: timogilvie/wavemill#149\nRepo: timogilvie/wavemill\nIssue/PR number: 149\nGraph consistency label: needs_more_evidence\nNodes: 9\nEdges: 11\nNode types: {'link_quality': 3, 'thread': 1, 'repo': 1, 'comment': 1, 'comment_chain': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'chain_has_link_quality': 3, 'repo_has_thread': 1, 'thread_has_comment': 1, 'thread_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: {'not_resolved_or_not_observed': 3, 'thread_has_human_issue_without_fix_context': 2, 'issue_or_pull_request_thread': 1, 'agent_instruction_gap': 1, 'human_reported_issue_no_linked_fix': 1}\nOutcomes: {'not_resolved_or_not_observed': 6}\nQuality tiers: {'unresolved': 3}\nCI labels: {}\nCurriculum targets:\n- Teach models to preserve unresolved human feedback instead of hallucinating fixes.\n- Build issue-to-regression examples where no accepted fix exists yet.\nAssumption checks:\n- Can a commit be linked by issue number, SHA, changed path, or time window?\n- If no link exists, is this explicitly labelled unresolved?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/timogilvie/wavemill", "source_id": "graph-query-motif_query-82fed9362f805bd3", "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": "timogilvie/wavemill", "source_dataset": "graph_queries/unresolved_feedback", "training_usage": "negative_or_unresolved"}}}, {"ruleId": "foundry_unresolved_feedback", "level": "warning", "message": {"text": "Foundry mined unresolved feedback: timogilvie/wavemill"}, "properties": {"repobilityId": 430231, "scanner": "foundry_dataset", "fingerprint": "b761414b3d0e58ed0974e94010cc1179000be25c126ce790d85ccb823be88b6f", "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": {"mock_placeholder": 1, "issue_or_pull_request_thread": 1, "not_resolved_or_not_observed": 3, "human_reported_issue_no_linked_fix": 1, "thread_has_human_issue_without_fix_context": 2}, "source": "graph_query_export", "motif_id": "unlinked_feedback_needs_evidence", "outcomes": {"not_resolved_or_not_observed": 6}, "polarity": "bad", "query_id": "unresolved_feedback", "severity": "medium", "ci_labels": {}, "synthetic": false, "edge_count": 11, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 1, "thread_has_comment": 1, "chain_has_link_quality": 3, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 1, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 1}, "node_count": 9, "node_types": {"repo": 1, "thread": 1, "comment": 1, "fix_outcome": 1, "issue_chain": 1, "link_quality": 3, "comment_chain": 1}, "query_type": "motif_query", "thread_key": "timogilvie/wavemill#145", "issue_number": "145", "quality_tiers": {"unresolved": 3}, "repo_full_name": "timogilvie/wavemill", "training_usage": "negative_or_unresolved", "source_motif_id": "graph-pattern-motif-thread-152b6fe34ed6a58a", "graph_gold_label": "needs_more_evidence", "changed_file_labels": {}}, "text": "Graph query export: Human feedback without linked fix evidence\nQuery id: unresolved_feedback\nQuery type: motif_query\nIntent: Negative/unresolved examples that should not be hallucinated into fixes.\nMotif: unlinked_feedback_needs_evidence\nTraining usage: negative_or_unresolved\nGraph gold label: needs_more_evidence\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#145\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: timogilvie/wavemill\nThread: timogilvie/wavemill#145\nGraph gold label: needs_more_evidence\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: timogilvie/wavemill#145\nRepo: timogilvie/wavemill\nIssue/PR number: 145\nGraph consistency label: needs_more_evidence\nNodes: 9\nEdges: 11\nNode types: {'link_quality': 3, 'thread': 1, 'repo': 1, 'comment': 1, 'comment_chain': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'chain_has_link_quality': 3, 'repo_has_thread': 1, 'thread_has_comment': 1, 'thread_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: {'not_resolved_or_not_observed': 3, 'thread_has_human_issue_without_fix_context': 2, 'issue_or_pull_request_thread': 1, 'mock_placeholder': 1, 'human_reported_issue_no_linked_fix': 1}\nOutcomes: {'not_resolved_or_not_observed': 6}\nQuality tiers: {'unresolved': 3}\nCI labels: {}\nCurriculum targets:\n- Teach models to preserve unresolved human feedback instead of hallucinating fixes.\n- Build issue-to-regression examples where no accepted fix exists yet.\nAssumption checks:\n- Can a commit be linked by issue number, SHA, changed path, or time window?\n- If no link exists, is this explicitly labelled unresolved?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/timogilvie/wavemill", "source_id": "graph-query-motif_query-d322a300b02bd00e", "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": "timogilvie/wavemill", "source_dataset": "graph_queries/unresolved_feedback", "training_usage": "negative_or_unresolved"}}}, {"ruleId": "foundry_unresolved_feedback", "level": "warning", "message": {"text": "Foundry mined unresolved feedback: timogilvie/wavemill"}, "properties": {"repobilityId": 430230, "scanner": "foundry_dataset", "fingerprint": "405456591b4e2a918ee7fa0ab5f24b04d31bb6a89786a15b037471968767120c", "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": {"agent_instruction_gap": 1, "issue_or_pull_request_thread": 1, "not_resolved_or_not_observed": 3, "human_reported_issue_no_linked_fix": 1, "thread_has_human_issue_without_fix_context": 2}, "source": "graph_query_export", "motif_id": "unlinked_feedback_needs_evidence", "outcomes": {"not_resolved_or_not_observed": 6}, "polarity": "bad", "query_id": "unresolved_feedback", "severity": "medium", "ci_labels": {}, "synthetic": false, "edge_count": 11, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 1, "thread_has_comment": 1, "chain_has_link_quality": 3, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 1, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 1}, "node_count": 9, "node_types": {"repo": 1, "thread": 1, "comment": 1, "fix_outcome": 1, "issue_chain": 1, "link_quality": 3, "comment_chain": 1}, "query_type": "motif_query", "thread_key": "timogilvie/wavemill#144", "issue_number": "144", "quality_tiers": {"unresolved": 3}, "repo_full_name": "timogilvie/wavemill", "training_usage": "negative_or_unresolved", "source_motif_id": "graph-pattern-motif-thread-c87225e854e6727e", "graph_gold_label": "needs_more_evidence", "changed_file_labels": {}}, "text": "Graph query export: Human feedback without linked fix evidence\nQuery id: unresolved_feedback\nQuery type: motif_query\nIntent: Negative/unresolved examples that should not be hallucinated into fixes.\nMotif: unlinked_feedback_needs_evidence\nTraining usage: negative_or_unresolved\nGraph gold label: needs_more_evidence\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#144\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: timogilvie/wavemill\nThread: timogilvie/wavemill#144\nGraph gold label: needs_more_evidence\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: timogilvie/wavemill#144\nRepo: timogilvie/wavemill\nIssue/PR number: 144\nGraph consistency label: needs_more_evidence\nNodes: 9\nEdges: 11\nNode types: {'link_quality': 3, 'thread': 1, 'repo': 1, 'comment': 1, 'comment_chain': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'chain_has_link_quality': 3, 'repo_has_thread': 1, 'thread_has_comment': 1, 'thread_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: {'not_resolved_or_not_observed': 3, 'thread_has_human_issue_without_fix_context': 2, 'issue_or_pull_request_thread': 1, 'agent_instruction_gap': 1, 'human_reported_issue_no_linked_fix': 1}\nOutcomes: {'not_resolved_or_not_observed': 6}\nQuality tiers: {'unresolved': 3}\nCI labels: {}\nCurriculum targets:\n- Teach models to preserve unresolved human feedback instead of hallucinating fixes.\n- Build issue-to-regression examples where no accepted fix exists yet.\nAssumption checks:\n- Can a commit be linked by issue number, SHA, changed path, or time window?\n- If no link exists, is this explicitly labelled unresolved?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/timogilvie/wavemill", "source_id": "graph-query-motif_query-0ef829004ff8c4f1", "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": "timogilvie/wavemill", "source_dataset": "graph_queries/unresolved_feedback", "training_usage": "negative_or_unresolved"}}}, {"ruleId": "foundry_unresolved_feedback", "level": "warning", "message": {"text": "Foundry mined unresolved feedback: timogilvie/wavemill"}, "properties": {"repobilityId": 430229, "scanner": "foundry_dataset", "fingerprint": "7893e857c525ea2c5122def346997b12625054ad10a02c87ab138634c204f242", "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": {"human_feedback_general": 1, "unlinked_human_feedback": 1, "thread_needs_classification": 2, "issue_or_pull_request_thread": 1, "ambiguous_needs_more_evidence": 3}, "source": "graph_query_export", "motif_id": "unlinked_feedback_needs_evidence", "outcomes": {"ambiguous_needs_more_evidence": 6}, "polarity": "bad", "query_id": "unresolved_feedback", "severity": "medium", "ci_labels": {}, "synthetic": false, "edge_count": 11, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 1, "thread_has_comment": 1, "chain_has_link_quality": 3, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 1, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 1}, "node_count": 9, "node_types": {"repo": 1, "thread": 1, "comment": 1, "fix_outcome": 1, "issue_chain": 1, "link_quality": 3, "comment_chain": 1}, "query_type": "motif_query", "thread_key": "timogilvie/wavemill#142", "issue_number": "142", "quality_tiers": {"unresolved": 3}, "repo_full_name": "timogilvie/wavemill", "training_usage": "negative_or_unresolved", "source_motif_id": "graph-pattern-motif-thread-daab2ee10a56fdf4", "graph_gold_label": "needs_more_evidence", "changed_file_labels": {}}, "text": "Graph query export: Human feedback without linked fix evidence\nQuery id: unresolved_feedback\nQuery type: motif_query\nIntent: Negative/unresolved examples that should not be hallucinated into fixes.\nMotif: unlinked_feedback_needs_evidence\nTraining usage: negative_or_unresolved\nGraph gold label: needs_more_evidence\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#142\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: timogilvie/wavemill\nThread: timogilvie/wavemill#142\nGraph gold label: needs_more_evidence\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: timogilvie/wavemill#142\nRepo: timogilvie/wavemill\nIssue/PR number: 142\nGraph consistency label: needs_more_evidence\nNodes: 9\nEdges: 11\nNode types: {'link_quality': 3, 'thread': 1, 'repo': 1, 'comment': 1, 'comment_chain': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'chain_has_link_quality': 3, 'repo_has_thread': 1, 'thread_has_comment': 1, 'thread_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: {'ambiguous_needs_more_evidence': 3, 'thread_needs_classification': 2, 'issue_or_pull_request_thread': 1, 'human_feedback_general': 1, 'unlinked_human_feedback': 1}\nOutcomes: {'ambiguous_needs_more_evidence': 6}\nQuality tiers: {'unresolved': 3}\nCI labels: {}\nCurriculum targets:\n- Teach models to preserve unresolved human feedback instead of hallucinating fixes.\n- Build issue-to-regression examples where no accepted fix exists yet.\nAssumption checks:\n- Can a commit be linked by issue number, SHA, changed path, or time window?\n- If no link exists, is this explicitly labelled unresolved?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/timogilvie/wavemill", "source_id": "graph-query-motif_query-b4db855dec273736", "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": "timogilvie/wavemill", "source_dataset": "graph_queries/unresolved_feedback", "training_usage": "negative_or_unresolved"}}}, {"ruleId": "foundry_unresolved_feedback", "level": "warning", "message": {"text": "Foundry mined unresolved feedback: timogilvie/wavemill"}, "properties": {"repobilityId": 430228, "scanner": "foundry_dataset", "fingerprint": "ce6f5ce555065e30ba5f8691404dfc525cbde887705e9807b4ea89f3ac672f3d", "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": {"agent_instruction_gap": 1, "issue_or_pull_request_thread": 1, "not_resolved_or_not_observed": 3, "human_reported_issue_no_linked_fix": 1, "thread_has_human_issue_without_fix_context": 2}, "source": "graph_query_export", "motif_id": "unlinked_feedback_needs_evidence", "outcomes": {"not_resolved_or_not_observed": 6}, "polarity": "bad", "query_id": "unresolved_feedback", "severity": "medium", "ci_labels": {}, "synthetic": false, "edge_count": 11, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 1, "thread_has_comment": 1, "chain_has_link_quality": 3, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 1, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 1}, "node_count": 9, "node_types": {"repo": 1, "thread": 1, "comment": 1, "fix_outcome": 1, "issue_chain": 1, "link_quality": 3, "comment_chain": 1}, "query_type": "motif_query", "thread_key": "timogilvie/wavemill#135", "issue_number": "135", "quality_tiers": {"unresolved": 3}, "repo_full_name": "timogilvie/wavemill", "training_usage": "negative_or_unresolved", "source_motif_id": "graph-pattern-motif-thread-c07b7a9eb9562cb2", "graph_gold_label": "needs_more_evidence", "changed_file_labels": {}}, "text": "Graph query export: Human feedback without linked fix evidence\nQuery id: unresolved_feedback\nQuery type: motif_query\nIntent: Negative/unresolved examples that should not be hallucinated into fixes.\nMotif: unlinked_feedback_needs_evidence\nTraining usage: negative_or_unresolved\nGraph gold label: needs_more_evidence\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#135\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: timogilvie/wavemill\nThread: timogilvie/wavemill#135\nGraph gold label: needs_more_evidence\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: timogilvie/wavemill#135\nRepo: timogilvie/wavemill\nIssue/PR number: 135\nGraph consistency label: needs_more_evidence\nNodes: 9\nEdges: 11\nNode types: {'link_quality': 3, 'thread': 1, 'repo': 1, 'comment': 1, 'comment_chain': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'chain_has_link_quality': 3, 'repo_has_thread': 1, 'thread_has_comment': 1, 'thread_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: {'not_resolved_or_not_observed': 3, 'thread_has_human_issue_without_fix_context': 2, 'issue_or_pull_request_thread': 1, 'agent_instruction_gap': 1, 'human_reported_issue_no_linked_fix': 1}\nOutcomes: {'not_resolved_or_not_observed': 6}\nQuality tiers: {'unresolved': 3}\nCI labels: {}\nCurriculum targets:\n- Teach models to preserve unresolved human feedback instead of hallucinating fixes.\n- Build issue-to-regression examples where no accepted fix exists yet.\nAssumption checks:\n- Can a commit be linked by issue number, SHA, changed path, or time window?\n- If no link exists, is this explicitly labelled unresolved?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/timogilvie/wavemill", "source_id": "graph-query-motif_query-1155b1dc5cc33dd7", "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": "timogilvie/wavemill", "source_dataset": "graph_queries/unresolved_feedback", "training_usage": "negative_or_unresolved"}}}, {"ruleId": "foundry_unresolved_feedback", "level": "warning", "message": {"text": "Foundry mined unresolved feedback: timogilvie/wavemill"}, "properties": {"repobilityId": 430227, "scanner": "foundry_dataset", "fingerprint": "44d231f76f7bec2763776be2e5417987c5007469b6b4c981b4a9c7f8dc4dd8f9", "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": {"agent_instruction_gap": 1, "issue_or_pull_request_thread": 1, "not_resolved_or_not_observed": 3, "human_reported_issue_no_linked_fix": 1, "thread_has_human_issue_without_fix_context": 2}, "source": "graph_query_export", "motif_id": "unlinked_feedback_needs_evidence", "outcomes": {"not_resolved_or_not_observed": 6}, "polarity": "bad", "query_id": "unresolved_feedback", "severity": "medium", "ci_labels": {}, "synthetic": false, "edge_count": 11, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 1, "thread_has_comment": 1, "chain_has_link_quality": 3, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 1, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 1}, "node_count": 9, "node_types": {"repo": 1, "thread": 1, "comment": 1, "fix_outcome": 1, "issue_chain": 1, "link_quality": 3, "comment_chain": 1}, "query_type": "motif_query", "thread_key": "timogilvie/wavemill#126", "issue_number": "126", "quality_tiers": {"unresolved": 3}, "repo_full_name": "timogilvie/wavemill", "training_usage": "negative_or_unresolved", "source_motif_id": "graph-pattern-motif-thread-41902bf47659c78e", "graph_gold_label": "needs_more_evidence", "changed_file_labels": {}}, "text": "Graph query export: Human feedback without linked fix evidence\nQuery id: unresolved_feedback\nQuery type: motif_query\nIntent: Negative/unresolved examples that should not be hallucinated into fixes.\nMotif: unlinked_feedback_needs_evidence\nTraining usage: negative_or_unresolved\nGraph gold label: needs_more_evidence\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#126\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: timogilvie/wavemill\nThread: timogilvie/wavemill#126\nGraph gold label: needs_more_evidence\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: timogilvie/wavemill#126\nRepo: timogilvie/wavemill\nIssue/PR number: 126\nGraph consistency label: needs_more_evidence\nNodes: 9\nEdges: 11\nNode types: {'link_quality': 3, 'thread': 1, 'repo': 1, 'comment': 1, 'comment_chain': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'chain_has_link_quality': 3, 'repo_has_thread': 1, 'thread_has_comment': 1, 'thread_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: {'not_resolved_or_not_observed': 3, 'thread_has_human_issue_without_fix_context': 2, 'issue_or_pull_request_thread': 1, 'agent_instruction_gap': 1, 'human_reported_issue_no_linked_fix': 1}\nOutcomes: {'not_resolved_or_not_observed': 6}\nQuality tiers: {'unresolved': 3}\nCI labels: {}\nCurriculum targets:\n- Teach models to preserve unresolved human feedback instead of hallucinating fixes.\n- Build issue-to-regression examples where no accepted fix exists yet.\nAssumption checks:\n- Can a commit be linked by issue number, SHA, changed path, or time window?\n- If no link exists, is this explicitly labelled unresolved?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/timogilvie/wavemill", "source_id": "graph-query-motif_query-5675e4a0ba7116f3", "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": "timogilvie/wavemill", "source_dataset": "graph_queries/unresolved_feedback", "training_usage": "negative_or_unresolved"}}}, {"ruleId": "foundry_unresolved_feedback", "level": "warning", "message": {"text": "Foundry mined unresolved feedback: timogilvie/wavemill"}, "properties": {"repobilityId": 430226, "scanner": "foundry_dataset", "fingerprint": "eb442192eeee5edb98d899d6475228a21c7cbae779241c6149c380ee2b4789dd", "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": {"human_feedback_general": 1, "unlinked_human_feedback": 1, "thread_needs_classification": 2, "issue_or_pull_request_thread": 1, "ambiguous_needs_more_evidence": 3}, "source": "graph_query_export", "motif_id": "unlinked_feedback_needs_evidence", "outcomes": {"ambiguous_needs_more_evidence": 6}, "polarity": "bad", "query_id": "unresolved_feedback", "severity": "medium", "ci_labels": {}, "synthetic": false, "edge_count": 11, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 1, "thread_has_comment": 1, "chain_has_link_quality": 3, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 1, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 1}, "node_count": 9, "node_types": {"repo": 1, "thread": 1, "comment": 1, "fix_outcome": 1, "issue_chain": 1, "link_quality": 3, "comment_chain": 1}, "query_type": "motif_query", "thread_key": "timogilvie/wavemill#119", "issue_number": "119", "quality_tiers": {"unresolved": 3}, "repo_full_name": "timogilvie/wavemill", "training_usage": "negative_or_unresolved", "source_motif_id": "graph-pattern-motif-thread-29507c1e60c21a19", "graph_gold_label": "needs_more_evidence", "changed_file_labels": {}}, "text": "Graph query export: Human feedback without linked fix evidence\nQuery id: unresolved_feedback\nQuery type: motif_query\nIntent: Negative/unresolved examples that should not be hallucinated into fixes.\nMotif: unlinked_feedback_needs_evidence\nTraining usage: negative_or_unresolved\nGraph gold label: needs_more_evidence\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#119\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: timogilvie/wavemill\nThread: timogilvie/wavemill#119\nGraph gold label: needs_more_evidence\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: timogilvie/wavemill#119\nRepo: timogilvie/wavemill\nIssue/PR number: 119\nGraph consistency label: needs_more_evidence\nNodes: 9\nEdges: 11\nNode types: {'link_quality': 3, 'thread': 1, 'repo': 1, 'comment': 1, 'comment_chain': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'chain_has_link_quality': 3, 'repo_has_thread': 1, 'thread_has_comment': 1, 'thread_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: {'ambiguous_needs_more_evidence': 3, 'thread_needs_classification': 2, 'issue_or_pull_request_thread': 1, 'human_feedback_general': 1, 'unlinked_human_feedback': 1}\nOutcomes: {'ambiguous_needs_more_evidence': 6}\nQuality tiers: {'unresolved': 3}\nCI labels: {}\nCurriculum targets:\n- Teach models to preserve unresolved human feedback instead of hallucinating fixes.\n- Build issue-to-regression examples where no accepted fix exists yet.\nAssumption checks:\n- Can a commit be linked by issue number, SHA, changed path, or time window?\n- If no link exists, is this explicitly labelled unresolved?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/timogilvie/wavemill", "source_id": "graph-query-motif_query-945c07e23cd22a52", "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": "timogilvie/wavemill", "source_dataset": "graph_queries/unresolved_feedback", "training_usage": "negative_or_unresolved"}}}, {"ruleId": "foundry_unresolved_feedback", "level": "warning", "message": {"text": "Foundry mined unresolved feedback: timogilvie/wavemill"}, "properties": {"repobilityId": 430225, "scanner": "foundry_dataset", "fingerprint": "856846b08dac3c59566294a098bcf8b866804716231fc78fc9e813f090afd48b", "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": {"agent_instruction_gap": 1, "issue_or_pull_request_thread": 1, "not_resolved_or_not_observed": 3, "human_reported_issue_no_linked_fix": 1, "thread_has_human_issue_without_fix_context": 2}, "source": "graph_query_export", "motif_id": "unlinked_feedback_needs_evidence", "outcomes": {"not_resolved_or_not_observed": 6}, "polarity": "bad", "query_id": "unresolved_feedback", "severity": "medium", "ci_labels": {}, "synthetic": false, "edge_count": 11, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 1, "thread_has_comment": 1, "chain_has_link_quality": 3, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 1, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 1}, "node_count": 9, "node_types": {"repo": 1, "thread": 1, "comment": 1, "fix_outcome": 1, "issue_chain": 1, "link_quality": 3, "comment_chain": 1}, "query_type": "motif_query", "thread_key": "timogilvie/wavemill#117", "issue_number": "117", "quality_tiers": {"unresolved": 3}, "repo_full_name": "timogilvie/wavemill", "training_usage": "negative_or_unresolved", "source_motif_id": "graph-pattern-motif-thread-4e057163b43f353e", "graph_gold_label": "needs_more_evidence", "changed_file_labels": {}}, "text": "Graph query export: Human feedback without linked fix evidence\nQuery id: unresolved_feedback\nQuery type: motif_query\nIntent: Negative/unresolved examples that should not be hallucinated into fixes.\nMotif: unlinked_feedback_needs_evidence\nTraining usage: negative_or_unresolved\nGraph gold label: needs_more_evidence\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#117\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: timogilvie/wavemill\nThread: timogilvie/wavemill#117\nGraph gold label: needs_more_evidence\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: timogilvie/wavemill#117\nRepo: timogilvie/wavemill\nIssue/PR number: 117\nGraph consistency label: needs_more_evidence\nNodes: 9\nEdges: 11\nNode types: {'link_quality': 3, 'thread': 1, 'repo': 1, 'comment': 1, 'comment_chain': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'chain_has_link_quality': 3, 'repo_has_thread': 1, 'thread_has_comment': 1, 'thread_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: {'not_resolved_or_not_observed': 3, 'thread_has_human_issue_without_fix_context': 2, 'issue_or_pull_request_thread': 1, 'agent_instruction_gap': 1, 'human_reported_issue_no_linked_fix': 1}\nOutcomes: {'not_resolved_or_not_observed': 6}\nQuality tiers: {'unresolved': 3}\nCI labels: {}\nCurriculum targets:\n- Teach models to preserve unresolved human feedback instead of hallucinating fixes.\n- Build issue-to-regression examples where no accepted fix exists yet.\nAssumption checks:\n- Can a commit be linked by issue number, SHA, changed path, or time window?\n- If no link exists, is this explicitly labelled unresolved?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/timogilvie/wavemill", "source_id": "graph-query-motif_query-a03c5238c1d6a1f7", "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": "timogilvie/wavemill", "source_dataset": "graph_queries/unresolved_feedback", "training_usage": "negative_or_unresolved"}}}, {"ruleId": "foundry_unresolved_feedback", "level": "warning", "message": {"text": "Foundry mined unresolved feedback: timogilvie/wavemill"}, "properties": {"repobilityId": 430224, "scanner": "foundry_dataset", "fingerprint": "4ed71c0257d9f9ffd37142d9ca74d987c363f55811fc6df20a5f35b4231501a8", "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": {"security_auth_secret": 1, "issue_or_pull_request_thread": 1, "not_resolved_or_not_observed": 3, "human_reported_issue_no_linked_fix": 1, "thread_has_human_issue_without_fix_context": 2}, "source": "graph_query_export", "motif_id": "unlinked_feedback_needs_evidence", "outcomes": {"not_resolved_or_not_observed": 6}, "polarity": "bad", "query_id": "unresolved_feedback", "severity": "medium", "ci_labels": {}, "synthetic": false, "edge_count": 11, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 1, "thread_has_comment": 1, "chain_has_link_quality": 3, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 1, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 1}, "node_count": 9, "node_types": {"repo": 1, "thread": 1, "comment": 1, "fix_outcome": 1, "issue_chain": 1, "link_quality": 3, "comment_chain": 1}, "query_type": "motif_query", "thread_key": "timogilvie/wavemill#115", "issue_number": "115", "quality_tiers": {"unresolved": 3}, "repo_full_name": "timogilvie/wavemill", "training_usage": "negative_or_unresolved", "source_motif_id": "graph-pattern-motif-thread-5ec228e957296453", "graph_gold_label": "needs_more_evidence", "changed_file_labels": {}}, "text": "Graph query export: Human feedback without linked fix evidence\nQuery id: unresolved_feedback\nQuery type: motif_query\nIntent: Negative/unresolved examples that should not be hallucinated into fixes.\nMotif: unlinked_feedback_needs_evidence\nTraining usage: negative_or_unresolved\nGraph gold label: needs_more_evidence\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#115\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: timogilvie/wavemill\nThread: timogilvie/wavemill#115\nGraph gold label: needs_more_evidence\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: timogilvie/wavemill#115\nRepo: timogilvie/wavemill\nIssue/PR number: 115\nGraph consistency label: needs_more_evidence\nNodes: 9\nEdges: 11\nNode types: {'link_quality': 3, 'thread': 1, 'repo': 1, 'comment': 1, 'comment_chain': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'chain_has_link_quality': 3, 'repo_has_thread': 1, 'thread_has_comment': 1, 'thread_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: {'not_resolved_or_not_observed': 3, 'thread_has_human_issue_without_fix_context': 2, 'issue_or_pull_request_thread': 1, 'security_auth_secret': 1, 'human_reported_issue_no_linked_fix': 1}\nOutcomes: {'not_resolved_or_not_observed': 6}\nQuality tiers: {'unresolved': 3}\nCI labels: {}\nCurriculum targets:\n- Teach models to preserve unresolved human feedback instead of hallucinating fixes.\n- Build issue-to-regression examples where no accepted fix exists yet.\nAssumption checks:\n- Can a commit be linked by issue number, SHA, changed path, or time window?\n- If no link exists, is this explicitly labelled unresolved?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/timogilvie/wavemill", "source_id": "graph-query-motif_query-ce8431d383b7fb89", "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": "timogilvie/wavemill", "source_dataset": "graph_queries/unresolved_feedback", "training_usage": "negative_or_unresolved"}}}, {"ruleId": "foundry_blueprint_gap", "level": "warning", "message": {"text": "Foundry mined blueprint gap alignment: timogilvie/wavemill"}, "properties": {"repobilityId": 404353, "scanner": "foundry_dataset", "fingerprint": "33ee6e7b537d904d5b4f9876047bb3323e1aa7fb3e9c9add464a68499154ac86", "category": "tech_debt", "severity": "medium", "confidence": 0.7, "triageState": "open", "verdict": "needs_review", "isResolved": false, "reason": "Imported from mined Foundry/Fable5 evidence with real GitHub/source provenance. Review source_id before acting.", "evidence": {"meta": {"kind": "graph_query_record", "title": "Human feedback aligned with blueprint or architecture gaps", "intent": "Curriculum-gap examples connecting issue threads to helicopter-view gaps.", "labels": {"test_ci_gap": 1, "weak blueprint fit": 2, "partial blueprint fit": 1, "verification_or_tests": 5, "issue_or_pull_request_thread": 1, "ambiguous_needs_more_evidence": 3, "blueprint_human_gap_alignment": 3, "comment_has_related_commit_context": 1, "thread_has_human_issue_and_fix_context": 2}, "source": "graph_query_export", "motif_id": "blueprint_gap_alignment", "outcomes": {"ambiguous_needs_more_evidence": 6}, "polarity": "mixed", "query_id": "blueprint_gap_alignment", "severity": "medium", "ci_labels": {}, "synthetic": false, "edge_count": 28, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 1, "thread_has_comment": 1, "alignment_uses_comment": 3, "alignment_uses_finding": 3, "chain_has_link_quality": 6, "comment_aligns_finding": 3, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 1, "comment_chain_links_commit": 5, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 1}, "node_count": 23, "node_types": {"repo": 1, "commit": 5, "thread": 1, "comment": 1, "alignment": 3, "fix_outcome": 1, "issue_chain": 1, "link_quality": 6, "comment_chain": 1, "blueprint_finding": 3}, "query_type": "motif_query", "thread_key": "timogilvie/wavemill#98", "issue_number": "98", "quality_tiers": {"assumption_check": 3, "weak_supervision": 3}, "repo_full_name": "timogilvie/wavemill", "training_usage": "curriculum_gap", "source_motif_id": "graph-pattern-motif-thread-afe1f97e6f2dab3d", "graph_gold_label": "weak_supervision_needs_review", "changed_file_labels": {}}, "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: timogilvie/wavemill\nThread: timogilvie/wavemill#98\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: timogilvie/wavemill\nThread: timogilvie/wavemill#98\nGraph gold label: weak_supervision_needs_review\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: timogilvie/wavemill#98\nRepo: timogilvie/wavemill\nIssue/PR number: 98\nGraph consistency label: weak_supervision_needs_review\nNodes: 23\nEdges: 28\nNode types: {'link_quality': 6, 'commit': 5, 'alignment': 3, 'blueprint_finding': 3, 'thread': 1, 'repo': 1, 'comment': 1, 'comment_chain': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'chain_has_link_quality': 6, 'comment_chain_links_commit': 5, 'alignment_uses_comment': 3, 'alignment_uses_finding': 3, 'comment_aligns_finding': 3, 'repo_has_thread': 1, 'thread_has_comment': 1, 'thread_has_comment_chain': 1, 'comment_has_chain': 1, 'thread_has_issue_chain': 1, 'issue_chain_has_comment_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'verification_or_tests': 5, 'ambiguous_needs_more_evidence': 3, 'blueprint_human_gap_alignment': 3, 'thread_has_human_issue_and_fix_context': 2, 'weak blueprint fit': 2, 'issue_or_pull_request_thread': 1, 'test_ci_gap': 1, 'comment_has_related_commit_context': 1, 'partial blueprint fit': 1}\nOutcomes: {'ambiguous_needs_more_evidence': 6}\nQuality tiers: {'weak_supervision': 3, 'assumption_check': 3}\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/timogilvie/wavemill", "source_id": "graph-query-motif_query-715c8afa50b46094", "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": "timogilvie/wavemill", "source_dataset": "graph_queries/blueprint_gap_alignment", "training_usage": "curriculum_gap"}}}, {"ruleId": "foundry_blueprint_gap", "level": "warning", "message": {"text": "Foundry mined blueprint gap alignment: timogilvie/wavemill"}, "properties": {"repobilityId": 404352, "scanner": "foundry_dataset", "fingerprint": "9c16ae95f53a8ccbd7276eede524b3833fb8e87d427b59de33a9ea6fa8f21b93", "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": {"weak blueprint fit": 2, "partial blueprint fit": 1, "verification_or_tests": 5, "data_schema_persistence": 1, "issue_or_pull_request_thread": 1, "ambiguous_needs_more_evidence": 3, "blueprint_human_gap_alignment": 3, "comment_has_related_commit_context": 1, "thread_has_human_issue_and_fix_context": 2}, "source": "graph_query_export", "motif_id": "blueprint_gap_alignment", "outcomes": {"ambiguous_needs_more_evidence": 6}, "polarity": "mixed", "query_id": "blueprint_gap_alignment", "severity": "medium", "ci_labels": {}, "synthetic": false, "edge_count": 28, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 1, "thread_has_comment": 1, "alignment_uses_comment": 3, "alignment_uses_finding": 3, "chain_has_link_quality": 6, "comment_aligns_finding": 3, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 1, "comment_chain_links_commit": 5, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 1}, "node_count": 23, "node_types": {"repo": 1, "commit": 5, "thread": 1, "comment": 1, "alignment": 3, "fix_outcome": 1, "issue_chain": 1, "link_quality": 6, "comment_chain": 1, "blueprint_finding": 3}, "query_type": "motif_query", "thread_key": "timogilvie/wavemill#97", "issue_number": "97", "quality_tiers": {"assumption_check": 3, "weak_supervision": 3}, "repo_full_name": "timogilvie/wavemill", "training_usage": "curriculum_gap", "source_motif_id": "graph-pattern-motif-thread-5ac3ae0b6d307869", "graph_gold_label": "weak_supervision_needs_review", "changed_file_labels": {}}, "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: timogilvie/wavemill\nThread: timogilvie/wavemill#97\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: timogilvie/wavemill\nThread: timogilvie/wavemill#97\nGraph gold label: weak_supervision_needs_review\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: timogilvie/wavemill#97\nRepo: timogilvie/wavemill\nIssue/PR number: 97\nGraph consistency label: weak_supervision_needs_review\nNodes: 23\nEdges: 28\nNode types: {'link_quality': 6, 'commit': 5, 'alignment': 3, 'blueprint_finding': 3, 'thread': 1, 'repo': 1, 'comment': 1, 'comment_chain': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'chain_has_link_quality': 6, 'comment_chain_links_commit': 5, 'alignment_uses_comment': 3, 'alignment_uses_finding': 3, 'comment_aligns_finding': 3, 'repo_has_thread': 1, 'thread_has_comment': 1, 'thread_has_comment_chain': 1, 'comment_has_chain': 1, 'thread_has_issue_chain': 1, 'issue_chain_has_comment_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'verification_or_tests': 5, 'ambiguous_needs_more_evidence': 3, 'blueprint_human_gap_alignment': 3, 'thread_has_human_issue_and_fix_context': 2, 'weak blueprint fit': 2, 'issue_or_pull_request_thread': 1, 'data_schema_persistence': 1, 'comment_has_related_commit_context': 1, 'partial blueprint fit': 1}\nOutcomes: {'ambiguous_needs_more_evidence': 6}\nQuality tiers: {'weak_supervision': 3, 'assumption_check': 3}\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/timogilvie/wavemill", "source_id": "graph-query-motif_query-99d5f489d1ddf852", "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": "timogilvie/wavemill", "source_dataset": "graph_queries/blueprint_gap_alignment", "training_usage": "curriculum_gap"}}}, {"ruleId": "foundry_blueprint_gap", "level": "warning", "message": {"text": "Foundry mined blueprint gap alignment: timogilvie/wavemill"}, "properties": {"repobilityId": 404351, "scanner": "foundry_dataset", "fingerprint": "ce520defe3c4998dc6b32a921717e66a6cfc7e341c530040c0b521e3496b57be", "category": "tech_debt", "severity": "medium", "confidence": 0.7, "triageState": "open", "verdict": "needs_review", "isResolved": false, "reason": "Imported from mined Foundry/Fable5 evidence with real GitHub/source provenance. Review source_id before acting.", "evidence": {"meta": {"kind": "graph_query_record", "title": "Human feedback aligned with blueprint or architecture gaps", "intent": "Curriculum-gap examples connecting issue threads to helicopter-view gaps.", "labels": {"test_ci_gap": 1, "weak blueprint fit": 2, "partial blueprint fit": 1, "verification_or_tests": 3, "issue_or_pull_request_thread": 1, "ambiguous_needs_more_evidence": 3, "blueprint_human_gap_alignment": 3, "comment_has_related_commit_context": 1, "thread_has_human_issue_and_fix_context": 2}, "source": "graph_query_export", "motif_id": "blueprint_gap_alignment", "outcomes": {"ambiguous_needs_more_evidence": 6}, "polarity": "mixed", "query_id": "blueprint_gap_alignment", "severity": "medium", "ci_labels": {}, "synthetic": false, "edge_count": 26, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 1, "thread_has_comment": 1, "alignment_uses_comment": 3, "alignment_uses_finding": 3, "chain_has_link_quality": 6, "comment_aligns_finding": 3, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 1, "comment_chain_links_commit": 3, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 1}, "node_count": 21, "node_types": {"repo": 1, "commit": 3, "thread": 1, "comment": 1, "alignment": 3, "fix_outcome": 1, "issue_chain": 1, "link_quality": 6, "comment_chain": 1, "blueprint_finding": 3}, "query_type": "motif_query", "thread_key": "timogilvie/wavemill#89", "issue_number": "89", "quality_tiers": {"assumption_check": 3, "weak_supervision": 3}, "repo_full_name": "timogilvie/wavemill", "training_usage": "curriculum_gap", "source_motif_id": "graph-pattern-motif-thread-423d645721b99271", "graph_gold_label": "weak_supervision_needs_review", "changed_file_labels": {}}, "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: timogilvie/wavemill\nThread: timogilvie/wavemill#89\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: timogilvie/wavemill\nThread: timogilvie/wavemill#89\nGraph gold label: weak_supervision_needs_review\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: timogilvie/wavemill#89\nRepo: timogilvie/wavemill\nIssue/PR number: 89\nGraph consistency label: weak_supervision_needs_review\nNodes: 21\nEdges: 26\nNode types: {'link_quality': 6, 'commit': 3, 'alignment': 3, 'blueprint_finding': 3, 'thread': 1, 'repo': 1, 'comment': 1, 'comment_chain': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'chain_has_link_quality': 6, 'comment_chain_links_commit': 3, 'alignment_uses_comment': 3, 'alignment_uses_finding': 3, 'comment_aligns_finding': 3, 'repo_has_thread': 1, 'thread_has_comment': 1, 'thread_has_comment_chain': 1, 'comment_has_chain': 1, 'thread_has_issue_chain': 1, 'issue_chain_has_comment_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'verification_or_tests': 3, 'ambiguous_needs_more_evidence': 3, 'blueprint_human_gap_alignment': 3, 'thread_has_human_issue_and_fix_context': 2, 'weak blueprint fit': 2, 'issue_or_pull_request_thread': 1, 'test_ci_gap': 1, 'comment_has_related_commit_context': 1, 'partial blueprint fit': 1}\nOutcomes: {'ambiguous_needs_more_evidence': 6}\nQuality tiers: {'weak_supervision': 3, 'assumption_check': 3}\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/timogilvie/wavemill", "source_id": "graph-query-motif_query-f6528fd62f485ef2", "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": "timogilvie/wavemill", "source_dataset": "graph_queries/blueprint_gap_alignment", "training_usage": "curriculum_gap"}}}, {"ruleId": "foundry_blueprint_gap", "level": "warning", "message": {"text": "Foundry mined blueprint gap alignment: timogilvie/wavemill"}, "properties": {"repobilityId": 404350, "scanner": "foundry_dataset", "fingerprint": "c589532f85a93dfffeec91fa5fd03b3ebcf375b864ba5303a0a5ff1f1d5f5dd2", "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": 1, "test_or_ci": 2, "test_ci_gap": 1, "docs_or_chore": 1, "docs_or_claims": 2, "source_or_other": 3, "weak blueprint fit": 2, "dependency_or_build": 1, "partial blueprint fit": 1, "verification_or_tests": 1, "ci_pending_or_incomplete": 1, "issue_or_pull_request_thread": 1, "blueprint_human_gap_alignment": 3, "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": {"ci_pending_or_incomplete": 2}, "synthetic": false, "edge_count": 51, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 1, "thread_has_comment": 1, "thread_touches_file": 8, "comment_chain_has_ci": 1, "alignment_uses_comment": 3, "alignment_uses_finding": 3, "chain_has_link_quality": 6, "comment_aligns_finding": 3, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "issue_chain_touches_file": 8, "thread_has_comment_chain": 1, "comment_chain_links_commit": 3, "comment_chain_touches_file": 8, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 1}, "node_count": 30, "node_types": {"repo": 1, "commit": 3, "thread": 1, "comment": 1, "pr_file": 8, "alignment": 3, "ci_summary": 1, "fix_outcome": 1, "issue_chain": 1, "link_quality": 6, "comment_chain": 1, "blueprint_finding": 3}, "query_type": "motif_query", "thread_key": "timogilvie/wavemill#750", "issue_number": "750", "quality_tiers": {"assumption_check": 3, "weak_supervision": 3}, "repo_full_name": "timogilvie/wavemill", "training_usage": "curriculum_gap", "source_motif_id": "graph-pattern-motif-thread-80923b79f131711c", "graph_gold_label": "supported_by_verification_signal", "changed_file_labels": {"test_or_ci": 8, "docs_or_claims": 8, "source_or_other": 12, "dependency_or_build": 4}}, "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: timogilvie/wavemill\nThread: timogilvie/wavemill#750\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: timogilvie/wavemill\nThread: timogilvie/wavemill#750\nGraph gold label: supported_by_verification_signal\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: timogilvie/wavemill#750\nRepo: timogilvie/wavemill\nIssue/PR number: 750\nGraph consistency label: supported_by_verification_signal\nNodes: 30\nEdges: 51\nNode types: {'pr_file': 8, 'link_quality': 6, 'commit': 3, 'alignment': 3, 'blueprint_finding': 3, 'thread': 1, 'repo': 1, 'comment': 1, 'comment_chain': 1, 'ci_summary': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'thread_touches_file': 8, 'comment_chain_touches_file': 8, 'issue_chain_touches_file': 8, 'chain_has_link_quality': 6, 'comment_chain_links_commit': 3, 'alignment_uses_comment': 3, 'alignment_uses_finding': 3, 'comment_aligns_finding': 3, 'repo_has_thread': 1, 'thread_has_comment': 1, 'thread_has_comment_chain': 1, 'comment_has_chain': 1, 'comment_chain_has_ci': 1, 'thread_has_issue_chain': 1, 'issue_chain_has_comment_chain': 1, 'thread_has_fix_outcome': 1}\nLabels: {'source_or_other': 3, 'claimed_resolved_with_verification_signal': 3, 'blueprint_human_gap_alignment': 3, 'docs_or_claims': 2, 'test_or_ci': 2, 'thread_has_human_issue_and_fix_context': 2, 'weak blueprint fit': 2, 'issue_or_pull_request_thread': 1, 'test_ci_gap': 1, 'dependency_or_build': 1, 'human_reported_issue_then_verified_fix_attempt': 1, 'docs_or_chore': 1, 'ci_pending_or_incomplete': 1, 'verification_or_tests': 1, 'bug_fix': 1, 'partial blueprint fit': 1}\nOutcomes: {'claimed_resolved_with_verification_signal': 6}\nQuality tiers: {'weak_supervision': 3, 'assumption_check': 3}\nCI labels: {'ci_pending_or_incomplete': 2}\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/timogilvie/wavemill", "source_id": "graph-query-motif_query-c3ee18d3310846da", "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": "timogilvie/wavemill", "source_dataset": "graph_queries/blueprint_gap_alignment", "training_usage": "curriculum_gap"}}}, {"ruleId": "foundry_blueprint_gap", "level": "warning", "message": {"text": "Foundry mined blueprint gap alignment: timogilvie/wavemill"}, "properties": {"repobilityId": 404349, "scanner": "foundry_dataset", "fingerprint": "e41a6c93a5495fbdcc5956801da8cad941431b1c66157a10ee1791ea0a7293b7", "category": "tech_debt", "severity": "medium", "confidence": 0.7, "triageState": "open", "verdict": "needs_review", "isResolved": false, "reason": "Imported from mined Foundry/Fable5 evidence with real GitHub/source provenance. Review source_id before acting.", "evidence": {"meta": {"kind": "graph_query_record", "title": "Human feedback aligned with blueprint or architecture gaps", "intent": "Curriculum-gap examples connecting issue threads to helicopter-view gaps.", "labels": {"test_or_ci": 22, "api_or_backend": 10, "commit_general": 1, "docs_or_claims": 2, "schema_or_data": 2, "source_or_other": 27, "weak blueprint fit": 2, "api_integration_gap": 1, "dependency_or_build": 1, "partial blueprint fit": 1, "issue_or_pull_request_thread": 1, "ambiguous_needs_more_evidence": 3, "blueprint_human_gap_alignment": 3, "comment_has_related_commit_context": 1, "thread_has_human_issue_and_fix_context": 2}, "source": "graph_query_export", "motif_id": "blueprint_gap_alignment", "outcomes": {"ambiguous_needs_more_evidence": 6}, "polarity": "mixed", "query_id": "blueprint_gap_alignment", "severity": "medium", "ci_labels": {}, "synthetic": false, "edge_count": 112, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 1, "thread_has_comment": 1, "thread_touches_file": 64, "alignment_uses_comment": 3, "alignment_uses_finding": 3, "chain_has_link_quality": 6, "comment_aligns_finding": 3, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "issue_chain_touches_file": 12, "thread_has_comment_chain": 1, "comment_chain_links_commit": 1, "comment_chain_touches_file": 12, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 1}, "node_count": 83, "node_types": {"repo": 1, "commit": 1, "thread": 1, "comment": 1, "pr_file": 64, "alignment": 3, "fix_outcome": 1, "issue_chain": 1, "link_quality": 6, "comment_chain": 1, "blueprint_finding": 3}, "query_type": "motif_query", "thread_key": "timogilvie/wavemill#749", "issue_number": "749", "quality_tiers": {"assumption_check": 3, "weak_supervision": 3}, "repo_full_name": "timogilvie/wavemill", "training_usage": "curriculum_gap", "source_motif_id": "graph-pattern-motif-thread-902c12f77e8bcca9", "graph_gold_label": "weak_supervision_needs_review", "changed_file_labels": {"test_or_ci": 88, "api_or_backend": 40, "docs_or_claims": 8, "schema_or_data": 8, "source_or_other": 108, "dependency_or_build": 4}}, "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: timogilvie/wavemill\nThread: timogilvie/wavemill#749\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: timogilvie/wavemill\nThread: timogilvie/wavemill#749\nGraph gold label: weak_supervision_needs_review\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: timogilvie/wavemill#749\nRepo: timogilvie/wavemill\nIssue/PR number: 749\nGraph consistency label: weak_supervision_needs_review\nNodes: 83\nEdges: 112\nNode types: {'pr_file': 64, 'link_quality': 6, 'alignment': 3, 'blueprint_finding': 3, 'thread': 1, 'repo': 1, 'comment': 1, 'comment_chain': 1, 'commit': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'thread_touches_file': 64, 'comment_chain_touches_file': 12, 'issue_chain_touches_file': 12, 'chain_has_link_quality': 6, 'alignment_uses_comment': 3, 'alignment_uses_finding': 3, 'comment_aligns_finding': 3, 'repo_has_thread': 1, 'thread_has_comment': 1, 'thread_has_comment_chain': 1, 'comment_has_chain': 1, 'comment_chain_links_commit': 1, 'thread_has_issue_chain': 1, 'issue_chain_has_comment_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'source_or_other': 27, 'test_or_ci': 22, 'api_or_backend': 10, 'ambiguous_needs_more_evidence': 3, 'blueprint_human_gap_alignment': 3, 'schema_or_data': 2, 'docs_or_claims': 2, 'thread_has_human_issue_and_fix_context': 2, 'weak blueprint fit': 2, 'issue_or_pull_request_thread': 1, 'api_integration_gap': 1, 'dependency_or_build': 1, 'comment_has_related_commit_context': 1, 'commit_general': 1, 'partial blueprint fit': 1}\nOutcomes: {'ambiguous_needs_more_evidence': 6}\nQuality tiers: {'weak_supervision': 3, 'assumption_check': 3}\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/timogilvie/wavemill", "source_id": "graph-query-motif_query-4277d9d98b053f38", "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": "timogilvie/wavemill", "source_dataset": "graph_queries/blueprint_gap_alignment", "training_usage": "curriculum_gap"}}}, {"ruleId": "foundry_blueprint_gap", "level": "warning", "message": {"text": "Foundry mined blueprint gap alignment: timogilvie/wavemill"}, "properties": {"repobilityId": 404348, "scanner": "foundry_dataset", "fingerprint": "5686ab947481f8e09bfb6f079d03c381a150f0ef4b6825aa0f6b82f152ea8fa0", "category": "tech_debt", "severity": "medium", "confidence": 0.7, "triageState": "open", "verdict": "needs_review", "isResolved": false, "reason": "Imported from mined Foundry/Fable5 evidence with real GitHub/source provenance. Review source_id before acting.", "evidence": {"meta": {"kind": "graph_query_record", "title": "Human feedback aligned with blueprint or architecture gaps", "intent": "Curriculum-gap examples connecting issue threads to helicopter-view gaps.", "labels": {"test_or_ci": 3, "api_or_backend": 3, "source_or_other": 1, "weak blueprint fit": 2, "api_integration_gap": 1, "partial blueprint fit": 1, "verification_or_tests": 2, "issue_or_pull_request_thread": 1, "ambiguous_needs_more_evidence": 3, "blueprint_human_gap_alignment": 3, "comment_has_related_commit_context": 1, "thread_has_human_issue_and_fix_context": 2}, "source": "graph_query_export", "motif_id": "blueprint_gap_alignment", "outcomes": {"ambiguous_needs_more_evidence": 6}, "polarity": "mixed", "query_id": "blueprint_gap_alignment", "severity": "medium", "ci_labels": {}, "synthetic": false, "edge_count": 46, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 1, "thread_has_comment": 1, "thread_touches_file": 7, "alignment_uses_comment": 3, "alignment_uses_finding": 3, "chain_has_link_quality": 6, "comment_aligns_finding": 3, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "issue_chain_touches_file": 7, "thread_has_comment_chain": 1, "comment_chain_links_commit": 2, "comment_chain_touches_file": 7, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 1}, "node_count": 27, "node_types": {"repo": 1, "commit": 2, "thread": 1, "comment": 1, "pr_file": 7, "alignment": 3, "fix_outcome": 1, "issue_chain": 1, "link_quality": 6, "comment_chain": 1, "blueprint_finding": 3}, "query_type": "motif_query", "thread_key": "timogilvie/wavemill#748", "issue_number": "748", "quality_tiers": {"assumption_check": 3, "weak_supervision": 3}, "repo_full_name": "timogilvie/wavemill", "training_usage": "curriculum_gap", "source_motif_id": "graph-pattern-motif-thread-5916d3b0b2bf4abc", "graph_gold_label": "weak_supervision_needs_review", "changed_file_labels": {"test_or_ci": 12, "api_or_backend": 12, "source_or_other": 4}}, "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: timogilvie/wavemill\nThread: timogilvie/wavemill#748\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: timogilvie/wavemill\nThread: timogilvie/wavemill#748\nGraph gold label: weak_supervision_needs_review\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: timogilvie/wavemill#748\nRepo: timogilvie/wavemill\nIssue/PR number: 748\nGraph consistency label: weak_supervision_needs_review\nNodes: 27\nEdges: 46\nNode types: {'pr_file': 7, 'link_quality': 6, 'alignment': 3, 'blueprint_finding': 3, 'commit': 2, 'thread': 1, 'repo': 1, 'comment': 1, 'comment_chain': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'thread_touches_file': 7, 'comment_chain_touches_file': 7, 'issue_chain_touches_file': 7, 'chain_has_link_quality': 6, 'alignment_uses_comment': 3, 'alignment_uses_finding': 3, 'comment_aligns_finding': 3, 'comment_chain_links_commit': 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: {'test_or_ci': 3, 'api_or_backend': 3, 'ambiguous_needs_more_evidence': 3, 'blueprint_human_gap_alignment': 3, 'verification_or_tests': 2, 'thread_has_human_issue_and_fix_context': 2, 'weak blueprint fit': 2, 'issue_or_pull_request_thread': 1, 'api_integration_gap': 1, 'source_or_other': 1, 'comment_has_related_commit_context': 1, 'partial blueprint fit': 1}\nOutcomes: {'ambiguous_needs_more_evidence': 6}\nQuality tiers: {'weak_supervision': 3, 'assumption_check': 3}\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/timogilvie/wavemill", "source_id": "graph-query-motif_query-1faeef397e72c170", "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": "timogilvie/wavemill", "source_dataset": "graph_queries/blueprint_gap_alignment", "training_usage": "curriculum_gap"}}}, {"ruleId": "foundry_blueprint_gap", "level": "warning", "message": {"text": "Foundry mined blueprint gap alignment: timogilvie/wavemill"}, "properties": {"repobilityId": 404347, "scanner": "foundry_dataset", "fingerprint": "e50c514b834887ed0645531228b40a05d2d76fe8e45d0ca6ae8a788d07aef770", "category": "tech_debt", "severity": "medium", "confidence": 0.7, "triageState": "open", "verdict": "needs_review", "isResolved": false, "reason": "Imported from mined Foundry/Fable5 evidence with real GitHub/source provenance. Review source_id before acting.", "evidence": {"meta": {"kind": "graph_query_record", "title": "Human feedback aligned with blueprint or architecture gaps", "intent": "Curriculum-gap examples connecting issue threads to helicopter-view gaps.", "labels": {"test_or_ci": 1, "test_ci_gap": 1, "commit_general": 1, "docs_or_claims": 2, "source_or_other": 2, "weak blueprint fit": 2, "dependency_or_build": 1, "partial blueprint fit": 1, "verification_or_tests": 2, "issue_or_pull_request_thread": 1, "ambiguous_needs_more_evidence": 3, "blueprint_human_gap_alignment": 3, "comment_has_related_commit_context": 1, "thread_has_human_issue_and_fix_context": 2}, "source": "graph_query_export", "motif_id": "blueprint_gap_alignment", "outcomes": {"ambiguous_needs_more_evidence": 6}, "polarity": "mixed", "query_id": "blueprint_gap_alignment", "severity": "medium", "ci_labels": {}, "synthetic": false, "edge_count": 44, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 1, "thread_has_comment": 1, "thread_touches_file": 6, "alignment_uses_comment": 3, "alignment_uses_finding": 3, "chain_has_link_quality": 6, "comment_aligns_finding": 3, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "issue_chain_touches_file": 6, "thread_has_comment_chain": 1, "comment_chain_links_commit": 3, "comment_chain_touches_file": 6, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 1}, "node_count": 27, "node_types": {"repo": 1, "commit": 3, "thread": 1, "comment": 1, "pr_file": 6, "alignment": 3, "fix_outcome": 1, "issue_chain": 1, "link_quality": 6, "comment_chain": 1, "blueprint_finding": 3}, "query_type": "motif_query", "thread_key": "timogilvie/wavemill#747", "issue_number": "747", "quality_tiers": {"assumption_check": 3, "weak_supervision": 3}, "repo_full_name": "timogilvie/wavemill", "training_usage": "curriculum_gap", "source_motif_id": "graph-pattern-motif-thread-5a6a1bdb45dad4a6", "graph_gold_label": "weak_supervision_needs_review", "changed_file_labels": {"test_or_ci": 4, "docs_or_claims": 8, "source_or_other": 8, "dependency_or_build": 4}}, "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: timogilvie/wavemill\nThread: timogilvie/wavemill#747\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: timogilvie/wavemill\nThread: timogilvie/wavemill#747\nGraph gold label: weak_supervision_needs_review\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: timogilvie/wavemill#747\nRepo: timogilvie/wavemill\nIssue/PR number: 747\nGraph consistency label: weak_supervision_needs_review\nNodes: 27\nEdges: 44\nNode types: {'pr_file': 6, 'link_quality': 6, 'commit': 3, 'alignment': 3, 'blueprint_finding': 3, 'thread': 1, 'repo': 1, 'comment': 1, 'comment_chain': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'thread_touches_file': 6, 'comment_chain_touches_file': 6, 'chain_has_link_quality': 6, 'issue_chain_touches_file': 6, 'comment_chain_links_commit': 3, 'alignment_uses_comment': 3, 'alignment_uses_finding': 3, 'comment_aligns_finding': 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: {'ambiguous_needs_more_evidence': 3, 'blueprint_human_gap_alignment': 3, 'docs_or_claims': 2, 'source_or_other': 2, 'verification_or_tests': 2, 'thread_has_human_issue_and_fix_context': 2, 'weak blueprint fit': 2, 'issue_or_pull_request_thread': 1, 'test_ci_gap': 1, 'dependency_or_build': 1, 'test_or_ci': 1, 'comment_has_related_commit_context': 1, 'commit_general': 1, 'partial blueprint fit': 1}\nOutcomes: {'ambiguous_needs_more_evidence': 6}\nQuality tiers: {'weak_supervision': 3, 'assumption_check': 3}\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/timogilvie/wavemill", "source_id": "graph-query-motif_query-6344fd7ddd8db84b", "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": "timogilvie/wavemill", "source_dataset": "graph_queries/blueprint_gap_alignment", "training_usage": "curriculum_gap"}}}, {"ruleId": "foundry_blueprint_gap", "level": "warning", "message": {"text": "Foundry mined blueprint gap alignment: timogilvie/wavemill"}, "properties": {"repobilityId": 404346, "scanner": "foundry_dataset", "fingerprint": "1513160e85813c502c9ab0fcf1ecd3d14c6879c71afda8d984d49c441ec98df8", "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": 1, "source_or_other": 1, "ui_workflow_gap": 1, "weak blueprint fit": 2, "partial blueprint fit": 1, "verification_or_tests": 2, "issue_or_pull_request_thread": 1, "blueprint_human_gap_alignment": 3, "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": 29, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 1, "thread_has_comment": 1, "thread_touches_file": 1, "alignment_uses_comment": 3, "alignment_uses_finding": 3, "chain_has_link_quality": 6, "comment_aligns_finding": 3, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "issue_chain_touches_file": 1, "thread_has_comment_chain": 1, "comment_chain_links_commit": 3, "comment_chain_touches_file": 1, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 1}, "node_count": 22, "node_types": {"repo": 1, "commit": 3, "thread": 1, "comment": 1, "pr_file": 1, "alignment": 3, "fix_outcome": 1, "issue_chain": 1, "link_quality": 6, "comment_chain": 1, "blueprint_finding": 3}, "query_type": "motif_query", "thread_key": "timogilvie/wavemill#745", "issue_number": "745", "quality_tiers": {"high_confidence": 3, "assumption_check": 3}, "repo_full_name": "timogilvie/wavemill", "training_usage": "curriculum_gap", "source_motif_id": "graph-pattern-motif-thread-29b7d642f4978ded", "graph_gold_label": "supported_by_verification_signal", "changed_file_labels": {"source_or_other": 4}}, "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: timogilvie/wavemill\nThread: timogilvie/wavemill#745\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: timogilvie/wavemill\nThread: timogilvie/wavemill#745\nGraph gold label: supported_by_verification_signal\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: timogilvie/wavemill#745\nRepo: timogilvie/wavemill\nIssue/PR number: 745\nGraph consistency label: supported_by_verification_signal\nNodes: 22\nEdges: 29\nNode types: {'link_quality': 6, 'commit': 3, 'alignment': 3, 'blueprint_finding': 3, 'thread': 1, 'repo': 1, 'comment': 1, 'pr_file': 1, 'comment_chain': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'chain_has_link_quality': 6, 'comment_chain_links_commit': 3, 'alignment_uses_comment': 3, 'alignment_uses_finding': 3, 'comment_aligns_finding': 3, 'repo_has_thread': 1, 'thread_has_comment': 1, 'thread_touches_file': 1, 'thread_has_comment_chain': 1, 'comment_has_chain': 1, 'comment_chain_touches_file': 1, 'thread_has_issue_chain': 1, 'issue_chain_has_comment_chain': 1, 'issue_chain_touches_file': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'claimed_resolved_with_verification_signal': 3, 'blueprint_human_gap_alignment': 3, 'verification_or_tests': 2, 'thread_has_human_issue_and_fix_context': 2, 'weak blueprint fit': 2, 'issue_or_pull_request_thread': 1, 'ui_workflow_gap': 1, 'source_or_other': 1, 'human_reported_issue_then_verified_fix_attempt': 1, 'bug_fix': 1, 'partial blueprint fit': 1}\nOutcomes: {'claimed_resolved_with_verification_signal': 6}\nQuality tiers: {'high_confidence': 3, 'assumption_check': 3}\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/timogilvie/wavemill", "source_id": "graph-query-motif_query-e7c073d92573c65b", "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": "timogilvie/wavemill", "source_dataset": "graph_queries/blueprint_gap_alignment", "training_usage": "curriculum_gap"}}}, {"ruleId": "foundry_blueprint_gap", "level": "warning", "message": {"text": "Foundry mined blueprint gap alignment: timogilvie/wavemill"}, "properties": {"repobilityId": 404345, "scanner": "foundry_dataset", "fingerprint": "0c7cb6e4f2985d0d2ac9cd495d65d0fdc7ce299881ffe2fdafe48b456e99c52f", "category": "tech_debt", "severity": "medium", "confidence": 0.7, "triageState": "open", "verdict": "needs_review", "isResolved": false, "reason": "Imported from mined Foundry/Fable5 evidence with real GitHub/source provenance. Review source_id before acting.", "evidence": {"meta": {"kind": "graph_query_record", "title": "Human feedback aligned with blueprint or architecture gaps", "intent": "Curriculum-gap examples connecting issue threads to helicopter-view gaps.", "labels": {"test_or_ci": 17, "api_or_backend": 8, "docs_or_claims": 6, "schema_or_data": 4, "source_or_other": 13, "weak blueprint fit": 2, "dependency_or_build": 1, "partial blueprint fit": 1, "data_schema_persistence": 1, "issue_or_pull_request_thread": 1, "not_resolved_or_not_observed": 3, "blueprint_human_gap_alignment": 3, "human_reported_issue_no_linked_fix": 1, "thread_has_human_issue_without_fix_context": 2}, "source": "graph_query_export", "motif_id": "blueprint_gap_alignment", "outcomes": {"not_resolved_or_not_observed": 6}, "polarity": "mixed", "query_id": "blueprint_gap_alignment", "severity": "medium", "ci_labels": {}, "synthetic": false, "edge_count": 96, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 1, "thread_has_comment": 1, "thread_touches_file": 49, "alignment_uses_comment": 3, "alignment_uses_finding": 3, "chain_has_link_quality": 6, "comment_aligns_finding": 3, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "issue_chain_touches_file": 12, "thread_has_comment_chain": 1, "comment_chain_touches_file": 12, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 1}, "node_count": 67, "node_types": {"repo": 1, "thread": 1, "comment": 1, "pr_file": 49, "alignment": 3, "fix_outcome": 1, "issue_chain": 1, "link_quality": 6, "comment_chain": 1, "blueprint_finding": 3}, "query_type": "motif_query", "thread_key": "timogilvie/wavemill#741", "issue_number": "741", "quality_tiers": {"unresolved": 3, "assumption_check": 3}, "repo_full_name": "timogilvie/wavemill", "training_usage": "curriculum_gap", "source_motif_id": "graph-pattern-motif-thread-a4ff8d18fcf492f3", "graph_gold_label": "assumption_check", "changed_file_labels": {"test_or_ci": 68, "api_or_backend": 32, "docs_or_claims": 24, "schema_or_data": 16, "source_or_other": 52, "dependency_or_build": 4}}, "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: assumption_check\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#741\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: timogilvie/wavemill\nThread: timogilvie/wavemill#741\nGraph gold label: assumption_check\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: timogilvie/wavemill#741\nRepo: timogilvie/wavemill\nIssue/PR number: 741\nGraph consistency label: assumption_check\nNodes: 67\nEdges: 96\nNode types: {'pr_file': 49, 'link_quality': 6, 'alignment': 3, 'blueprint_finding': 3, 'thread': 1, 'repo': 1, 'comment': 1, 'comment_chain': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'thread_touches_file': 49, 'comment_chain_touches_file': 12, 'issue_chain_touches_file': 12, 'chain_has_link_quality': 6, 'alignment_uses_comment': 3, 'alignment_uses_finding': 3, 'comment_aligns_finding': 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: {'test_or_ci': 17, 'source_or_other': 13, 'api_or_backend': 8, 'docs_or_claims': 6, 'schema_or_data': 4, 'not_resolved_or_not_observed': 3, 'blueprint_human_gap_alignment': 3, 'thread_has_human_issue_without_fix_context': 2, 'weak blueprint fit': 2, 'issue_or_pull_request_thread': 1, 'data_schema_persistence': 1, 'dependency_or_build': 1, 'human_reported_issue_no_linked_fix': 1, 'partial blueprint fit': 1}\nOutcomes: {'not_resolved_or_not_observed': 6}\nQuality tiers: {'unresolved': 3, 'assumption_check': 3}\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/timogilvie/wavemill", "source_id": "graph-query-motif_query-8ac0d8914364cb8b", "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": "timogilvie/wavemill", "source_dataset": "graph_queries/blueprint_gap_alignment", "training_usage": "curriculum_gap"}}}, {"ruleId": "foundry_blueprint_gap", "level": "warning", "message": {"text": "Foundry mined blueprint gap alignment: timogilvie/wavemill"}, "properties": {"repobilityId": 404344, "scanner": "foundry_dataset", "fingerprint": "78feb50a0be7fbab9a64c356326ba7ef42f65f2b740e2df70f5e86375524d080", "category": "tech_debt", "severity": "medium", "confidence": 0.7, "triageState": "open", "verdict": "needs_review", "isResolved": false, "reason": "Imported from mined Foundry/Fable5 evidence with real GitHub/source provenance. Review source_id before acting.", "evidence": {"meta": {"kind": "graph_query_record", "title": "Human feedback aligned with blueprint or architecture gaps", "intent": "Curriculum-gap examples connecting issue threads to helicopter-view gaps.", "labels": {"test_or_ci": 1, "test_ci_gap": 1, "source_or_other": 1, "weak blueprint fit": 2, "partial blueprint fit": 1, "verification_or_tests": 4, "issue_or_pull_request_thread": 1, "ambiguous_needs_more_evidence": 3, "blueprint_human_gap_alignment": 3, "comment_has_related_commit_context": 1, "thread_has_human_issue_and_fix_context": 2}, "source": "graph_query_export", "motif_id": "blueprint_gap_alignment", "outcomes": {"ambiguous_needs_more_evidence": 6}, "polarity": "mixed", "query_id": "blueprint_gap_alignment", "severity": "medium", "ci_labels": {}, "synthetic": false, "edge_count": 33, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 1, "thread_has_comment": 1, "thread_touches_file": 2, "alignment_uses_comment": 3, "alignment_uses_finding": 3, "chain_has_link_quality": 6, "comment_aligns_finding": 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": 24, "node_types": {"repo": 1, "commit": 4, "thread": 1, "comment": 1, "pr_file": 2, "alignment": 3, "fix_outcome": 1, "issue_chain": 1, "link_quality": 6, "comment_chain": 1, "blueprint_finding": 3}, "query_type": "motif_query", "thread_key": "timogilvie/wavemill#740", "issue_number": "740", "quality_tiers": {"assumption_check": 3, "weak_supervision": 3}, "repo_full_name": "timogilvie/wavemill", "training_usage": "curriculum_gap", "source_motif_id": "graph-pattern-motif-thread-aa39052e228b086c", "graph_gold_label": "weak_supervision_needs_review", "changed_file_labels": {"test_or_ci": 4, "source_or_other": 4}}, "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: timogilvie/wavemill\nThread: timogilvie/wavemill#740\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: timogilvie/wavemill\nThread: timogilvie/wavemill#740\nGraph gold label: weak_supervision_needs_review\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: timogilvie/wavemill#740\nRepo: timogilvie/wavemill\nIssue/PR number: 740\nGraph consistency label: weak_supervision_needs_review\nNodes: 24\nEdges: 33\nNode types: {'link_quality': 6, 'commit': 4, 'alignment': 3, 'blueprint_finding': 3, 'pr_file': 2, 'thread': 1, 'repo': 1, 'comment': 1, 'comment_chain': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'chain_has_link_quality': 6, 'comment_chain_links_commit': 4, 'alignment_uses_comment': 3, 'alignment_uses_finding': 3, 'comment_aligns_finding': 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: {'verification_or_tests': 4, 'ambiguous_needs_more_evidence': 3, 'blueprint_human_gap_alignment': 3, 'thread_has_human_issue_and_fix_context': 2, 'weak blueprint fit': 2, 'issue_or_pull_request_thread': 1, 'test_ci_gap': 1, 'test_or_ci': 1, 'source_or_other': 1, 'comment_has_related_commit_context': 1, 'partial blueprint fit': 1}\nOutcomes: {'ambiguous_needs_more_evidence': 6}\nQuality tiers: {'weak_supervision': 3, 'assumption_check': 3}\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/timogilvie/wavemill", "source_id": "graph-query-motif_query-62ded1908fbe3234", "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": "timogilvie/wavemill", "source_dataset": "graph_queries/blueprint_gap_alignment", "training_usage": "curriculum_gap"}}}, {"ruleId": "foundry_blueprint_gap", "level": "warning", "message": {"text": "Foundry mined blueprint gap alignment: timogilvie/wavemill"}, "properties": {"repobilityId": 404343, "scanner": "foundry_dataset", "fingerprint": "ac21b782966f0f0a55ab26315d509da207d1d377db922af0839d8b67aeb04d5f", "category": "tech_debt", "severity": "medium", "confidence": 0.7, "triageState": "open", "verdict": "needs_review", "isResolved": false, "reason": "Imported from mined Foundry/Fable5 evidence with real GitHub/source provenance. Review source_id before acting.", "evidence": {"meta": {"kind": "graph_query_record", "title": "Human feedback aligned with blueprint or architecture gaps", "intent": "Curriculum-gap examples connecting issue threads to helicopter-view gaps.", "labels": {"test_or_ci": 7, "test_ci_gap": 1, "api_or_backend": 7, "schema_or_data": 2, "source_or_other": 7, "weak blueprint fit": 2, "dependency_or_build": 1, "partial blueprint fit": 1, "verification_or_tests": 5, "issue_or_pull_request_thread": 1, "ambiguous_needs_more_evidence": 3, "blueprint_human_gap_alignment": 3, "comment_has_related_commit_context": 1, "thread_has_human_issue_and_fix_context": 2}, "source": "graph_query_export", "motif_id": "blueprint_gap_alignment", "outcomes": {"ambiguous_needs_more_evidence": 6}, "polarity": "mixed", "query_id": "blueprint_gap_alignment", "severity": "medium", "ci_labels": {}, "synthetic": false, "edge_count": 76, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 1, "thread_has_comment": 1, "thread_touches_file": 24, "alignment_uses_comment": 3, "alignment_uses_finding": 3, "chain_has_link_quality": 6, "comment_aligns_finding": 3, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "issue_chain_touches_file": 12, "thread_has_comment_chain": 1, "comment_chain_links_commit": 5, "comment_chain_touches_file": 12, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 1}, "node_count": 47, "node_types": {"repo": 1, "commit": 5, "thread": 1, "comment": 1, "pr_file": 24, "alignment": 3, "fix_outcome": 1, "issue_chain": 1, "link_quality": 6, "comment_chain": 1, "blueprint_finding": 3}, "query_type": "motif_query", "thread_key": "timogilvie/wavemill#739", "issue_number": "739", "quality_tiers": {"assumption_check": 3, "weak_supervision": 3}, "repo_full_name": "timogilvie/wavemill", "training_usage": "curriculum_gap", "source_motif_id": "graph-pattern-motif-thread-9553649b6f364f6e", "graph_gold_label": "weak_supervision_needs_review", "changed_file_labels": {"test_or_ci": 28, "api_or_backend": 28, "schema_or_data": 8, "source_or_other": 28, "dependency_or_build": 4}}, "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: timogilvie/wavemill\nThread: timogilvie/wavemill#739\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: timogilvie/wavemill\nThread: timogilvie/wavemill#739\nGraph gold label: weak_supervision_needs_review\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: timogilvie/wavemill#739\nRepo: timogilvie/wavemill\nIssue/PR number: 739\nGraph consistency label: weak_supervision_needs_review\nNodes: 47\nEdges: 76\nNode types: {'pr_file': 24, 'link_quality': 6, 'commit': 5, 'alignment': 3, 'blueprint_finding': 3, 'thread': 1, 'repo': 1, 'comment': 1, 'comment_chain': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'thread_touches_file': 24, 'comment_chain_touches_file': 12, 'issue_chain_touches_file': 12, 'chain_has_link_quality': 6, 'comment_chain_links_commit': 5, 'alignment_uses_comment': 3, 'alignment_uses_finding': 3, 'comment_aligns_finding': 3, 'repo_has_thread': 1, 'thread_has_comment': 1, 'thread_has_comment_chain': 1, 'comment_has_chain': 1, 'thread_has_issue_chain': 1, 'issue_chain_has_comment_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'source_or_other': 7, 'test_or_ci': 7, 'api_or_backend': 7, 'verification_or_tests': 5, 'ambiguous_needs_more_evidence': 3, 'blueprint_human_gap_alignment': 3, 'schema_or_data': 2, 'thread_has_human_issue_and_fix_context': 2, 'weak blueprint fit': 2, 'issue_or_pull_request_thread': 1, 'test_ci_gap': 1, 'dependency_or_build': 1, 'comment_has_related_commit_context': 1, 'partial blueprint fit': 1}\nOutcomes: {'ambiguous_needs_more_evidence': 6}\nQuality tiers: {'weak_supervision': 3, 'assumption_check': 3}\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/timogilvie/wavemill", "source_id": "graph-query-motif_query-04f038bb415f9b1c", "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": "timogilvie/wavemill", "source_dataset": "graph_queries/blueprint_gap_alignment", "training_usage": "curriculum_gap"}}}, {"ruleId": "foundry_blueprint_gap", "level": "warning", "message": {"text": "Foundry mined blueprint gap alignment: timogilvie/wavemill"}, "properties": {"repobilityId": 404342, "scanner": "foundry_dataset", "fingerprint": "fdd9a4749da1b8b3918f414bfc8fc7fc3fb7890fceed19d9195a455f1f481eb5", "category": "tech_debt", "severity": "medium", "confidence": 0.7, "triageState": "open", "verdict": "needs_review", "isResolved": false, "reason": "Imported from mined Foundry/Fable5 evidence with real GitHub/source provenance. Review source_id before acting.", "evidence": {"meta": {"kind": "graph_query_record", "title": "Human feedback aligned with blueprint or architecture gaps", "intent": "Curriculum-gap examples connecting issue threads to helicopter-view gaps.", "labels": {"test_or_ci": 14, "test_ci_gap": 1, "api_or_backend": 4, "schema_or_data": 1, "source_or_other": 6, "weak blueprint fit": 2, "dependency_or_build": 1, "partial blueprint fit": 1, "verification_or_tests": 5, "issue_or_pull_request_thread": 1, "ambiguous_needs_more_evidence": 3, "blueprint_human_gap_alignment": 3, "comment_has_related_commit_context": 1, "thread_has_human_issue_and_fix_context": 2}, "source": "graph_query_export", "motif_id": "blueprint_gap_alignment", "outcomes": {"ambiguous_needs_more_evidence": 6}, "polarity": "mixed", "query_id": "blueprint_gap_alignment", "severity": "medium", "ci_labels": {}, "synthetic": false, "edge_count": 78, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 1, "thread_has_comment": 1, "thread_touches_file": 26, "alignment_uses_comment": 3, "alignment_uses_finding": 3, "chain_has_link_quality": 6, "comment_aligns_finding": 3, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "issue_chain_touches_file": 12, "thread_has_comment_chain": 1, "comment_chain_links_commit": 5, "comment_chain_touches_file": 12, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 1}, "node_count": 49, "node_types": {"repo": 1, "commit": 5, "thread": 1, "comment": 1, "pr_file": 26, "alignment": 3, "fix_outcome": 1, "issue_chain": 1, "link_quality": 6, "comment_chain": 1, "blueprint_finding": 3}, "query_type": "motif_query", "thread_key": "timogilvie/wavemill#738", "issue_number": "738", "quality_tiers": {"assumption_check": 3, "weak_supervision": 3}, "repo_full_name": "timogilvie/wavemill", "training_usage": "curriculum_gap", "source_motif_id": "graph-pattern-motif-thread-f8043b17418f8e88", "graph_gold_label": "weak_supervision_needs_review", "changed_file_labels": {"test_or_ci": 56, "api_or_backend": 16, "schema_or_data": 4, "source_or_other": 24, "dependency_or_build": 4}}, "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: timogilvie/wavemill\nThread: timogilvie/wavemill#738\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: timogilvie/wavemill\nThread: timogilvie/wavemill#738\nGraph gold label: weak_supervision_needs_review\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: timogilvie/wavemill#738\nRepo: timogilvie/wavemill\nIssue/PR number: 738\nGraph consistency label: weak_supervision_needs_review\nNodes: 49\nEdges: 78\nNode types: {'pr_file': 26, 'link_quality': 6, 'commit': 5, 'alignment': 3, 'blueprint_finding': 3, 'thread': 1, 'repo': 1, 'comment': 1, 'comment_chain': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'thread_touches_file': 26, 'comment_chain_touches_file': 12, 'issue_chain_touches_file': 12, 'chain_has_link_quality': 6, 'comment_chain_links_commit': 5, 'alignment_uses_comment': 3, 'alignment_uses_finding': 3, 'comment_aligns_finding': 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: {'test_or_ci': 14, 'source_or_other': 6, 'verification_or_tests': 5, 'api_or_backend': 4, 'ambiguous_needs_more_evidence': 3, 'blueprint_human_gap_alignment': 3, 'thread_has_human_issue_and_fix_context': 2, 'weak blueprint fit': 2, 'issue_or_pull_request_thread': 1, 'test_ci_gap': 1, 'dependency_or_build': 1, 'schema_or_data': 1, 'comment_has_related_commit_context': 1, 'partial blueprint fit': 1}\nOutcomes: {'ambiguous_needs_more_evidence': 6}\nQuality tiers: {'weak_supervision': 3, 'assumption_check': 3}\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/timogilvie/wavemill", "source_id": "graph-query-motif_query-3e0df0e388747e8f", "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": "timogilvie/wavemill", "source_dataset": "graph_queries/blueprint_gap_alignment", "training_usage": "curriculum_gap"}}}, {"ruleId": "foundry_blueprint_gap", "level": "warning", "message": {"text": "Foundry mined blueprint gap alignment: timogilvie/wavemill"}, "properties": {"repobilityId": 404341, "scanner": "foundry_dataset", "fingerprint": "8e4528df37fb702f2d56e3f1394653796ead0ccbb1cccc1823a4c374f0640e6a", "category": "tech_debt", "severity": "medium", "confidence": 0.7, "triageState": "open", "verdict": "needs_review", "isResolved": false, "reason": "Imported from mined Foundry/Fable5 evidence with real GitHub/source provenance. Review source_id before acting.", "evidence": {"meta": {"kind": "graph_query_record", "title": "Human feedback aligned with blueprint or architecture gaps", "intent": "Curriculum-gap examples connecting issue threads to helicopter-view gaps.", "labels": {"test_or_ci": 1, "schema_or_data": 1, "source_or_other": 4, "weak blueprint fit": 2, "partial blueprint fit": 1, "verification_or_tests": 5, "data_schema_persistence": 1, "issue_or_pull_request_thread": 1, "ambiguous_needs_more_evidence": 3, "blueprint_human_gap_alignment": 3, "comment_has_related_commit_context": 1, "thread_has_human_issue_and_fix_context": 2}, "source": "graph_query_export", "motif_id": "blueprint_gap_alignment", "outcomes": {"ambiguous_needs_more_evidence": 6}, "polarity": "mixed", "query_id": "blueprint_gap_alignment", "severity": "medium", "ci_labels": {}, "synthetic": false, "edge_count": 46, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 1, "thread_has_comment": 1, "thread_touches_file": 6, "alignment_uses_comment": 3, "alignment_uses_finding": 3, "chain_has_link_quality": 6, "comment_aligns_finding": 3, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "issue_chain_touches_file": 6, "thread_has_comment_chain": 1, "comment_chain_links_commit": 5, "comment_chain_touches_file": 6, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 1}, "node_count": 29, "node_types": {"repo": 1, "commit": 5, "thread": 1, "comment": 1, "pr_file": 6, "alignment": 3, "fix_outcome": 1, "issue_chain": 1, "link_quality": 6, "comment_chain": 1, "blueprint_finding": 3}, "query_type": "motif_query", "thread_key": "timogilvie/wavemill#737", "issue_number": "737", "quality_tiers": {"assumption_check": 3, "weak_supervision": 3}, "repo_full_name": "timogilvie/wavemill", "training_usage": "curriculum_gap", "source_motif_id": "graph-pattern-motif-thread-a0a6fc01487da2d4", "graph_gold_label": "weak_supervision_needs_review", "changed_file_labels": {"test_or_ci": 4, "schema_or_data": 4, "source_or_other": 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: weak_supervision_needs_review\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#737\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: timogilvie/wavemill\nThread: timogilvie/wavemill#737\nGraph gold label: weak_supervision_needs_review\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: timogilvie/wavemill#737\nRepo: timogilvie/wavemill\nIssue/PR number: 737\nGraph consistency label: weak_supervision_needs_review\nNodes: 29\nEdges: 46\nNode types: {'pr_file': 6, 'link_quality': 6, 'commit': 5, 'alignment': 3, 'blueprint_finding': 3, 'thread': 1, 'repo': 1, 'comment': 1, 'comment_chain': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'thread_touches_file': 6, 'comment_chain_touches_file': 6, 'chain_has_link_quality': 6, 'issue_chain_touches_file': 6, 'comment_chain_links_commit': 5, 'alignment_uses_comment': 3, 'alignment_uses_finding': 3, 'comment_aligns_finding': 3, 'repo_has_thread': 1, 'thread_has_comment': 1, 'thread_has_comment_chain': 1, 'comment_has_chain': 1, 'thread_has_issue_chain': 1, 'issue_chain_has_comment_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'verification_or_tests': 5, 'source_or_other': 4, 'ambiguous_needs_more_evidence': 3, 'blueprint_human_gap_alignment': 3, 'thread_has_human_issue_and_fix_context': 2, 'weak blueprint fit': 2, 'issue_or_pull_request_thread': 1, 'data_schema_persistence': 1, 'test_or_ci': 1, 'schema_or_data': 1, 'comment_has_related_commit_context': 1, 'partial blueprint fit': 1}\nOutcomes: {'ambiguous_needs_more_evidence': 6}\nQuality tiers: {'weak_supervision': 3, 'assumption_check': 3}\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/timogilvie/wavemill", "source_id": "graph-query-motif_query-b2137415c7a287d1", "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": "timogilvie/wavemill", "source_dataset": "graph_queries/blueprint_gap_alignment", "training_usage": "curriculum_gap"}}}, {"ruleId": "foundry_blueprint_gap", "level": "warning", "message": {"text": "Foundry mined blueprint gap alignment: timogilvie/wavemill"}, "properties": {"repobilityId": 404340, "scanner": "foundry_dataset", "fingerprint": "7a3dad24a2353b59105492b2b76828a5413024201c482c82aacd21345052332d", "category": "tech_debt", "severity": "medium", "confidence": 0.7, "triageState": "open", "verdict": "needs_review", "isResolved": false, "reason": "Imported from mined Foundry/Fable5 evidence with real GitHub/source provenance. Review source_id before acting.", "evidence": {"meta": {"kind": "graph_query_record", "title": "Human feedback aligned with blueprint or architecture gaps", "intent": "Curriculum-gap examples connecting issue threads to helicopter-view gaps.", "labels": {"test_or_ci": 3, "test_ci_gap": 1, "api_or_backend": 2, "schema_or_data": 2, "weak blueprint fit": 2, "dependency_or_build": 1, "partial blueprint fit": 1, "verification_or_tests": 5, "issue_or_pull_request_thread": 1, "ambiguous_needs_more_evidence": 3, "blueprint_human_gap_alignment": 3, "comment_has_related_commit_context": 1, "thread_has_human_issue_and_fix_context": 2}, "source": "graph_query_export", "motif_id": "blueprint_gap_alignment", "outcomes": {"ambiguous_needs_more_evidence": 6}, "polarity": "mixed", "query_id": "blueprint_gap_alignment", "severity": "medium", "ci_labels": {}, "synthetic": false, "edge_count": 52, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 1, "thread_has_comment": 1, "thread_touches_file": 8, "alignment_uses_comment": 3, "alignment_uses_finding": 3, "chain_has_link_quality": 6, "comment_aligns_finding": 3, "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": 31, "node_types": {"repo": 1, "commit": 5, "thread": 1, "comment": 1, "pr_file": 8, "alignment": 3, "fix_outcome": 1, "issue_chain": 1, "link_quality": 6, "comment_chain": 1, "blueprint_finding": 3}, "query_type": "motif_query", "thread_key": "timogilvie/wavemill#736", "issue_number": "736", "quality_tiers": {"assumption_check": 3, "weak_supervision": 3}, "repo_full_name": "timogilvie/wavemill", "training_usage": "curriculum_gap", "source_motif_id": "graph-pattern-motif-thread-817865b510a0b662", "graph_gold_label": "weak_supervision_needs_review", "changed_file_labels": {"test_or_ci": 12, "api_or_backend": 8, "schema_or_data": 8, "dependency_or_build": 4}}, "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: timogilvie/wavemill\nThread: timogilvie/wavemill#736\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: timogilvie/wavemill\nThread: timogilvie/wavemill#736\nGraph gold label: weak_supervision_needs_review\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: timogilvie/wavemill#736\nRepo: timogilvie/wavemill\nIssue/PR number: 736\nGraph consistency label: weak_supervision_needs_review\nNodes: 31\nEdges: 52\nNode types: {'pr_file': 8, 'link_quality': 6, 'commit': 5, 'alignment': 3, 'blueprint_finding': 3, '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, 'chain_has_link_quality': 6, 'comment_chain_links_commit': 5, 'alignment_uses_comment': 3, 'alignment_uses_finding': 3, 'comment_aligns_finding': 3, 'repo_has_thread': 1, 'thread_has_comment': 1, 'thread_has_comment_chain': 1, 'comment_has_chain': 1, 'thread_has_issue_chain': 1, 'issue_chain_has_comment_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'verification_or_tests': 5, 'test_or_ci': 3, 'ambiguous_needs_more_evidence': 3, 'blueprint_human_gap_alignment': 3, 'schema_or_data': 2, 'api_or_backend': 2, 'thread_has_human_issue_and_fix_context': 2, 'weak blueprint fit': 2, 'issue_or_pull_request_thread': 1, 'test_ci_gap': 1, 'dependency_or_build': 1, 'comment_has_related_commit_context': 1, 'partial blueprint fit': 1}\nOutcomes: {'ambiguous_needs_more_evidence': 6}\nQuality tiers: {'weak_supervision': 3, 'assumption_check': 3}\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/timogilvie/wavemill", "source_id": "graph-query-motif_query-c79a9b01eb779d53", "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": "timogilvie/wavemill", "source_dataset": "graph_queries/blueprint_gap_alignment", "training_usage": "curriculum_gap"}}}, {"ruleId": "foundry_blueprint_gap", "level": "warning", "message": {"text": "Foundry mined blueprint gap alignment: timogilvie/wavemill"}, "properties": {"repobilityId": 404339, "scanner": "foundry_dataset", "fingerprint": "53df6f21777f067cc22dd7be219a41e8b200661b42f168a973d37bc440102ca9", "category": "tech_debt", "severity": "medium", "confidence": 0.7, "triageState": "open", "verdict": "needs_review", "isResolved": false, "reason": "Imported from mined Foundry/Fable5 evidence with real GitHub/source provenance. Review source_id before acting.", "evidence": {"meta": {"kind": "graph_query_record", "title": "Human feedback aligned with blueprint or architecture gaps", "intent": "Curriculum-gap examples connecting issue threads to helicopter-view gaps.", "labels": {"test_or_ci": 1, "api_or_backend": 2, "weak blueprint fit": 2, "api_integration_gap": 1, "dependency_or_build": 1, "partial blueprint fit": 1, "verification_or_tests": 5, "issue_or_pull_request_thread": 1, "ambiguous_needs_more_evidence": 3, "blueprint_human_gap_alignment": 3, "comment_has_related_commit_context": 1, "thread_has_human_issue_and_fix_context": 2}, "source": "graph_query_export", "motif_id": "blueprint_gap_alignment", "outcomes": {"ambiguous_needs_more_evidence": 6}, "polarity": "mixed", "query_id": "blueprint_gap_alignment", "severity": "medium", "ci_labels": {}, "synthetic": false, "edge_count": 40, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 1, "thread_has_comment": 1, "thread_touches_file": 4, "alignment_uses_comment": 3, "alignment_uses_finding": 3, "chain_has_link_quality": 6, "comment_aligns_finding": 3, "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": 27, "node_types": {"repo": 1, "commit": 5, "thread": 1, "comment": 1, "pr_file": 4, "alignment": 3, "fix_outcome": 1, "issue_chain": 1, "link_quality": 6, "comment_chain": 1, "blueprint_finding": 3}, "query_type": "motif_query", "thread_key": "timogilvie/wavemill#734", "issue_number": "734", "quality_tiers": {"assumption_check": 3, "weak_supervision": 3}, "repo_full_name": "timogilvie/wavemill", "training_usage": "curriculum_gap", "source_motif_id": "graph-pattern-motif-thread-a011c0a07043dd00", "graph_gold_label": "weak_supervision_needs_review", "changed_file_labels": {"test_or_ci": 4, "api_or_backend": 8, "dependency_or_build": 4}}, "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: timogilvie/wavemill\nThread: timogilvie/wavemill#734\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: timogilvie/wavemill\nThread: timogilvie/wavemill#734\nGraph gold label: weak_supervision_needs_review\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: timogilvie/wavemill#734\nRepo: timogilvie/wavemill\nIssue/PR number: 734\nGraph consistency label: weak_supervision_needs_review\nNodes: 27\nEdges: 40\nNode types: {'link_quality': 6, 'commit': 5, 'pr_file': 4, 'alignment': 3, 'blueprint_finding': 3, 'thread': 1, 'repo': 1, 'comment': 1, 'comment_chain': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'chain_has_link_quality': 6, 'comment_chain_links_commit': 5, 'thread_touches_file': 4, 'comment_chain_touches_file': 4, 'issue_chain_touches_file': 4, 'alignment_uses_comment': 3, 'alignment_uses_finding': 3, 'comment_aligns_finding': 3, 'repo_has_thread': 1, 'thread_has_comment': 1, 'thread_has_comment_chain': 1, 'comment_has_chain': 1, 'thread_has_issue_chain': 1, 'issue_chain_has_comment_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'verification_or_tests': 5, 'ambiguous_needs_more_evidence': 3, 'blueprint_human_gap_alignment': 3, 'api_or_backend': 2, 'thread_has_human_issue_and_fix_context': 2, 'weak blueprint fit': 2, 'issue_or_pull_request_thread': 1, 'api_integration_gap': 1, 'dependency_or_build': 1, 'test_or_ci': 1, 'comment_has_related_commit_context': 1, 'partial blueprint fit': 1}\nOutcomes: {'ambiguous_needs_more_evidence': 6}\nQuality tiers: {'weak_supervision': 3, 'assumption_check': 3}\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/timogilvie/wavemill", "source_id": "graph-query-motif_query-ec9a5535ef536386", "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": "timogilvie/wavemill", "source_dataset": "graph_queries/blueprint_gap_alignment", "training_usage": "curriculum_gap"}}}, {"ruleId": "foundry_blueprint_gap", "level": "warning", "message": {"text": "Foundry mined blueprint gap alignment: timogilvie/wavemill"}, "properties": {"repobilityId": 404338, "scanner": "foundry_dataset", "fingerprint": "668e3780b54a19fba47210ad047756d38a64aeeb52152f8448478dfb955ac4ff", "category": "tech_debt", "severity": "medium", "confidence": 0.7, "triageState": "open", "verdict": "needs_review", "isResolved": false, "reason": "Imported from mined Foundry/Fable5 evidence with real GitHub/source provenance. Review source_id before acting.", "evidence": {"meta": {"kind": "graph_query_record", "title": "Human feedback aligned with blueprint or architecture gaps", "intent": "Curriculum-gap examples connecting issue threads to helicopter-view gaps.", "labels": {"test_ci_gap": 1, "weak blueprint fit": 2, "partial blueprint fit": 1, "verification_or_tests": 5, "issue_or_pull_request_thread": 1, "ambiguous_needs_more_evidence": 3, "blueprint_human_gap_alignment": 3, "comment_has_related_commit_context": 1, "thread_has_human_issue_and_fix_context": 2}, "source": "graph_query_export", "motif_id": "blueprint_gap_alignment", "outcomes": {"ambiguous_needs_more_evidence": 6}, "polarity": "mixed", "query_id": "blueprint_gap_alignment", "severity": "medium", "ci_labels": {}, "synthetic": false, "edge_count": 28, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 1, "thread_has_comment": 1, "alignment_uses_comment": 3, "alignment_uses_finding": 3, "chain_has_link_quality": 6, "comment_aligns_finding": 3, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 1, "comment_chain_links_commit": 5, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 1}, "node_count": 23, "node_types": {"repo": 1, "commit": 5, "thread": 1, "comment": 1, "alignment": 3, "fix_outcome": 1, "issue_chain": 1, "link_quality": 6, "comment_chain": 1, "blueprint_finding": 3}, "query_type": "motif_query", "thread_key": "timogilvie/wavemill#733", "issue_number": "733", "quality_tiers": {"assumption_check": 3, "weak_supervision": 3}, "repo_full_name": "timogilvie/wavemill", "training_usage": "curriculum_gap", "source_motif_id": "graph-pattern-motif-thread-aab471a399329947", "graph_gold_label": "weak_supervision_needs_review", "changed_file_labels": {}}, "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: timogilvie/wavemill\nThread: timogilvie/wavemill#733\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: timogilvie/wavemill\nThread: timogilvie/wavemill#733\nGraph gold label: weak_supervision_needs_review\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: timogilvie/wavemill#733\nRepo: timogilvie/wavemill\nIssue/PR number: 733\nGraph consistency label: weak_supervision_needs_review\nNodes: 23\nEdges: 28\nNode types: {'link_quality': 6, 'commit': 5, 'alignment': 3, 'blueprint_finding': 3, 'thread': 1, 'repo': 1, 'comment': 1, 'comment_chain': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'chain_has_link_quality': 6, 'comment_chain_links_commit': 5, 'alignment_uses_comment': 3, 'alignment_uses_finding': 3, 'comment_aligns_finding': 3, 'repo_has_thread': 1, 'thread_has_comment': 1, 'thread_has_comment_chain': 1, 'comment_has_chain': 1, 'thread_has_issue_chain': 1, 'issue_chain_has_comment_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'verification_or_tests': 5, 'ambiguous_needs_more_evidence': 3, 'blueprint_human_gap_alignment': 3, 'thread_has_human_issue_and_fix_context': 2, 'weak blueprint fit': 2, 'issue_or_pull_request_thread': 1, 'test_ci_gap': 1, 'comment_has_related_commit_context': 1, 'partial blueprint fit': 1}\nOutcomes: {'ambiguous_needs_more_evidence': 6}\nQuality tiers: {'weak_supervision': 3, 'assumption_check': 3}\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/timogilvie/wavemill", "source_id": "graph-query-motif_query-4f92ba67fee30538", "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": "timogilvie/wavemill", "source_dataset": "graph_queries/blueprint_gap_alignment", "training_usage": "curriculum_gap"}}}, {"ruleId": "foundry_blueprint_gap", "level": "warning", "message": {"text": "Foundry mined blueprint gap alignment: timogilvie/wavemill"}, "properties": {"repobilityId": 404337, "scanner": "foundry_dataset", "fingerprint": "9b3137babc8038f8c9a901db5efe1403efc666be396e8e4609fd4b1df1dd3ab0", "category": "tech_debt", "severity": "medium", "confidence": 0.7, "triageState": "open", "verdict": "needs_review", "isResolved": false, "reason": "Imported from mined Foundry/Fable5 evidence with real GitHub/source provenance. Review source_id before acting.", "evidence": {"meta": {"kind": "graph_query_record", "title": "Human feedback aligned with blueprint or architecture gaps", "intent": "Curriculum-gap examples connecting issue threads to helicopter-view gaps.", "labels": {"test_or_ci": 3, "test_ci_gap": 1, "docs_or_claims": 2, "schema_or_data": 2, "source_or_other": 2, "weak blueprint fit": 2, "partial blueprint fit": 1, "verification_or_tests": 5, "issue_or_pull_request_thread": 1, "ambiguous_needs_more_evidence": 3, "blueprint_human_gap_alignment": 3, "comment_has_related_commit_context": 1, "thread_has_human_issue_and_fix_context": 2}, "source": "graph_query_export", "motif_id": "blueprint_gap_alignment", "outcomes": {"ambiguous_needs_more_evidence": 6}, "polarity": "mixed", "query_id": "blueprint_gap_alignment", "severity": "medium", "ci_labels": {}, "synthetic": false, "edge_count": 55, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 1, "thread_has_comment": 1, "thread_touches_file": 9, "alignment_uses_comment": 3, "alignment_uses_finding": 3, "chain_has_link_quality": 6, "comment_aligns_finding": 3, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "issue_chain_touches_file": 9, "thread_has_comment_chain": 1, "comment_chain_links_commit": 5, "comment_chain_touches_file": 9, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 1}, "node_count": 32, "node_types": {"repo": 1, "commit": 5, "thread": 1, "comment": 1, "pr_file": 9, "alignment": 3, "fix_outcome": 1, "issue_chain": 1, "link_quality": 6, "comment_chain": 1, "blueprint_finding": 3}, "query_type": "motif_query", "thread_key": "timogilvie/wavemill#732", "issue_number": "732", "quality_tiers": {"assumption_check": 3, "weak_supervision": 3}, "repo_full_name": "timogilvie/wavemill", "training_usage": "curriculum_gap", "source_motif_id": "graph-pattern-motif-thread-f7bb47eaae079da5", "graph_gold_label": "weak_supervision_needs_review", "changed_file_labels": {"test_or_ci": 12, "docs_or_claims": 8, "schema_or_data": 8, "source_or_other": 8}}, "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: timogilvie/wavemill\nThread: timogilvie/wavemill#732\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: timogilvie/wavemill\nThread: timogilvie/wavemill#732\nGraph gold label: weak_supervision_needs_review\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: timogilvie/wavemill#732\nRepo: timogilvie/wavemill\nIssue/PR number: 732\nGraph consistency label: weak_supervision_needs_review\nNodes: 32\nEdges: 55\nNode types: {'pr_file': 9, 'link_quality': 6, 'commit': 5, 'alignment': 3, 'blueprint_finding': 3, 'thread': 1, 'repo': 1, 'comment': 1, 'comment_chain': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'thread_touches_file': 9, 'comment_chain_touches_file': 9, 'issue_chain_touches_file': 9, 'chain_has_link_quality': 6, 'comment_chain_links_commit': 5, 'alignment_uses_comment': 3, 'alignment_uses_finding': 3, 'comment_aligns_finding': 3, 'repo_has_thread': 1, 'thread_has_comment': 1, 'thread_has_comment_chain': 1, 'comment_has_chain': 1, 'thread_has_issue_chain': 1, 'issue_chain_has_comment_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'verification_or_tests': 5, 'test_or_ci': 3, 'ambiguous_needs_more_evidence': 3, 'blueprint_human_gap_alignment': 3, 'docs_or_claims': 2, 'source_or_other': 2, 'schema_or_data': 2, 'thread_has_human_issue_and_fix_context': 2, 'weak blueprint fit': 2, 'issue_or_pull_request_thread': 1, 'test_ci_gap': 1, 'comment_has_related_commit_context': 1, 'partial blueprint fit': 1}\nOutcomes: {'ambiguous_needs_more_evidence': 6}\nQuality tiers: {'weak_supervision': 3, 'assumption_check': 3}\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/timogilvie/wavemill", "source_id": "graph-query-motif_query-14e4008584eec501", "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": "timogilvie/wavemill", "source_dataset": "graph_queries/blueprint_gap_alignment", "training_usage": "curriculum_gap"}}}, {"ruleId": "foundry_blueprint_gap", "level": "warning", "message": {"text": "Foundry mined blueprint gap alignment: timogilvie/wavemill"}, "properties": {"repobilityId": 404336, "scanner": "foundry_dataset", "fingerprint": "34c28a42498abd58415f2753797ddab27a5fc0692a1f4469def359edf11736b3", "category": "tech_debt", "severity": "medium", "confidence": 0.7, "triageState": "open", "verdict": "needs_review", "isResolved": false, "reason": "Imported from mined Foundry/Fable5 evidence with real GitHub/source provenance. Review source_id before acting.", "evidence": {"meta": {"kind": "graph_query_record", "title": "Human feedback aligned with blueprint or architecture gaps", "intent": "Curriculum-gap examples connecting issue threads to helicopter-view gaps.", "labels": {"test_or_ci": 4, "schema_or_data": 2, "source_or_other": 2, "weak blueprint fit": 2, "partial blueprint fit": 1, "verification_or_tests": 5, "data_schema_persistence": 1, "issue_or_pull_request_thread": 1, "ambiguous_needs_more_evidence": 3, "blueprint_human_gap_alignment": 3, "comment_has_related_commit_context": 1, "thread_has_human_issue_and_fix_context": 2}, "source": "graph_query_export", "motif_id": "blueprint_gap_alignment", "outcomes": {"ambiguous_needs_more_evidence": 6}, "polarity": "mixed", "query_id": "blueprint_gap_alignment", "severity": "medium", "ci_labels": {}, "synthetic": false, "edge_count": 52, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 1, "thread_has_comment": 1, "thread_touches_file": 8, "alignment_uses_comment": 3, "alignment_uses_finding": 3, "chain_has_link_quality": 6, "comment_aligns_finding": 3, "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": 31, "node_types": {"repo": 1, "commit": 5, "thread": 1, "comment": 1, "pr_file": 8, "alignment": 3, "fix_outcome": 1, "issue_chain": 1, "link_quality": 6, "comment_chain": 1, "blueprint_finding": 3}, "query_type": "motif_query", "thread_key": "timogilvie/wavemill#731", "issue_number": "731", "quality_tiers": {"assumption_check": 3, "weak_supervision": 3}, "repo_full_name": "timogilvie/wavemill", "training_usage": "curriculum_gap", "source_motif_id": "graph-pattern-motif-thread-6d32e2225f362606", "graph_gold_label": "weak_supervision_needs_review", "changed_file_labels": {"test_or_ci": 16, "schema_or_data": 8, "source_or_other": 8}}, "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: timogilvie/wavemill\nThread: timogilvie/wavemill#731\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: timogilvie/wavemill\nThread: timogilvie/wavemill#731\nGraph gold label: weak_supervision_needs_review\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: timogilvie/wavemill#731\nRepo: timogilvie/wavemill\nIssue/PR number: 731\nGraph consistency label: weak_supervision_needs_review\nNodes: 31\nEdges: 52\nNode types: {'pr_file': 8, 'link_quality': 6, 'commit': 5, 'alignment': 3, 'blueprint_finding': 3, '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, 'chain_has_link_quality': 6, 'comment_chain_links_commit': 5, 'alignment_uses_comment': 3, 'alignment_uses_finding': 3, 'comment_aligns_finding': 3, 'repo_has_thread': 1, 'thread_has_comment': 1, 'thread_has_comment_chain': 1, 'comment_has_chain': 1, 'thread_has_issue_chain': 1, 'issue_chain_has_comment_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'verification_or_tests': 5, 'test_or_ci': 4, 'ambiguous_needs_more_evidence': 3, 'blueprint_human_gap_alignment': 3, 'source_or_other': 2, 'schema_or_data': 2, 'thread_has_human_issue_and_fix_context': 2, 'weak blueprint fit': 2, 'issue_or_pull_request_thread': 1, 'data_schema_persistence': 1, 'comment_has_related_commit_context': 1, 'partial blueprint fit': 1}\nOutcomes: {'ambiguous_needs_more_evidence': 6}\nQuality tiers: {'weak_supervision': 3, 'assumption_check': 3}\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/timogilvie/wavemill", "source_id": "graph-query-motif_query-b9c791cb51cd5d65", "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": "timogilvie/wavemill", "source_dataset": "graph_queries/blueprint_gap_alignment", "training_usage": "curriculum_gap"}}}, {"ruleId": "foundry_blueprint_gap", "level": "warning", "message": {"text": "Foundry mined blueprint gap alignment: timogilvie/wavemill"}, "properties": {"repobilityId": 404335, "scanner": "foundry_dataset", "fingerprint": "2b3038f91d8ee4dc0241e004fb5dd0fd4b2e232e55da3099a378c9c11a0c74b2", "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": {"weak blueprint fit": 2, "api_integration_gap": 1, "partial blueprint fit": 1, "verification_or_tests": 5, "issue_or_pull_request_thread": 1, "ambiguous_needs_more_evidence": 3, "blueprint_human_gap_alignment": 3, "comment_has_related_commit_context": 1, "thread_has_human_issue_and_fix_context": 2}, "source": "graph_query_export", "motif_id": "blueprint_gap_alignment", "outcomes": {"ambiguous_needs_more_evidence": 6}, "polarity": "mixed", "query_id": "blueprint_gap_alignment", "severity": "medium", "ci_labels": {}, "synthetic": false, "edge_count": 28, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 1, "thread_has_comment": 1, "alignment_uses_comment": 3, "alignment_uses_finding": 3, "chain_has_link_quality": 6, "comment_aligns_finding": 3, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 1, "comment_chain_links_commit": 5, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 1}, "node_count": 23, "node_types": {"repo": 1, "commit": 5, "thread": 1, "comment": 1, "alignment": 3, "fix_outcome": 1, "issue_chain": 1, "link_quality": 6, "comment_chain": 1, "blueprint_finding": 3}, "query_type": "motif_query", "thread_key": "timogilvie/wavemill#730", "issue_number": "730", "quality_tiers": {"high_confidence": 3, "assumption_check": 3}, "repo_full_name": "timogilvie/wavemill", "training_usage": "curriculum_gap", "source_motif_id": "graph-pattern-motif-thread-2f9fe866aaa4ec38", "graph_gold_label": "supported_by_high_confidence_link", "changed_file_labels": {}}, "text": "Graph query export: Human feedback aligned with blueprint or architecture gaps\nQuery id: blueprint_gap_alignment\nQuery type: motif_query\nIntent: Curriculum-gap examples connecting issue threads to helicopter-view gaps.\nMotif: blueprint_gap_alignment\nTraining usage: curriculum_gap\nGraph gold label: supported_by_high_confidence_link\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#730\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: timogilvie/wavemill\nThread: timogilvie/wavemill#730\nGraph gold label: supported_by_high_confidence_link\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: timogilvie/wavemill#730\nRepo: timogilvie/wavemill\nIssue/PR number: 730\nGraph consistency label: supported_by_high_confidence_link\nNodes: 23\nEdges: 28\nNode types: {'link_quality': 6, 'commit': 5, 'alignment': 3, 'blueprint_finding': 3, 'thread': 1, 'repo': 1, 'comment': 1, 'comment_chain': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'chain_has_link_quality': 6, 'comment_chain_links_commit': 5, 'alignment_uses_comment': 3, 'alignment_uses_finding': 3, 'comment_aligns_finding': 3, 'repo_has_thread': 1, 'thread_has_comment': 1, 'thread_has_comment_chain': 1, 'comment_has_chain': 1, 'thread_has_issue_chain': 1, 'issue_chain_has_comment_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'verification_or_tests': 5, 'ambiguous_needs_more_evidence': 3, 'blueprint_human_gap_alignment': 3, 'thread_has_human_issue_and_fix_context': 2, 'weak blueprint fit': 2, 'issue_or_pull_request_thread': 1, 'api_integration_gap': 1, 'comment_has_related_commit_context': 1, 'partial blueprint fit': 1}\nOutcomes: {'ambiguous_needs_more_evidence': 6}\nQuality tiers: {'high_confidence': 3, 'assumption_check': 3}\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/timogilvie/wavemill", "source_id": "graph-query-motif_query-d0bcb11327d2fa1d", "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": "timogilvie/wavemill", "source_dataset": "graph_queries/blueprint_gap_alignment", "training_usage": "curriculum_gap"}}}, {"ruleId": "foundry_blueprint_gap", "level": "warning", "message": {"text": "Foundry mined blueprint gap alignment: timogilvie/wavemill"}, "properties": {"repobilityId": 404334, "scanner": "foundry_dataset", "fingerprint": "0005aca8b8c2185150a7df94c51ead6ae63bd461f04e354a78a35effdd0250bf", "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": {"weak blueprint fit": 2, "partial blueprint fit": 1, "verification_or_tests": 5, "data_schema_persistence": 1, "issue_or_pull_request_thread": 1, "ambiguous_needs_more_evidence": 3, "blueprint_human_gap_alignment": 3, "comment_has_related_commit_context": 1, "thread_has_human_issue_and_fix_context": 2}, "source": "graph_query_export", "motif_id": "blueprint_gap_alignment", "outcomes": {"ambiguous_needs_more_evidence": 6}, "polarity": "mixed", "query_id": "blueprint_gap_alignment", "severity": "medium", "ci_labels": {}, "synthetic": false, "edge_count": 28, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 1, "thread_has_comment": 1, "alignment_uses_comment": 3, "alignment_uses_finding": 3, "chain_has_link_quality": 6, "comment_aligns_finding": 3, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 1, "comment_chain_links_commit": 5, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 1}, "node_count": 23, "node_types": {"repo": 1, "commit": 5, "thread": 1, "comment": 1, "alignment": 3, "fix_outcome": 1, "issue_chain": 1, "link_quality": 6, "comment_chain": 1, "blueprint_finding": 3}, "query_type": "motif_query", "thread_key": "timogilvie/wavemill#724", "issue_number": "724", "quality_tiers": {"high_confidence": 3, "assumption_check": 3}, "repo_full_name": "timogilvie/wavemill", "training_usage": "curriculum_gap", "source_motif_id": "graph-pattern-motif-thread-6f06def90d7a0cf9", "graph_gold_label": "supported_by_high_confidence_link", "changed_file_labels": {}}, "text": "Graph query export: Human feedback aligned with blueprint or architecture gaps\nQuery id: blueprint_gap_alignment\nQuery type: motif_query\nIntent: Curriculum-gap examples connecting issue threads to helicopter-view gaps.\nMotif: blueprint_gap_alignment\nTraining usage: curriculum_gap\nGraph gold label: supported_by_high_confidence_link\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#724\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: timogilvie/wavemill\nThread: timogilvie/wavemill#724\nGraph gold label: supported_by_high_confidence_link\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: timogilvie/wavemill#724\nRepo: timogilvie/wavemill\nIssue/PR number: 724\nGraph consistency label: supported_by_high_confidence_link\nNodes: 23\nEdges: 28\nNode types: {'link_quality': 6, 'commit': 5, 'alignment': 3, 'blueprint_finding': 3, 'thread': 1, 'repo': 1, 'comment': 1, 'comment_chain': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'chain_has_link_quality': 6, 'comment_chain_links_commit': 5, 'alignment_uses_comment': 3, 'alignment_uses_finding': 3, 'comment_aligns_finding': 3, 'repo_has_thread': 1, 'thread_has_comment': 1, 'thread_has_comment_chain': 1, 'comment_has_chain': 1, 'thread_has_issue_chain': 1, 'issue_chain_has_comment_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'verification_or_tests': 5, 'ambiguous_needs_more_evidence': 3, 'blueprint_human_gap_alignment': 3, 'thread_has_human_issue_and_fix_context': 2, 'weak blueprint fit': 2, 'issue_or_pull_request_thread': 1, 'data_schema_persistence': 1, 'comment_has_related_commit_context': 1, 'partial blueprint fit': 1}\nOutcomes: {'ambiguous_needs_more_evidence': 6}\nQuality tiers: {'high_confidence': 3, 'assumption_check': 3}\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/timogilvie/wavemill", "source_id": "graph-query-motif_query-2a5575d24d489fef", "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": "timogilvie/wavemill", "source_dataset": "graph_queries/blueprint_gap_alignment", "training_usage": "curriculum_gap"}}}, {"ruleId": "foundry_blueprint_gap", "level": "warning", "message": {"text": "Foundry mined blueprint gap alignment: timogilvie/wavemill"}, "properties": {"repobilityId": 404333, "scanner": "foundry_dataset", "fingerprint": "f5b58683325eb4f5f6a59a05811fe50664be1d06eb783b61d9875de7aa6e34de", "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": {"weak blueprint fit": 2, "api_integration_gap": 1, "partial blueprint fit": 1, "verification_or_tests": 5, "issue_or_pull_request_thread": 1, "ambiguous_needs_more_evidence": 3, "blueprint_human_gap_alignment": 3, "comment_has_related_commit_context": 1, "thread_has_human_issue_and_fix_context": 2}, "source": "graph_query_export", "motif_id": "blueprint_gap_alignment", "outcomes": {"ambiguous_needs_more_evidence": 6}, "polarity": "mixed", "query_id": "blueprint_gap_alignment", "severity": "medium", "ci_labels": {}, "synthetic": false, "edge_count": 28, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 1, "thread_has_comment": 1, "alignment_uses_comment": 3, "alignment_uses_finding": 3, "chain_has_link_quality": 6, "comment_aligns_finding": 3, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 1, "comment_chain_links_commit": 5, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 1}, "node_count": 23, "node_types": {"repo": 1, "commit": 5, "thread": 1, "comment": 1, "alignment": 3, "fix_outcome": 1, "issue_chain": 1, "link_quality": 6, "comment_chain": 1, "blueprint_finding": 3}, "query_type": "motif_query", "thread_key": "timogilvie/wavemill#723", "issue_number": "723", "quality_tiers": {"high_confidence": 3, "assumption_check": 3}, "repo_full_name": "timogilvie/wavemill", "training_usage": "curriculum_gap", "source_motif_id": "graph-pattern-motif-thread-10438beba25d420e", "graph_gold_label": "supported_by_high_confidence_link", "changed_file_labels": {}}, "text": "Graph query export: Human feedback aligned with blueprint or architecture gaps\nQuery id: blueprint_gap_alignment\nQuery type: motif_query\nIntent: Curriculum-gap examples connecting issue threads to helicopter-view gaps.\nMotif: blueprint_gap_alignment\nTraining usage: curriculum_gap\nGraph gold label: supported_by_high_confidence_link\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#723\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: timogilvie/wavemill\nThread: timogilvie/wavemill#723\nGraph gold label: supported_by_high_confidence_link\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: timogilvie/wavemill#723\nRepo: timogilvie/wavemill\nIssue/PR number: 723\nGraph consistency label: supported_by_high_confidence_link\nNodes: 23\nEdges: 28\nNode types: {'link_quality': 6, 'commit': 5, 'alignment': 3, 'blueprint_finding': 3, 'thread': 1, 'repo': 1, 'comment': 1, 'comment_chain': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'chain_has_link_quality': 6, 'comment_chain_links_commit': 5, 'alignment_uses_comment': 3, 'alignment_uses_finding': 3, 'comment_aligns_finding': 3, 'repo_has_thread': 1, 'thread_has_comment': 1, 'thread_has_comment_chain': 1, 'comment_has_chain': 1, 'thread_has_issue_chain': 1, 'issue_chain_has_comment_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'verification_or_tests': 5, 'ambiguous_needs_more_evidence': 3, 'blueprint_human_gap_alignment': 3, 'thread_has_human_issue_and_fix_context': 2, 'weak blueprint fit': 2, 'issue_or_pull_request_thread': 1, 'api_integration_gap': 1, 'comment_has_related_commit_context': 1, 'partial blueprint fit': 1}\nOutcomes: {'ambiguous_needs_more_evidence': 6}\nQuality tiers: {'high_confidence': 3, 'assumption_check': 3}\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/timogilvie/wavemill", "source_id": "graph-query-motif_query-e8783493fbda737f", "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": "timogilvie/wavemill", "source_dataset": "graph_queries/blueprint_gap_alignment", "training_usage": "curriculum_gap"}}}, {"ruleId": "foundry_blueprint_gap", "level": "warning", "message": {"text": "Foundry mined blueprint gap alignment: timogilvie/wavemill"}, "properties": {"repobilityId": 404332, "scanner": "foundry_dataset", "fingerprint": "a74784c9968fa2ebf5d94f04133966e0409778a4ccc9777c550e4e569295a80f", "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": {"data_schema": 1, "ui_workflow_gap": 1, "weak blueprint fit": 2, "partial blueprint fit": 1, "verification_or_tests": 4, "issue_or_pull_request_thread": 1, "blueprint_human_gap_alignment": 3, "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": 28, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 1, "thread_has_comment": 1, "alignment_uses_comment": 3, "alignment_uses_finding": 3, "chain_has_link_quality": 6, "comment_aligns_finding": 3, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 1, "comment_chain_links_commit": 5, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 1}, "node_count": 23, "node_types": {"repo": 1, "commit": 5, "thread": 1, "comment": 1, "alignment": 3, "fix_outcome": 1, "issue_chain": 1, "link_quality": 6, "comment_chain": 1, "blueprint_finding": 3}, "query_type": "motif_query", "thread_key": "timogilvie/wavemill#721", "issue_number": "721", "quality_tiers": {"high_confidence": 3, "assumption_check": 3}, "repo_full_name": "timogilvie/wavemill", "training_usage": "curriculum_gap", "source_motif_id": "graph-pattern-motif-thread-b6068ce11c8e9979", "graph_gold_label": "supported_by_verification_signal", "changed_file_labels": {}}, "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: timogilvie/wavemill\nThread: timogilvie/wavemill#721\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: timogilvie/wavemill\nThread: timogilvie/wavemill#721\nGraph gold label: supported_by_verification_signal\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: timogilvie/wavemill#721\nRepo: timogilvie/wavemill\nIssue/PR number: 721\nGraph consistency label: supported_by_verification_signal\nNodes: 23\nEdges: 28\nNode types: {'link_quality': 6, 'commit': 5, 'alignment': 3, 'blueprint_finding': 3, 'thread': 1, 'repo': 1, 'comment': 1, 'comment_chain': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'chain_has_link_quality': 6, 'comment_chain_links_commit': 5, 'alignment_uses_comment': 3, 'alignment_uses_finding': 3, 'comment_aligns_finding': 3, 'repo_has_thread': 1, 'thread_has_comment': 1, 'thread_has_comment_chain': 1, 'comment_has_chain': 1, 'thread_has_issue_chain': 1, 'issue_chain_has_comment_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'verification_or_tests': 4, 'claimed_resolved_with_verification_signal': 3, 'blueprint_human_gap_alignment': 3, 'thread_has_human_issue_and_fix_context': 2, 'weak blueprint fit': 2, 'issue_or_pull_request_thread': 1, 'ui_workflow_gap': 1, 'human_reported_issue_then_verified_fix_attempt': 1, 'data_schema': 1, 'partial blueprint fit': 1}\nOutcomes: {'claimed_resolved_with_verification_signal': 6}\nQuality tiers: {'high_confidence': 3, 'assumption_check': 3}\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/timogilvie/wavemill", "source_id": "graph-query-motif_query-9766ed3c90753f88", "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": "timogilvie/wavemill", "source_dataset": "graph_queries/blueprint_gap_alignment", "training_usage": "curriculum_gap"}}}, {"ruleId": "foundry_blueprint_gap", "level": "warning", "message": {"text": "Foundry mined blueprint gap alignment: timogilvie/wavemill"}, "properties": {"repobilityId": 404331, "scanner": "foundry_dataset", "fingerprint": "bf41b9f9237841b9999c79f06f17ff5ddeb0a9d91a39d585942315222295cfc1", "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": {"data_schema": 1, "weak blueprint fit": 2, "api_integration_gap": 1, "partial blueprint fit": 1, "verification_or_tests": 4, "issue_or_pull_request_thread": 1, "blueprint_human_gap_alignment": 3, "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": 28, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 1, "thread_has_comment": 1, "alignment_uses_comment": 3, "alignment_uses_finding": 3, "chain_has_link_quality": 6, "comment_aligns_finding": 3, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 1, "comment_chain_links_commit": 5, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 1}, "node_count": 23, "node_types": {"repo": 1, "commit": 5, "thread": 1, "comment": 1, "alignment": 3, "fix_outcome": 1, "issue_chain": 1, "link_quality": 6, "comment_chain": 1, "blueprint_finding": 3}, "query_type": "motif_query", "thread_key": "timogilvie/wavemill#720", "issue_number": "720", "quality_tiers": {"high_confidence": 3, "assumption_check": 3}, "repo_full_name": "timogilvie/wavemill", "training_usage": "curriculum_gap", "source_motif_id": "graph-pattern-motif-thread-4cd701886d060fb0", "graph_gold_label": "supported_by_verification_signal", "changed_file_labels": {}}, "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: timogilvie/wavemill\nThread: timogilvie/wavemill#720\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: timogilvie/wavemill\nThread: timogilvie/wavemill#720\nGraph gold label: supported_by_verification_signal\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: timogilvie/wavemill#720\nRepo: timogilvie/wavemill\nIssue/PR number: 720\nGraph consistency label: supported_by_verification_signal\nNodes: 23\nEdges: 28\nNode types: {'link_quality': 6, 'commit': 5, 'alignment': 3, 'blueprint_finding': 3, 'thread': 1, 'repo': 1, 'comment': 1, 'comment_chain': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'chain_has_link_quality': 6, 'comment_chain_links_commit': 5, 'alignment_uses_comment': 3, 'alignment_uses_finding': 3, 'comment_aligns_finding': 3, 'repo_has_thread': 1, 'thread_has_comment': 1, 'thread_has_comment_chain': 1, 'comment_has_chain': 1, 'thread_has_issue_chain': 1, 'issue_chain_has_comment_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'verification_or_tests': 4, 'claimed_resolved_with_verification_signal': 3, 'blueprint_human_gap_alignment': 3, 'thread_has_human_issue_and_fix_context': 2, 'weak blueprint fit': 2, 'issue_or_pull_request_thread': 1, 'api_integration_gap': 1, 'human_reported_issue_then_verified_fix_attempt': 1, 'data_schema': 1, 'partial blueprint fit': 1}\nOutcomes: {'claimed_resolved_with_verification_signal': 6}\nQuality tiers: {'high_confidence': 3, 'assumption_check': 3}\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/timogilvie/wavemill", "source_id": "graph-query-motif_query-f26627741afe4a70", "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": "timogilvie/wavemill", "source_dataset": "graph_queries/blueprint_gap_alignment", "training_usage": "curriculum_gap"}}}, {"ruleId": "foundry_blueprint_gap", "level": "warning", "message": {"text": "Foundry mined blueprint gap alignment: timogilvie/wavemill"}, "properties": {"repobilityId": 404330, "scanner": "foundry_dataset", "fingerprint": "d496a0e692fa468375e9b53cbc764db74628739ecde1389d8bbd6dd023999374", "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": {"data_schema": 1, "weak blueprint fit": 2, "partial blueprint fit": 1, "verification_or_tests": 4, "data_schema_persistence": 1, "issue_or_pull_request_thread": 1, "blueprint_human_gap_alignment": 3, "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": 28, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 1, "thread_has_comment": 1, "alignment_uses_comment": 3, "alignment_uses_finding": 3, "chain_has_link_quality": 6, "comment_aligns_finding": 3, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 1, "comment_chain_links_commit": 5, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 1}, "node_count": 23, "node_types": {"repo": 1, "commit": 5, "thread": 1, "comment": 1, "alignment": 3, "fix_outcome": 1, "issue_chain": 1, "link_quality": 6, "comment_chain": 1, "blueprint_finding": 3}, "query_type": "motif_query", "thread_key": "timogilvie/wavemill#719", "issue_number": "719", "quality_tiers": {"high_confidence": 3, "assumption_check": 3}, "repo_full_name": "timogilvie/wavemill", "training_usage": "curriculum_gap", "source_motif_id": "graph-pattern-motif-thread-31b0fec95a863b11", "graph_gold_label": "supported_by_verification_signal", "changed_file_labels": {}}, "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: timogilvie/wavemill\nThread: timogilvie/wavemill#719\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: timogilvie/wavemill\nThread: timogilvie/wavemill#719\nGraph gold label: supported_by_verification_signal\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: timogilvie/wavemill#719\nRepo: timogilvie/wavemill\nIssue/PR number: 719\nGraph consistency label: supported_by_verification_signal\nNodes: 23\nEdges: 28\nNode types: {'link_quality': 6, 'commit': 5, 'alignment': 3, 'blueprint_finding': 3, 'thread': 1, 'repo': 1, 'comment': 1, 'comment_chain': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'chain_has_link_quality': 6, 'comment_chain_links_commit': 5, 'alignment_uses_comment': 3, 'alignment_uses_finding': 3, 'comment_aligns_finding': 3, 'repo_has_thread': 1, 'thread_has_comment': 1, 'thread_has_comment_chain': 1, 'comment_has_chain': 1, 'thread_has_issue_chain': 1, 'issue_chain_has_comment_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'verification_or_tests': 4, 'claimed_resolved_with_verification_signal': 3, 'blueprint_human_gap_alignment': 3, 'thread_has_human_issue_and_fix_context': 2, 'weak blueprint fit': 2, 'issue_or_pull_request_thread': 1, 'data_schema_persistence': 1, 'human_reported_issue_then_verified_fix_attempt': 1, 'data_schema': 1, 'partial blueprint fit': 1}\nOutcomes: {'claimed_resolved_with_verification_signal': 6}\nQuality tiers: {'high_confidence': 3, 'assumption_check': 3}\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/timogilvie/wavemill", "source_id": "graph-query-motif_query-0c0648f19f0ff4bb", "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": "timogilvie/wavemill", "source_dataset": "graph_queries/blueprint_gap_alignment", "training_usage": "curriculum_gap"}}}, {"ruleId": "foundry_blueprint_gap", "level": "warning", "message": {"text": "Foundry mined blueprint gap alignment: timogilvie/wavemill"}, "properties": {"repobilityId": 404329, "scanner": "foundry_dataset", "fingerprint": "231a0f1d8f00d1b05feb538ec56c2839a712e00674fa8e2ea255e0679e8bedaf", "category": "tech_debt", "severity": "medium", "confidence": 0.7, "triageState": "open", "verdict": "needs_review", "isResolved": false, "reason": "Imported from mined Foundry/Fable5 evidence with real GitHub/source provenance. Review source_id before acting.", "evidence": {"meta": {"kind": "graph_query_record", "title": "Human feedback aligned with blueprint or architecture gaps", "intent": "Curriculum-gap examples connecting issue threads to helicopter-view gaps.", "labels": {"test_ci_gap": 1, "weak blueprint fit": 2, "partial blueprint fit": 1, "verification_or_tests": 5, "issue_or_pull_request_thread": 1, "ambiguous_needs_more_evidence": 3, "blueprint_human_gap_alignment": 3, "comment_has_related_commit_context": 1, "thread_has_human_issue_and_fix_context": 2}, "source": "graph_query_export", "motif_id": "blueprint_gap_alignment", "outcomes": {"ambiguous_needs_more_evidence": 6}, "polarity": "mixed", "query_id": "blueprint_gap_alignment", "severity": "medium", "ci_labels": {}, "synthetic": false, "edge_count": 28, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 1, "thread_has_comment": 1, "alignment_uses_comment": 3, "alignment_uses_finding": 3, "chain_has_link_quality": 6, "comment_aligns_finding": 3, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 1, "comment_chain_links_commit": 5, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 1}, "node_count": 23, "node_types": {"repo": 1, "commit": 5, "thread": 1, "comment": 1, "alignment": 3, "fix_outcome": 1, "issue_chain": 1, "link_quality": 6, "comment_chain": 1, "blueprint_finding": 3}, "query_type": "motif_query", "thread_key": "timogilvie/wavemill#718", "issue_number": "718", "quality_tiers": {"high_confidence": 3, "assumption_check": 3}, "repo_full_name": "timogilvie/wavemill", "training_usage": "curriculum_gap", "source_motif_id": "graph-pattern-motif-thread-d363116706d7fe55", "graph_gold_label": "supported_by_high_confidence_link", "changed_file_labels": {}}, "text": "Graph query export: Human feedback aligned with blueprint or architecture gaps\nQuery id: blueprint_gap_alignment\nQuery type: motif_query\nIntent: Curriculum-gap examples connecting issue threads to helicopter-view gaps.\nMotif: blueprint_gap_alignment\nTraining usage: curriculum_gap\nGraph gold label: supported_by_high_confidence_link\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#718\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: timogilvie/wavemill\nThread: timogilvie/wavemill#718\nGraph gold label: supported_by_high_confidence_link\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: timogilvie/wavemill#718\nRepo: timogilvie/wavemill\nIssue/PR number: 718\nGraph consistency label: supported_by_high_confidence_link\nNodes: 23\nEdges: 28\nNode types: {'link_quality': 6, 'commit': 5, 'alignment': 3, 'blueprint_finding': 3, 'thread': 1, 'repo': 1, 'comment': 1, 'comment_chain': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'chain_has_link_quality': 6, 'comment_chain_links_commit': 5, 'alignment_uses_comment': 3, 'alignment_uses_finding': 3, 'comment_aligns_finding': 3, 'repo_has_thread': 1, 'thread_has_comment': 1, 'thread_has_comment_chain': 1, 'comment_has_chain': 1, 'thread_has_issue_chain': 1, 'issue_chain_has_comment_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'verification_or_tests': 5, 'ambiguous_needs_more_evidence': 3, 'blueprint_human_gap_alignment': 3, 'thread_has_human_issue_and_fix_context': 2, 'weak blueprint fit': 2, 'issue_or_pull_request_thread': 1, 'test_ci_gap': 1, 'comment_has_related_commit_context': 1, 'partial blueprint fit': 1}\nOutcomes: {'ambiguous_needs_more_evidence': 6}\nQuality tiers: {'high_confidence': 3, 'assumption_check': 3}\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/timogilvie/wavemill", "source_id": "graph-query-motif_query-381741ed646fb3d9", "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": "timogilvie/wavemill", "source_dataset": "graph_queries/blueprint_gap_alignment", "training_usage": "curriculum_gap"}}}, {"ruleId": "foundry_blueprint_gap", "level": "warning", "message": {"text": "Foundry mined blueprint gap alignment: timogilvie/wavemill"}, "properties": {"repobilityId": 404328, "scanner": "foundry_dataset", "fingerprint": "00059a87e52439388e5f78f5469618389149960719da87deb10e6e75cb3dd39a", "category": "tech_debt", "severity": "medium", "confidence": 0.7, "triageState": "open", "verdict": "needs_review", "isResolved": false, "reason": "Imported from mined Foundry/Fable5 evidence with real GitHub/source provenance. Review source_id before acting.", "evidence": {"meta": {"kind": "graph_query_record", "title": "Human feedback aligned with blueprint or architecture gaps", "intent": "Curriculum-gap examples connecting issue threads to helicopter-view gaps.", "labels": {"test_ci_gap": 1, "weak blueprint fit": 2, "partial blueprint fit": 1, "verification_or_tests": 5, "issue_or_pull_request_thread": 1, "ambiguous_needs_more_evidence": 3, "blueprint_human_gap_alignment": 3, "comment_has_related_commit_context": 1, "thread_has_human_issue_and_fix_context": 2}, "source": "graph_query_export", "motif_id": "blueprint_gap_alignment", "outcomes": {"ambiguous_needs_more_evidence": 6}, "polarity": "mixed", "query_id": "blueprint_gap_alignment", "severity": "medium", "ci_labels": {}, "synthetic": false, "edge_count": 28, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 1, "thread_has_comment": 1, "alignment_uses_comment": 3, "alignment_uses_finding": 3, "chain_has_link_quality": 6, "comment_aligns_finding": 3, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 1, "comment_chain_links_commit": 5, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 1}, "node_count": 23, "node_types": {"repo": 1, "commit": 5, "thread": 1, "comment": 1, "alignment": 3, "fix_outcome": 1, "issue_chain": 1, "link_quality": 6, "comment_chain": 1, "blueprint_finding": 3}, "query_type": "motif_query", "thread_key": "timogilvie/wavemill#717", "issue_number": "717", "quality_tiers": {"high_confidence": 3, "assumption_check": 3}, "repo_full_name": "timogilvie/wavemill", "training_usage": "curriculum_gap", "source_motif_id": "graph-pattern-motif-thread-4ce28813777ea874", "graph_gold_label": "supported_by_high_confidence_link", "changed_file_labels": {}}, "text": "Graph query export: Human feedback aligned with blueprint or architecture gaps\nQuery id: blueprint_gap_alignment\nQuery type: motif_query\nIntent: Curriculum-gap examples connecting issue threads to helicopter-view gaps.\nMotif: blueprint_gap_alignment\nTraining usage: curriculum_gap\nGraph gold label: supported_by_high_confidence_link\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#717\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: timogilvie/wavemill\nThread: timogilvie/wavemill#717\nGraph gold label: supported_by_high_confidence_link\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: timogilvie/wavemill#717\nRepo: timogilvie/wavemill\nIssue/PR number: 717\nGraph consistency label: supported_by_high_confidence_link\nNodes: 23\nEdges: 28\nNode types: {'link_quality': 6, 'commit': 5, 'alignment': 3, 'blueprint_finding': 3, 'thread': 1, 'repo': 1, 'comment': 1, 'comment_chain': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'chain_has_link_quality': 6, 'comment_chain_links_commit': 5, 'alignment_uses_comment': 3, 'alignment_uses_finding': 3, 'comment_aligns_finding': 3, 'repo_has_thread': 1, 'thread_has_comment': 1, 'thread_has_comment_chain': 1, 'comment_has_chain': 1, 'thread_has_issue_chain': 1, 'issue_chain_has_comment_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'verification_or_tests': 5, 'ambiguous_needs_more_evidence': 3, 'blueprint_human_gap_alignment': 3, 'thread_has_human_issue_and_fix_context': 2, 'weak blueprint fit': 2, 'issue_or_pull_request_thread': 1, 'test_ci_gap': 1, 'comment_has_related_commit_context': 1, 'partial blueprint fit': 1}\nOutcomes: {'ambiguous_needs_more_evidence': 6}\nQuality tiers: {'high_confidence': 3, 'assumption_check': 3}\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/timogilvie/wavemill", "source_id": "graph-query-motif_query-2bc982c556924ef8", "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": "timogilvie/wavemill", "source_dataset": "graph_queries/blueprint_gap_alignment", "training_usage": "curriculum_gap"}}}, {"ruleId": "foundry_blueprint_gap", "level": "warning", "message": {"text": "Foundry mined blueprint gap alignment: timogilvie/wavemill"}, "properties": {"repobilityId": 404327, "scanner": "foundry_dataset", "fingerprint": "103d8a4b46680a6de44a912b3f644db27e59ff007cf05d8151f9a4582647abee", "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": 1, "data_schema": 1, "weak blueprint fit": 2, "partial blueprint fit": 1, "data_schema_persistence": 1, "claimed_resolved_unverified": 3, "issue_or_pull_request_thread": 1, "blueprint_human_gap_alignment": 3, "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": 25, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 1, "thread_has_comment": 1, "alignment_uses_comment": 3, "alignment_uses_finding": 3, "chain_has_link_quality": 6, "comment_aligns_finding": 3, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 1, "comment_chain_links_commit": 2, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 1}, "node_count": 20, "node_types": {"repo": 1, "commit": 2, "thread": 1, "comment": 1, "alignment": 3, "fix_outcome": 1, "issue_chain": 1, "link_quality": 6, "comment_chain": 1, "blueprint_finding": 3}, "query_type": "motif_query", "thread_key": "timogilvie/wavemill#713", "issue_number": "713", "quality_tiers": {"high_confidence": 3, "assumption_check": 3}, "repo_full_name": "timogilvie/wavemill", "training_usage": "curriculum_gap", "source_motif_id": "graph-pattern-motif-thread-74862e7aa3256960", "graph_gold_label": "supported_by_high_confidence_link", "changed_file_labels": {}}, "text": "Graph query export: Human feedback aligned with blueprint or architecture gaps\nQuery id: blueprint_gap_alignment\nQuery type: motif_query\nIntent: Curriculum-gap examples connecting issue threads to helicopter-view gaps.\nMotif: blueprint_gap_alignment\nTraining usage: curriculum_gap\nGraph gold label: supported_by_high_confidence_link\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#713\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: timogilvie/wavemill\nThread: timogilvie/wavemill#713\nGraph gold label: supported_by_high_confidence_link\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: timogilvie/wavemill#713\nRepo: timogilvie/wavemill\nIssue/PR number: 713\nGraph consistency label: supported_by_high_confidence_link\nNodes: 20\nEdges: 25\nNode types: {'link_quality': 6, 'alignment': 3, 'blueprint_finding': 3, 'commit': 2, 'thread': 1, 'repo': 1, 'comment': 1, 'comment_chain': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'chain_has_link_quality': 6, 'alignment_uses_comment': 3, 'alignment_uses_finding': 3, 'comment_aligns_finding': 3, 'comment_chain_links_commit': 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: {'claimed_resolved_unverified': 3, 'blueprint_human_gap_alignment': 3, 'thread_has_human_issue_and_fix_context': 2, 'weak blueprint fit': 2, 'issue_or_pull_request_thread': 1, 'data_schema_persistence': 1, 'human_reported_issue_then_fix_attempt': 1, 'bug_fix': 1, 'data_schema': 1, 'partial blueprint fit': 1}\nOutcomes: {'claimed_resolved_unverified': 6}\nQuality tiers: {'high_confidence': 3, 'assumption_check': 3}\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/timogilvie/wavemill", "source_id": "graph-query-motif_query-ab291d2eb582ddb4", "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": "timogilvie/wavemill", "source_dataset": "graph_queries/blueprint_gap_alignment", "training_usage": "curriculum_gap"}}}, {"ruleId": "foundry_blueprint_gap", "level": "warning", "message": {"text": "Foundry mined blueprint gap alignment: timogilvie/wavemill"}, "properties": {"repobilityId": 404326, "scanner": "foundry_dataset", "fingerprint": "2cf556d6046d5148f9b56e837e84b9d986c256f4dba65b30e5141551beec1ef5", "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, "test_ci_gap": 1, "weak blueprint fit": 2, "partial blueprint fit": 1, "verification_or_tests": 3, "issue_or_pull_request_thread": 1, "blueprint_human_gap_alignment": 3, "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": 28, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 1, "thread_has_comment": 1, "alignment_uses_comment": 3, "alignment_uses_finding": 3, "chain_has_link_quality": 6, "comment_aligns_finding": 3, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 1, "comment_chain_links_commit": 5, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 1}, "node_count": 23, "node_types": {"repo": 1, "commit": 5, "thread": 1, "comment": 1, "alignment": 3, "fix_outcome": 1, "issue_chain": 1, "link_quality": 6, "comment_chain": 1, "blueprint_finding": 3}, "query_type": "motif_query", "thread_key": "timogilvie/wavemill#711", "issue_number": "711", "quality_tiers": {"high_confidence": 3, "assumption_check": 3}, "repo_full_name": "timogilvie/wavemill", "training_usage": "curriculum_gap", "source_motif_id": "graph-pattern-motif-thread-8ff67e1187d44a21", "graph_gold_label": "supported_by_verification_signal", "changed_file_labels": {}}, "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: timogilvie/wavemill\nThread: timogilvie/wavemill#711\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: timogilvie/wavemill\nThread: timogilvie/wavemill#711\nGraph gold label: supported_by_verification_signal\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: timogilvie/wavemill#711\nRepo: timogilvie/wavemill\nIssue/PR number: 711\nGraph consistency label: supported_by_verification_signal\nNodes: 23\nEdges: 28\nNode types: {'link_quality': 6, 'commit': 5, 'alignment': 3, 'blueprint_finding': 3, 'thread': 1, 'repo': 1, 'comment': 1, 'comment_chain': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'chain_has_link_quality': 6, 'comment_chain_links_commit': 5, 'alignment_uses_comment': 3, 'alignment_uses_finding': 3, 'comment_aligns_finding': 3, 'repo_has_thread': 1, 'thread_has_comment': 1, 'thread_has_comment_chain': 1, 'comment_has_chain': 1, 'thread_has_issue_chain': 1, 'issue_chain_has_comment_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'verification_or_tests': 3, 'claimed_resolved_with_verification_signal': 3, 'blueprint_human_gap_alignment': 3, 'bug_fix': 2, 'thread_has_human_issue_and_fix_context': 2, 'weak blueprint fit': 2, 'issue_or_pull_request_thread': 1, 'test_ci_gap': 1, 'human_reported_issue_then_verified_fix_attempt': 1, 'partial blueprint fit': 1}\nOutcomes: {'claimed_resolved_with_verification_signal': 6}\nQuality tiers: {'high_confidence': 3, 'assumption_check': 3}\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/timogilvie/wavemill", "source_id": "graph-query-motif_query-fdc9390f7f0e4dde", "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": "timogilvie/wavemill", "source_dataset": "graph_queries/blueprint_gap_alignment", "training_usage": "curriculum_gap"}}}, {"ruleId": "foundry_blueprint_gap", "level": "warning", "message": {"text": "Foundry mined blueprint gap alignment: timogilvie/wavemill"}, "properties": {"repobilityId": 404325, "scanner": "foundry_dataset", "fingerprint": "4c9ac2b0fff7ef2c3d3eec450ead7f019f525aade1bfee4712af308efbf04e06", "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, "weak blueprint fit": 2, "partial blueprint fit": 1, "verification_or_tests": 3, "data_schema_persistence": 1, "issue_or_pull_request_thread": 1, "blueprint_human_gap_alignment": 3, "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": 28, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 1, "thread_has_comment": 1, "alignment_uses_comment": 3, "alignment_uses_finding": 3, "chain_has_link_quality": 6, "comment_aligns_finding": 3, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 1, "comment_chain_links_commit": 5, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 1}, "node_count": 23, "node_types": {"repo": 1, "commit": 5, "thread": 1, "comment": 1, "alignment": 3, "fix_outcome": 1, "issue_chain": 1, "link_quality": 6, "comment_chain": 1, "blueprint_finding": 3}, "query_type": "motif_query", "thread_key": "timogilvie/wavemill#710", "issue_number": "710", "quality_tiers": {"high_confidence": 3, "assumption_check": 3}, "repo_full_name": "timogilvie/wavemill", "training_usage": "curriculum_gap", "source_motif_id": "graph-pattern-motif-thread-d1b630b86e63e702", "graph_gold_label": "supported_by_verification_signal", "changed_file_labels": {}}, "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: timogilvie/wavemill\nThread: timogilvie/wavemill#710\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: timogilvie/wavemill\nThread: timogilvie/wavemill#710\nGraph gold label: supported_by_verification_signal\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: timogilvie/wavemill#710\nRepo: timogilvie/wavemill\nIssue/PR number: 710\nGraph consistency label: supported_by_verification_signal\nNodes: 23\nEdges: 28\nNode types: {'link_quality': 6, 'commit': 5, 'alignment': 3, 'blueprint_finding': 3, 'thread': 1, 'repo': 1, 'comment': 1, 'comment_chain': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'chain_has_link_quality': 6, 'comment_chain_links_commit': 5, 'alignment_uses_comment': 3, 'alignment_uses_finding': 3, 'comment_aligns_finding': 3, 'repo_has_thread': 1, 'thread_has_comment': 1, 'thread_has_comment_chain': 1, 'comment_has_chain': 1, 'thread_has_issue_chain': 1, 'issue_chain_has_comment_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'verification_or_tests': 3, 'claimed_resolved_with_verification_signal': 3, 'blueprint_human_gap_alignment': 3, 'bug_fix': 2, 'thread_has_human_issue_and_fix_context': 2, 'weak blueprint fit': 2, 'issue_or_pull_request_thread': 1, 'data_schema_persistence': 1, 'human_reported_issue_then_verified_fix_attempt': 1, 'partial blueprint fit': 1}\nOutcomes: {'claimed_resolved_with_verification_signal': 6}\nQuality tiers: {'high_confidence': 3, 'assumption_check': 3}\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/timogilvie/wavemill", "source_id": "graph-query-motif_query-d6cee31c3db079f0", "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": "timogilvie/wavemill", "source_dataset": "graph_queries/blueprint_gap_alignment", "training_usage": "curriculum_gap"}}}, {"ruleId": "foundry_blueprint_gap", "level": "warning", "message": {"text": "Foundry mined blueprint gap alignment: timogilvie/wavemill"}, "properties": {"repobilityId": 404324, "scanner": "foundry_dataset", "fingerprint": "ce561a1def3283691e284311843878aa4262dbb6987eaef0a6bc4db4b11adef2", "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": {"commit_general": 1, "weak blueprint fit": 2, "partial blueprint fit": 1, "verification_or_tests": 4, "data_schema_persistence": 1, "issue_or_pull_request_thread": 1, "ambiguous_needs_more_evidence": 3, "blueprint_human_gap_alignment": 3, "comment_has_related_commit_context": 1, "thread_has_human_issue_and_fix_context": 2}, "source": "graph_query_export", "motif_id": "blueprint_gap_alignment", "outcomes": {"ambiguous_needs_more_evidence": 6}, "polarity": "mixed", "query_id": "blueprint_gap_alignment", "severity": "medium", "ci_labels": {}, "synthetic": false, "edge_count": 28, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 1, "thread_has_comment": 1, "alignment_uses_comment": 3, "alignment_uses_finding": 3, "chain_has_link_quality": 6, "comment_aligns_finding": 3, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 1, "comment_chain_links_commit": 5, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 1}, "node_count": 23, "node_types": {"repo": 1, "commit": 5, "thread": 1, "comment": 1, "alignment": 3, "fix_outcome": 1, "issue_chain": 1, "link_quality": 6, "comment_chain": 1, "blueprint_finding": 3}, "query_type": "motif_query", "thread_key": "timogilvie/wavemill#709", "issue_number": "709", "quality_tiers": {"high_confidence": 3, "assumption_check": 3}, "repo_full_name": "timogilvie/wavemill", "training_usage": "curriculum_gap", "source_motif_id": "graph-pattern-motif-thread-6a38106c85071624", "graph_gold_label": "supported_by_high_confidence_link", "changed_file_labels": {}}, "text": "Graph query export: Human feedback aligned with blueprint or architecture gaps\nQuery id: blueprint_gap_alignment\nQuery type: motif_query\nIntent: Curriculum-gap examples connecting issue threads to helicopter-view gaps.\nMotif: blueprint_gap_alignment\nTraining usage: curriculum_gap\nGraph gold label: supported_by_high_confidence_link\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#709\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: timogilvie/wavemill\nThread: timogilvie/wavemill#709\nGraph gold label: supported_by_high_confidence_link\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: timogilvie/wavemill#709\nRepo: timogilvie/wavemill\nIssue/PR number: 709\nGraph consistency label: supported_by_high_confidence_link\nNodes: 23\nEdges: 28\nNode types: {'link_quality': 6, 'commit': 5, 'alignment': 3, 'blueprint_finding': 3, 'thread': 1, 'repo': 1, 'comment': 1, 'comment_chain': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'chain_has_link_quality': 6, 'comment_chain_links_commit': 5, 'alignment_uses_comment': 3, 'alignment_uses_finding': 3, 'comment_aligns_finding': 3, 'repo_has_thread': 1, 'thread_has_comment': 1, 'thread_has_comment_chain': 1, 'comment_has_chain': 1, 'thread_has_issue_chain': 1, 'issue_chain_has_comment_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'verification_or_tests': 4, 'ambiguous_needs_more_evidence': 3, 'blueprint_human_gap_alignment': 3, 'thread_has_human_issue_and_fix_context': 2, 'weak blueprint fit': 2, 'issue_or_pull_request_thread': 1, 'data_schema_persistence': 1, 'comment_has_related_commit_context': 1, 'commit_general': 1, 'partial blueprint fit': 1}\nOutcomes: {'ambiguous_needs_more_evidence': 6}\nQuality tiers: {'high_confidence': 3, 'assumption_check': 3}\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/timogilvie/wavemill", "source_id": "graph-query-motif_query-f871df5a08cfc8cd", "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": "timogilvie/wavemill", "source_dataset": "graph_queries/blueprint_gap_alignment", "training_usage": "curriculum_gap"}}}, {"ruleId": "foundry_blueprint_gap", "level": "warning", "message": {"text": "Foundry mined blueprint gap alignment: timogilvie/wavemill"}, "properties": {"repobilityId": 404323, "scanner": "foundry_dataset", "fingerprint": "40ecfc3050a7fa599ad324fbfae85fc952cfb17efe2faa8ed2ddd83b40977648", "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": 1, "test_ci_gap": 1, "weak blueprint fit": 2, "partial blueprint fit": 1, "verification_or_tests": 4, "issue_or_pull_request_thread": 1, "blueprint_human_gap_alignment": 3, "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": 28, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 1, "thread_has_comment": 1, "alignment_uses_comment": 3, "alignment_uses_finding": 3, "chain_has_link_quality": 6, "comment_aligns_finding": 3, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 1, "comment_chain_links_commit": 5, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 1}, "node_count": 23, "node_types": {"repo": 1, "commit": 5, "thread": 1, "comment": 1, "alignment": 3, "fix_outcome": 1, "issue_chain": 1, "link_quality": 6, "comment_chain": 1, "blueprint_finding": 3}, "query_type": "motif_query", "thread_key": "timogilvie/wavemill#707", "issue_number": "707", "quality_tiers": {"high_confidence": 3, "assumption_check": 3}, "repo_full_name": "timogilvie/wavemill", "training_usage": "curriculum_gap", "source_motif_id": "graph-pattern-motif-thread-9769ddb7491dd712", "graph_gold_label": "supported_by_verification_signal", "changed_file_labels": {}}, "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: timogilvie/wavemill\nThread: timogilvie/wavemill#707\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: timogilvie/wavemill\nThread: timogilvie/wavemill#707\nGraph gold label: supported_by_verification_signal\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: timogilvie/wavemill#707\nRepo: timogilvie/wavemill\nIssue/PR number: 707\nGraph consistency label: supported_by_verification_signal\nNodes: 23\nEdges: 28\nNode types: {'link_quality': 6, 'commit': 5, 'alignment': 3, 'blueprint_finding': 3, 'thread': 1, 'repo': 1, 'comment': 1, 'comment_chain': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'chain_has_link_quality': 6, 'comment_chain_links_commit': 5, 'alignment_uses_comment': 3, 'alignment_uses_finding': 3, 'comment_aligns_finding': 3, 'repo_has_thread': 1, 'thread_has_comment': 1, 'thread_has_comment_chain': 1, 'comment_has_chain': 1, 'thread_has_issue_chain': 1, 'issue_chain_has_comment_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'verification_or_tests': 4, 'claimed_resolved_with_verification_signal': 3, 'blueprint_human_gap_alignment': 3, 'thread_has_human_issue_and_fix_context': 2, 'weak blueprint fit': 2, 'issue_or_pull_request_thread': 1, 'test_ci_gap': 1, 'human_reported_issue_then_verified_fix_attempt': 1, 'bug_fix': 1, 'partial blueprint fit': 1}\nOutcomes: {'claimed_resolved_with_verification_signal': 6}\nQuality tiers: {'high_confidence': 3, 'assumption_check': 3}\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/timogilvie/wavemill", "source_id": "graph-query-motif_query-b56745762f9ba509", "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": "timogilvie/wavemill", "source_dataset": "graph_queries/blueprint_gap_alignment", "training_usage": "curriculum_gap"}}}, {"ruleId": "foundry_blueprint_gap", "level": "warning", "message": {"text": "Foundry mined blueprint gap alignment: timogilvie/wavemill"}, "properties": {"repobilityId": 404322, "scanner": "foundry_dataset", "fingerprint": "936aff951472c4c91235d971a33a4a0f6c13311bde406a8c1691f61ce9969693", "category": "tech_debt", "severity": "medium", "confidence": 0.7, "triageState": "open", "verdict": "needs_review", "isResolved": false, "reason": "Imported from mined Foundry/Fable5 evidence with real GitHub/source provenance. Review source_id before acting.", "evidence": {"meta": {"kind": "graph_query_record", "title": "Human feedback aligned with blueprint or architecture gaps", "intent": "Curriculum-gap examples connecting issue threads to helicopter-view gaps.", "labels": {"test_ci_gap": 1, "weak blueprint fit": 2, "partial blueprint fit": 1, "verification_or_tests": 5, "issue_or_pull_request_thread": 1, "ambiguous_needs_more_evidence": 3, "blueprint_human_gap_alignment": 3, "comment_has_related_commit_context": 1, "thread_has_human_issue_and_fix_context": 2}, "source": "graph_query_export", "motif_id": "blueprint_gap_alignment", "outcomes": {"ambiguous_needs_more_evidence": 6}, "polarity": "mixed", "query_id": "blueprint_gap_alignment", "severity": "medium", "ci_labels": {}, "synthetic": false, "edge_count": 28, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 1, "thread_has_comment": 1, "alignment_uses_comment": 3, "alignment_uses_finding": 3, "chain_has_link_quality": 6, "comment_aligns_finding": 3, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 1, "comment_chain_links_commit": 5, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 1}, "node_count": 23, "node_types": {"repo": 1, "commit": 5, "thread": 1, "comment": 1, "alignment": 3, "fix_outcome": 1, "issue_chain": 1, "link_quality": 6, "comment_chain": 1, "blueprint_finding": 3}, "query_type": "motif_query", "thread_key": "timogilvie/wavemill#706", "issue_number": "706", "quality_tiers": {"high_confidence": 3, "assumption_check": 3}, "repo_full_name": "timogilvie/wavemill", "training_usage": "curriculum_gap", "source_motif_id": "graph-pattern-motif-thread-6e235efb528e5ce8", "graph_gold_label": "supported_by_high_confidence_link", "changed_file_labels": {}}, "text": "Graph query export: Human feedback aligned with blueprint or architecture gaps\nQuery id: blueprint_gap_alignment\nQuery type: motif_query\nIntent: Curriculum-gap examples connecting issue threads to helicopter-view gaps.\nMotif: blueprint_gap_alignment\nTraining usage: curriculum_gap\nGraph gold label: supported_by_high_confidence_link\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#706\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: timogilvie/wavemill\nThread: timogilvie/wavemill#706\nGraph gold label: supported_by_high_confidence_link\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: timogilvie/wavemill#706\nRepo: timogilvie/wavemill\nIssue/PR number: 706\nGraph consistency label: supported_by_high_confidence_link\nNodes: 23\nEdges: 28\nNode types: {'link_quality': 6, 'commit': 5, 'alignment': 3, 'blueprint_finding': 3, 'thread': 1, 'repo': 1, 'comment': 1, 'comment_chain': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'chain_has_link_quality': 6, 'comment_chain_links_commit': 5, 'alignment_uses_comment': 3, 'alignment_uses_finding': 3, 'comment_aligns_finding': 3, 'repo_has_thread': 1, 'thread_has_comment': 1, 'thread_has_comment_chain': 1, 'comment_has_chain': 1, 'thread_has_issue_chain': 1, 'issue_chain_has_comment_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'verification_or_tests': 5, 'ambiguous_needs_more_evidence': 3, 'blueprint_human_gap_alignment': 3, 'thread_has_human_issue_and_fix_context': 2, 'weak blueprint fit': 2, 'issue_or_pull_request_thread': 1, 'test_ci_gap': 1, 'comment_has_related_commit_context': 1, 'partial blueprint fit': 1}\nOutcomes: {'ambiguous_needs_more_evidence': 6}\nQuality tiers: {'high_confidence': 3, 'assumption_check': 3}\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/timogilvie/wavemill", "source_id": "graph-query-motif_query-6e8dda04406efc60", "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": "timogilvie/wavemill", "source_dataset": "graph_queries/blueprint_gap_alignment", "training_usage": "curriculum_gap"}}}, {"ruleId": "foundry_blueprint_gap", "level": "warning", "message": {"text": "Foundry mined blueprint gap alignment: timogilvie/wavemill"}, "properties": {"repobilityId": 404321, "scanner": "foundry_dataset", "fingerprint": "0dc35b5d52278330e3022dbe6236161f75a1d375c798e740042dcf5b0d5bf2cb", "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": {"revert": 1, "bug_fix": 1, "weak blueprint fit": 2, "api_integration_gap": 1, "partial blueprint fit": 1, "verification_or_tests": 3, "issue_or_pull_request_thread": 1, "blueprint_human_gap_alignment": 3, "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": 28, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 1, "thread_has_comment": 1, "alignment_uses_comment": 3, "alignment_uses_finding": 3, "chain_has_link_quality": 6, "comment_aligns_finding": 3, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 1, "comment_chain_links_commit": 5, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 1}, "node_count": 23, "node_types": {"repo": 1, "commit": 5, "thread": 1, "comment": 1, "alignment": 3, "fix_outcome": 1, "issue_chain": 1, "link_quality": 6, "comment_chain": 1, "blueprint_finding": 3}, "query_type": "motif_query", "thread_key": "timogilvie/wavemill#705", "issue_number": "705", "quality_tiers": {"high_confidence": 3, "assumption_check": 3}, "repo_full_name": "timogilvie/wavemill", "training_usage": "curriculum_gap", "source_motif_id": "graph-pattern-motif-thread-0bcd3ecae95b6d59", "graph_gold_label": "supported_by_verification_signal", "changed_file_labels": {}}, "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: timogilvie/wavemill\nThread: timogilvie/wavemill#705\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: timogilvie/wavemill\nThread: timogilvie/wavemill#705\nGraph gold label: supported_by_verification_signal\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: timogilvie/wavemill#705\nRepo: timogilvie/wavemill\nIssue/PR number: 705\nGraph consistency label: supported_by_verification_signal\nNodes: 23\nEdges: 28\nNode types: {'link_quality': 6, 'commit': 5, 'alignment': 3, 'blueprint_finding': 3, 'thread': 1, 'repo': 1, 'comment': 1, 'comment_chain': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'chain_has_link_quality': 6, 'comment_chain_links_commit': 5, 'alignment_uses_comment': 3, 'alignment_uses_finding': 3, 'comment_aligns_finding': 3, 'repo_has_thread': 1, 'thread_has_comment': 1, 'thread_has_comment_chain': 1, 'comment_has_chain': 1, 'thread_has_issue_chain': 1, 'issue_chain_has_comment_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'verification_or_tests': 3, 'claimed_resolved_with_verification_signal': 3, 'blueprint_human_gap_alignment': 3, 'thread_has_human_issue_and_fix_context': 2, 'weak blueprint fit': 2, 'issue_or_pull_request_thread': 1, 'api_integration_gap': 1, 'human_reported_issue_then_verified_fix_attempt': 1, 'revert': 1, 'bug_fix': 1, 'partial blueprint fit': 1}\nOutcomes: {'claimed_resolved_with_verification_signal': 6}\nQuality tiers: {'high_confidence': 3, 'assumption_check': 3}\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/timogilvie/wavemill", "source_id": "graph-query-motif_query-62d7e0b56950e332", "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": "timogilvie/wavemill", "source_dataset": "graph_queries/blueprint_gap_alignment", "training_usage": "curriculum_gap"}}}, {"ruleId": "foundry_blueprint_gap", "level": "warning", "message": {"text": "Foundry mined blueprint gap alignment: timogilvie/wavemill"}, "properties": {"repobilityId": 404320, "scanner": "foundry_dataset", "fingerprint": "3103cb25a769fc8ff619feb25eeb3e2026e50394efb8c654f9f2c10466c38206", "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": 1, "test_ci_gap": 1, "weak blueprint fit": 2, "partial blueprint fit": 1, "verification_or_tests": 4, "issue_or_pull_request_thread": 1, "blueprint_human_gap_alignment": 3, "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": 28, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 1, "thread_has_comment": 1, "alignment_uses_comment": 3, "alignment_uses_finding": 3, "chain_has_link_quality": 6, "comment_aligns_finding": 3, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 1, "comment_chain_links_commit": 5, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 1}, "node_count": 23, "node_types": {"repo": 1, "commit": 5, "thread": 1, "comment": 1, "alignment": 3, "fix_outcome": 1, "issue_chain": 1, "link_quality": 6, "comment_chain": 1, "blueprint_finding": 3}, "query_type": "motif_query", "thread_key": "timogilvie/wavemill#704", "issue_number": "704", "quality_tiers": {"high_confidence": 3, "assumption_check": 3}, "repo_full_name": "timogilvie/wavemill", "training_usage": "curriculum_gap", "source_motif_id": "graph-pattern-motif-thread-847022d9f7fd6c56", "graph_gold_label": "supported_by_verification_signal", "changed_file_labels": {}}, "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: timogilvie/wavemill\nThread: timogilvie/wavemill#704\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: timogilvie/wavemill\nThread: timogilvie/wavemill#704\nGraph gold label: supported_by_verification_signal\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: timogilvie/wavemill#704\nRepo: timogilvie/wavemill\nIssue/PR number: 704\nGraph consistency label: supported_by_verification_signal\nNodes: 23\nEdges: 28\nNode types: {'link_quality': 6, 'commit': 5, 'alignment': 3, 'blueprint_finding': 3, 'thread': 1, 'repo': 1, 'comment': 1, 'comment_chain': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'chain_has_link_quality': 6, 'comment_chain_links_commit': 5, 'alignment_uses_comment': 3, 'alignment_uses_finding': 3, 'comment_aligns_finding': 3, 'repo_has_thread': 1, 'thread_has_comment': 1, 'thread_has_comment_chain': 1, 'comment_has_chain': 1, 'thread_has_issue_chain': 1, 'issue_chain_has_comment_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'verification_or_tests': 4, 'claimed_resolved_with_verification_signal': 3, 'blueprint_human_gap_alignment': 3, 'thread_has_human_issue_and_fix_context': 2, 'weak blueprint fit': 2, 'issue_or_pull_request_thread': 1, 'test_ci_gap': 1, 'human_reported_issue_then_verified_fix_attempt': 1, 'bug_fix': 1, 'partial blueprint fit': 1}\nOutcomes: {'claimed_resolved_with_verification_signal': 6}\nQuality tiers: {'high_confidence': 3, 'assumption_check': 3}\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/timogilvie/wavemill", "source_id": "graph-query-motif_query-f3202ee01cbc8b54", "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": "timogilvie/wavemill", "source_dataset": "graph_queries/blueprint_gap_alignment", "training_usage": "curriculum_gap"}}}, {"ruleId": "foundry_blueprint_gap", "level": "warning", "message": {"text": "Foundry mined blueprint gap alignment: timogilvie/wavemill"}, "properties": {"repobilityId": 404319, "scanner": "foundry_dataset", "fingerprint": "06059c24e918b3a7c8d51a6563ac4b5ef0d9b72df375c05f77360274f9bf8025", "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": 1, "test_ci_gap": 1, "commit_general": 1, "weak blueprint fit": 2, "partial blueprint fit": 1, "verification_or_tests": 3, "issue_or_pull_request_thread": 1, "blueprint_human_gap_alignment": 3, "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": 28, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 1, "thread_has_comment": 1, "alignment_uses_comment": 3, "alignment_uses_finding": 3, "chain_has_link_quality": 6, "comment_aligns_finding": 3, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 1, "comment_chain_links_commit": 5, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 1}, "node_count": 23, "node_types": {"repo": 1, "commit": 5, "thread": 1, "comment": 1, "alignment": 3, "fix_outcome": 1, "issue_chain": 1, "link_quality": 6, "comment_chain": 1, "blueprint_finding": 3}, "query_type": "motif_query", "thread_key": "timogilvie/wavemill#703", "issue_number": "703", "quality_tiers": {"high_confidence": 3, "assumption_check": 3}, "repo_full_name": "timogilvie/wavemill", "training_usage": "curriculum_gap", "source_motif_id": "graph-pattern-motif-thread-1c7a3d4ca781f670", "graph_gold_label": "supported_by_verification_signal", "changed_file_labels": {}}, "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: timogilvie/wavemill\nThread: timogilvie/wavemill#703\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: timogilvie/wavemill\nThread: timogilvie/wavemill#703\nGraph gold label: supported_by_verification_signal\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: timogilvie/wavemill#703\nRepo: timogilvie/wavemill\nIssue/PR number: 703\nGraph consistency label: supported_by_verification_signal\nNodes: 23\nEdges: 28\nNode types: {'link_quality': 6, 'commit': 5, 'alignment': 3, 'blueprint_finding': 3, 'thread': 1, 'repo': 1, 'comment': 1, 'comment_chain': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'chain_has_link_quality': 6, 'comment_chain_links_commit': 5, 'alignment_uses_comment': 3, 'alignment_uses_finding': 3, 'comment_aligns_finding': 3, 'repo_has_thread': 1, 'thread_has_comment': 1, 'thread_has_comment_chain': 1, 'comment_has_chain': 1, 'thread_has_issue_chain': 1, 'issue_chain_has_comment_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'verification_or_tests': 3, 'claimed_resolved_with_verification_signal': 3, 'blueprint_human_gap_alignment': 3, 'thread_has_human_issue_and_fix_context': 2, 'weak blueprint fit': 2, 'issue_or_pull_request_thread': 1, 'test_ci_gap': 1, 'human_reported_issue_then_verified_fix_attempt': 1, 'commit_general': 1, 'bug_fix': 1, 'partial blueprint fit': 1}\nOutcomes: {'claimed_resolved_with_verification_signal': 6}\nQuality tiers: {'high_confidence': 3, 'assumption_check': 3}\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/timogilvie/wavemill", "source_id": "graph-query-motif_query-8f8057a31aafa757", "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": "timogilvie/wavemill", "source_dataset": "graph_queries/blueprint_gap_alignment", "training_usage": "curriculum_gap"}}}, {"ruleId": "foundry_blueprint_gap", "level": "warning", "message": {"text": "Foundry mined blueprint gap alignment: timogilvie/wavemill"}, "properties": {"repobilityId": 404318, "scanner": "foundry_dataset", "fingerprint": "0434cfc77cdf7d72be24a1d7899da9521c9b9634ce7f137aeb5f39ec72a1e8ec", "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": {"revert": 1, "weak blueprint fit": 2, "api_integration_gap": 1, "partial blueprint fit": 1, "verification_or_tests": 4, "issue_or_pull_request_thread": 1, "ambiguous_needs_more_evidence": 3, "blueprint_human_gap_alignment": 3, "comment_has_related_commit_context": 1, "thread_has_human_issue_and_fix_context": 2}, "source": "graph_query_export", "motif_id": "blueprint_gap_alignment", "outcomes": {"ambiguous_needs_more_evidence": 6}, "polarity": "mixed", "query_id": "blueprint_gap_alignment", "severity": "medium", "ci_labels": {}, "synthetic": false, "edge_count": 28, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 1, "thread_has_comment": 1, "alignment_uses_comment": 3, "alignment_uses_finding": 3, "chain_has_link_quality": 6, "comment_aligns_finding": 3, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 1, "comment_chain_links_commit": 5, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 1}, "node_count": 23, "node_types": {"repo": 1, "commit": 5, "thread": 1, "comment": 1, "alignment": 3, "fix_outcome": 1, "issue_chain": 1, "link_quality": 6, "comment_chain": 1, "blueprint_finding": 3}, "query_type": "motif_query", "thread_key": "timogilvie/wavemill#701", "issue_number": "701", "quality_tiers": {"high_confidence": 3, "assumption_check": 3}, "repo_full_name": "timogilvie/wavemill", "training_usage": "curriculum_gap", "source_motif_id": "graph-pattern-motif-thread-4b4850fe35cb2779", "graph_gold_label": "supported_by_high_confidence_link", "changed_file_labels": {}}, "text": "Graph query export: Human feedback aligned with blueprint or architecture gaps\nQuery id: blueprint_gap_alignment\nQuery type: motif_query\nIntent: Curriculum-gap examples connecting issue threads to helicopter-view gaps.\nMotif: blueprint_gap_alignment\nTraining usage: curriculum_gap\nGraph gold label: supported_by_high_confidence_link\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#701\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: timogilvie/wavemill\nThread: timogilvie/wavemill#701\nGraph gold label: supported_by_high_confidence_link\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: timogilvie/wavemill#701\nRepo: timogilvie/wavemill\nIssue/PR number: 701\nGraph consistency label: supported_by_high_confidence_link\nNodes: 23\nEdges: 28\nNode types: {'link_quality': 6, 'commit': 5, 'alignment': 3, 'blueprint_finding': 3, 'thread': 1, 'repo': 1, 'comment': 1, 'comment_chain': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'chain_has_link_quality': 6, 'comment_chain_links_commit': 5, 'alignment_uses_comment': 3, 'alignment_uses_finding': 3, 'comment_aligns_finding': 3, 'repo_has_thread': 1, 'thread_has_comment': 1, 'thread_has_comment_chain': 1, 'comment_has_chain': 1, 'thread_has_issue_chain': 1, 'issue_chain_has_comment_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'verification_or_tests': 4, 'ambiguous_needs_more_evidence': 3, 'blueprint_human_gap_alignment': 3, 'thread_has_human_issue_and_fix_context': 2, 'weak blueprint fit': 2, 'issue_or_pull_request_thread': 1, 'api_integration_gap': 1, 'comment_has_related_commit_context': 1, 'revert': 1, 'partial blueprint fit': 1}\nOutcomes: {'ambiguous_needs_more_evidence': 6}\nQuality tiers: {'high_confidence': 3, 'assumption_check': 3}\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/timogilvie/wavemill", "source_id": "graph-query-motif_query-850896d1d59621d5", "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": "timogilvie/wavemill", "source_dataset": "graph_queries/blueprint_gap_alignment", "training_usage": "curriculum_gap"}}}, {"ruleId": "foundry_blueprint_gap", "level": "warning", "message": {"text": "Foundry mined blueprint gap alignment: timogilvie/wavemill"}, "properties": {"repobilityId": 404317, "scanner": "foundry_dataset", "fingerprint": "578de0ad96aa24bfde786e52712acd1a92cfd34342eee82dbd45b0d164eb7519", "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": 1, "weak blueprint fit": 2, "api_integration_gap": 1, "partial blueprint fit": 1, "verification_or_tests": 4, "issue_or_pull_request_thread": 1, "blueprint_human_gap_alignment": 3, "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": 28, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 1, "thread_has_comment": 1, "alignment_uses_comment": 3, "alignment_uses_finding": 3, "chain_has_link_quality": 6, "comment_aligns_finding": 3, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 1, "comment_chain_links_commit": 5, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 1}, "node_count": 23, "node_types": {"repo": 1, "commit": 5, "thread": 1, "comment": 1, "alignment": 3, "fix_outcome": 1, "issue_chain": 1, "link_quality": 6, "comment_chain": 1, "blueprint_finding": 3}, "query_type": "motif_query", "thread_key": "timogilvie/wavemill#695", "issue_number": "695", "quality_tiers": {"high_confidence": 3, "assumption_check": 3}, "repo_full_name": "timogilvie/wavemill", "training_usage": "curriculum_gap", "source_motif_id": "graph-pattern-motif-thread-22353f4dd1e2b160", "graph_gold_label": "supported_by_verification_signal", "changed_file_labels": {}}, "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: timogilvie/wavemill\nThread: timogilvie/wavemill#695\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: timogilvie/wavemill\nThread: timogilvie/wavemill#695\nGraph gold label: supported_by_verification_signal\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: timogilvie/wavemill#695\nRepo: timogilvie/wavemill\nIssue/PR number: 695\nGraph consistency label: supported_by_verification_signal\nNodes: 23\nEdges: 28\nNode types: {'link_quality': 6, 'commit': 5, 'alignment': 3, 'blueprint_finding': 3, 'thread': 1, 'repo': 1, 'comment': 1, 'comment_chain': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'chain_has_link_quality': 6, 'comment_chain_links_commit': 5, 'alignment_uses_comment': 3, 'alignment_uses_finding': 3, 'comment_aligns_finding': 3, 'repo_has_thread': 1, 'thread_has_comment': 1, 'thread_has_comment_chain': 1, 'comment_has_chain': 1, 'thread_has_issue_chain': 1, 'issue_chain_has_comment_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'verification_or_tests': 4, 'claimed_resolved_with_verification_signal': 3, 'blueprint_human_gap_alignment': 3, 'thread_has_human_issue_and_fix_context': 2, 'weak blueprint fit': 2, 'issue_or_pull_request_thread': 1, 'api_integration_gap': 1, 'human_reported_issue_then_verified_fix_attempt': 1, 'bug_fix': 1, 'partial blueprint fit': 1}\nOutcomes: {'claimed_resolved_with_verification_signal': 6}\nQuality tiers: {'high_confidence': 3, 'assumption_check': 3}\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/timogilvie/wavemill", "source_id": "graph-query-motif_query-880c38c97ecd70d3", "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": "timogilvie/wavemill", "source_dataset": "graph_queries/blueprint_gap_alignment", "training_usage": "curriculum_gap"}}}, {"ruleId": "foundry_blueprint_gap", "level": "warning", "message": {"text": "Foundry mined blueprint gap alignment: timogilvie/wavemill"}, "properties": {"repobilityId": 404316, "scanner": "foundry_dataset", "fingerprint": "b3c95b4bd494fb57b2b0aa43dc96c20de1f95fc8771918d439cbdc7e9ce09ec0", "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": {"data_schema": 1, "weak blueprint fit": 2, "partial blueprint fit": 1, "verification_or_tests": 4, "data_schema_persistence": 1, "issue_or_pull_request_thread": 1, "blueprint_human_gap_alignment": 3, "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": 28, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 1, "thread_has_comment": 1, "alignment_uses_comment": 3, "alignment_uses_finding": 3, "chain_has_link_quality": 6, "comment_aligns_finding": 3, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 1, "comment_chain_links_commit": 5, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 1}, "node_count": 23, "node_types": {"repo": 1, "commit": 5, "thread": 1, "comment": 1, "alignment": 3, "fix_outcome": 1, "issue_chain": 1, "link_quality": 6, "comment_chain": 1, "blueprint_finding": 3}, "query_type": "motif_query", "thread_key": "timogilvie/wavemill#614", "issue_number": "614", "quality_tiers": {"assumption_check": 3, "weak_supervision": 3}, "repo_full_name": "timogilvie/wavemill", "training_usage": "curriculum_gap", "source_motif_id": "graph-pattern-motif-thread-cd7ce2043c8f2ba6", "graph_gold_label": "supported_by_verification_signal", "changed_file_labels": {}}, "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: timogilvie/wavemill\nThread: timogilvie/wavemill#614\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: timogilvie/wavemill\nThread: timogilvie/wavemill#614\nGraph gold label: supported_by_verification_signal\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: timogilvie/wavemill#614\nRepo: timogilvie/wavemill\nIssue/PR number: 614\nGraph consistency label: supported_by_verification_signal\nNodes: 23\nEdges: 28\nNode types: {'link_quality': 6, 'commit': 5, 'alignment': 3, 'blueprint_finding': 3, 'thread': 1, 'repo': 1, 'comment': 1, 'comment_chain': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'chain_has_link_quality': 6, 'comment_chain_links_commit': 5, 'alignment_uses_comment': 3, 'alignment_uses_finding': 3, 'comment_aligns_finding': 3, 'repo_has_thread': 1, 'thread_has_comment': 1, 'thread_has_comment_chain': 1, 'comment_has_chain': 1, 'thread_has_issue_chain': 1, 'issue_chain_has_comment_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'verification_or_tests': 4, 'claimed_resolved_with_verification_signal': 3, 'blueprint_human_gap_alignment': 3, 'thread_has_human_issue_and_fix_context': 2, 'weak blueprint fit': 2, 'issue_or_pull_request_thread': 1, 'data_schema_persistence': 1, 'human_reported_issue_then_verified_fix_attempt': 1, 'data_schema': 1, 'partial blueprint fit': 1}\nOutcomes: {'claimed_resolved_with_verification_signal': 6}\nQuality tiers: {'weak_supervision': 3, 'assumption_check': 3}\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/timogilvie/wavemill", "source_id": "graph-query-motif_query-2f77504088e217a2", "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": "timogilvie/wavemill", "source_dataset": "graph_queries/blueprint_gap_alignment", "training_usage": "curriculum_gap"}}}, {"ruleId": "foundry_blueprint_gap", "level": "warning", "message": {"text": "Foundry mined blueprint gap alignment: timogilvie/wavemill"}, "properties": {"repobilityId": 404315, "scanner": "foundry_dataset", "fingerprint": "a4fb6410852d0e020ea3ac52349c5dfdfecf54f10b533439291c5a4ce43149d5", "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": {"data_schema": 1, "weak blueprint fit": 2, "partial blueprint fit": 1, "verification_or_tests": 4, "data_schema_persistence": 1, "issue_or_pull_request_thread": 1, "blueprint_human_gap_alignment": 3, "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": 28, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 1, "thread_has_comment": 1, "alignment_uses_comment": 3, "alignment_uses_finding": 3, "chain_has_link_quality": 6, "comment_aligns_finding": 3, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 1, "comment_chain_links_commit": 5, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 1}, "node_count": 23, "node_types": {"repo": 1, "commit": 5, "thread": 1, "comment": 1, "alignment": 3, "fix_outcome": 1, "issue_chain": 1, "link_quality": 6, "comment_chain": 1, "blueprint_finding": 3}, "query_type": "motif_query", "thread_key": "timogilvie/wavemill#613", "issue_number": "613", "quality_tiers": {"assumption_check": 3, "weak_supervision": 3}, "repo_full_name": "timogilvie/wavemill", "training_usage": "curriculum_gap", "source_motif_id": "graph-pattern-motif-thread-f890346f27e9902f", "graph_gold_label": "supported_by_verification_signal", "changed_file_labels": {}}, "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: timogilvie/wavemill\nThread: timogilvie/wavemill#613\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: timogilvie/wavemill\nThread: timogilvie/wavemill#613\nGraph gold label: supported_by_verification_signal\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: timogilvie/wavemill#613\nRepo: timogilvie/wavemill\nIssue/PR number: 613\nGraph consistency label: supported_by_verification_signal\nNodes: 23\nEdges: 28\nNode types: {'link_quality': 6, 'commit': 5, 'alignment': 3, 'blueprint_finding': 3, 'thread': 1, 'repo': 1, 'comment': 1, 'comment_chain': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'chain_has_link_quality': 6, 'comment_chain_links_commit': 5, 'alignment_uses_comment': 3, 'alignment_uses_finding': 3, 'comment_aligns_finding': 3, 'repo_has_thread': 1, 'thread_has_comment': 1, 'thread_has_comment_chain': 1, 'comment_has_chain': 1, 'thread_has_issue_chain': 1, 'issue_chain_has_comment_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'verification_or_tests': 4, 'claimed_resolved_with_verification_signal': 3, 'blueprint_human_gap_alignment': 3, 'thread_has_human_issue_and_fix_context': 2, 'weak blueprint fit': 2, 'issue_or_pull_request_thread': 1, 'data_schema_persistence': 1, 'human_reported_issue_then_verified_fix_attempt': 1, 'data_schema': 1, 'partial blueprint fit': 1}\nOutcomes: {'claimed_resolved_with_verification_signal': 6}\nQuality tiers: {'weak_supervision': 3, 'assumption_check': 3}\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/timogilvie/wavemill", "source_id": "graph-query-motif_query-b034d47b2a2a65f5", "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": "timogilvie/wavemill", "source_dataset": "graph_queries/blueprint_gap_alignment", "training_usage": "curriculum_gap"}}}, {"ruleId": "foundry_blueprint_gap", "level": "warning", "message": {"text": "Foundry mined blueprint gap alignment: timogilvie/wavemill"}, "properties": {"repobilityId": 404314, "scanner": "foundry_dataset", "fingerprint": "60f9e183de6fc387b78966f517415b8520c6f3b4e65651da9a2990f6104dbeef", "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": 1, "test_ci_gap": 1, "weak blueprint fit": 2, "partial blueprint fit": 1, "verification_or_tests": 4, "issue_or_pull_request_thread": 1, "blueprint_human_gap_alignment": 3, "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": 28, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 1, "thread_has_comment": 1, "alignment_uses_comment": 3, "alignment_uses_finding": 3, "chain_has_link_quality": 6, "comment_aligns_finding": 3, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 1, "comment_chain_links_commit": 5, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 1}, "node_count": 23, "node_types": {"repo": 1, "commit": 5, "thread": 1, "comment": 1, "alignment": 3, "fix_outcome": 1, "issue_chain": 1, "link_quality": 6, "comment_chain": 1, "blueprint_finding": 3}, "query_type": "motif_query", "thread_key": "timogilvie/wavemill#553", "issue_number": "553", "quality_tiers": {"assumption_check": 3, "weak_supervision": 3}, "repo_full_name": "timogilvie/wavemill", "training_usage": "curriculum_gap", "source_motif_id": "graph-pattern-motif-thread-8f5dd66df07b8e50", "graph_gold_label": "supported_by_verification_signal", "changed_file_labels": {}}, "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: timogilvie/wavemill\nThread: timogilvie/wavemill#553\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: timogilvie/wavemill\nThread: timogilvie/wavemill#553\nGraph gold label: supported_by_verification_signal\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: timogilvie/wavemill#553\nRepo: timogilvie/wavemill\nIssue/PR number: 553\nGraph consistency label: supported_by_verification_signal\nNodes: 23\nEdges: 28\nNode types: {'link_quality': 6, 'commit': 5, 'alignment': 3, 'blueprint_finding': 3, 'thread': 1, 'repo': 1, 'comment': 1, 'comment_chain': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'chain_has_link_quality': 6, 'comment_chain_links_commit': 5, 'alignment_uses_comment': 3, 'alignment_uses_finding': 3, 'comment_aligns_finding': 3, 'repo_has_thread': 1, 'thread_has_comment': 1, 'thread_has_comment_chain': 1, 'comment_has_chain': 1, 'thread_has_issue_chain': 1, 'issue_chain_has_comment_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'verification_or_tests': 4, 'claimed_resolved_with_verification_signal': 3, 'blueprint_human_gap_alignment': 3, 'thread_has_human_issue_and_fix_context': 2, 'weak blueprint fit': 2, 'issue_or_pull_request_thread': 1, 'test_ci_gap': 1, 'human_reported_issue_then_verified_fix_attempt': 1, 'bug_fix': 1, 'partial blueprint fit': 1}\nOutcomes: {'claimed_resolved_with_verification_signal': 6}\nQuality tiers: {'weak_supervision': 3, 'assumption_check': 3}\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/timogilvie/wavemill", "source_id": "graph-query-motif_query-23c70d4df08060c9", "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": "timogilvie/wavemill", "source_dataset": "graph_queries/blueprint_gap_alignment", "training_usage": "curriculum_gap"}}}, {"ruleId": "foundry_blueprint_gap", "level": "warning", "message": {"text": "Foundry mined blueprint gap alignment: timogilvie/wavemill"}, "properties": {"repobilityId": 404313, "scanner": "foundry_dataset", "fingerprint": "0c094b8625275fc5480433f44cc9c36ce74222ab0c3e4b9b00233122e9ad5299", "category": "tech_debt", "severity": "medium", "confidence": 0.7, "triageState": "open", "verdict": "needs_review", "isResolved": false, "reason": "Imported from mined Foundry/Fable5 evidence with real GitHub/source provenance. Review source_id before acting.", "evidence": {"meta": {"kind": "graph_query_record", "title": "Human feedback aligned with blueprint or architecture gaps", "intent": "Curriculum-gap examples connecting issue threads to helicopter-view gaps.", "labels": {"test_ci_gap": 1, "weak blueprint fit": 2, "partial blueprint fit": 1, "verification_or_tests": 5, "issue_or_pull_request_thread": 1, "ambiguous_needs_more_evidence": 3, "blueprint_human_gap_alignment": 3, "comment_has_related_commit_context": 1, "thread_has_human_issue_and_fix_context": 2}, "source": "graph_query_export", "motif_id": "blueprint_gap_alignment", "outcomes": {"ambiguous_needs_more_evidence": 6}, "polarity": "mixed", "query_id": "blueprint_gap_alignment", "severity": "medium", "ci_labels": {}, "synthetic": false, "edge_count": 28, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 1, "thread_has_comment": 1, "alignment_uses_comment": 3, "alignment_uses_finding": 3, "chain_has_link_quality": 6, "comment_aligns_finding": 3, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 1, "comment_chain_links_commit": 5, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 1}, "node_count": 23, "node_types": {"repo": 1, "commit": 5, "thread": 1, "comment": 1, "alignment": 3, "fix_outcome": 1, "issue_chain": 1, "link_quality": 6, "comment_chain": 1, "blueprint_finding": 3}, "query_type": "motif_query", "thread_key": "timogilvie/wavemill#548", "issue_number": "548", "quality_tiers": {"assumption_check": 3, "weak_supervision": 3}, "repo_full_name": "timogilvie/wavemill", "training_usage": "curriculum_gap", "source_motif_id": "graph-pattern-motif-thread-99231ab194682c6e", "graph_gold_label": "weak_supervision_needs_review", "changed_file_labels": {}}, "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: timogilvie/wavemill\nThread: timogilvie/wavemill#548\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: timogilvie/wavemill\nThread: timogilvie/wavemill#548\nGraph gold label: weak_supervision_needs_review\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: timogilvie/wavemill#548\nRepo: timogilvie/wavemill\nIssue/PR number: 548\nGraph consistency label: weak_supervision_needs_review\nNodes: 23\nEdges: 28\nNode types: {'link_quality': 6, 'commit': 5, 'alignment': 3, 'blueprint_finding': 3, 'thread': 1, 'repo': 1, 'comment': 1, 'comment_chain': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'chain_has_link_quality': 6, 'comment_chain_links_commit': 5, 'alignment_uses_comment': 3, 'alignment_uses_finding': 3, 'comment_aligns_finding': 3, 'repo_has_thread': 1, 'thread_has_comment': 1, 'thread_has_comment_chain': 1, 'comment_has_chain': 1, 'thread_has_issue_chain': 1, 'issue_chain_has_comment_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'verification_or_tests': 5, 'ambiguous_needs_more_evidence': 3, 'blueprint_human_gap_alignment': 3, 'thread_has_human_issue_and_fix_context': 2, 'weak blueprint fit': 2, 'issue_or_pull_request_thread': 1, 'test_ci_gap': 1, 'comment_has_related_commit_context': 1, 'partial blueprint fit': 1}\nOutcomes: {'ambiguous_needs_more_evidence': 6}\nQuality tiers: {'weak_supervision': 3, 'assumption_check': 3}\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/timogilvie/wavemill", "source_id": "graph-query-motif_query-aee0833439c40fd1", "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": "timogilvie/wavemill", "source_dataset": "graph_queries/blueprint_gap_alignment", "training_usage": "curriculum_gap"}}}, {"ruleId": "foundry_blueprint_gap", "level": "warning", "message": {"text": "Foundry mined blueprint gap alignment: timogilvie/wavemill"}, "properties": {"repobilityId": 404312, "scanner": "foundry_dataset", "fingerprint": "1afdeeda55cee2bd0ae55283468e235e3b7fe4fbc30f621604c48eb00b3b661f", "category": "tech_debt", "severity": "medium", "confidence": 0.7, "triageState": "open", "verdict": "needs_review", "isResolved": false, "reason": "Imported from mined Foundry/Fable5 evidence with real GitHub/source provenance. Review source_id before acting.", "evidence": {"meta": {"kind": "graph_query_record", "title": "Human feedback aligned with blueprint or architecture gaps", "intent": "Curriculum-gap examples connecting issue threads to helicopter-view gaps.", "labels": {"test_ci_gap": 1, "weak blueprint fit": 2, "partial blueprint fit": 1, "verification_or_tests": 5, "issue_or_pull_request_thread": 1, "ambiguous_needs_more_evidence": 3, "blueprint_human_gap_alignment": 3, "comment_has_related_commit_context": 1, "thread_has_human_issue_and_fix_context": 2}, "source": "graph_query_export", "motif_id": "blueprint_gap_alignment", "outcomes": {"ambiguous_needs_more_evidence": 6}, "polarity": "mixed", "query_id": "blueprint_gap_alignment", "severity": "medium", "ci_labels": {}, "synthetic": false, "edge_count": 28, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 1, "thread_has_comment": 1, "alignment_uses_comment": 3, "alignment_uses_finding": 3, "chain_has_link_quality": 6, "comment_aligns_finding": 3, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 1, "comment_chain_links_commit": 5, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 1}, "node_count": 23, "node_types": {"repo": 1, "commit": 5, "thread": 1, "comment": 1, "alignment": 3, "fix_outcome": 1, "issue_chain": 1, "link_quality": 6, "comment_chain": 1, "blueprint_finding": 3}, "query_type": "motif_query", "thread_key": "timogilvie/wavemill#545", "issue_number": "545", "quality_tiers": {"assumption_check": 3, "weak_supervision": 3}, "repo_full_name": "timogilvie/wavemill", "training_usage": "curriculum_gap", "source_motif_id": "graph-pattern-motif-thread-b26588e08895c046", "graph_gold_label": "weak_supervision_needs_review", "changed_file_labels": {}}, "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: timogilvie/wavemill\nThread: timogilvie/wavemill#545\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: timogilvie/wavemill\nThread: timogilvie/wavemill#545\nGraph gold label: weak_supervision_needs_review\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: timogilvie/wavemill#545\nRepo: timogilvie/wavemill\nIssue/PR number: 545\nGraph consistency label: weak_supervision_needs_review\nNodes: 23\nEdges: 28\nNode types: {'link_quality': 6, 'commit': 5, 'alignment': 3, 'blueprint_finding': 3, 'thread': 1, 'repo': 1, 'comment': 1, 'comment_chain': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'chain_has_link_quality': 6, 'comment_chain_links_commit': 5, 'alignment_uses_comment': 3, 'alignment_uses_finding': 3, 'comment_aligns_finding': 3, 'repo_has_thread': 1, 'thread_has_comment': 1, 'thread_has_comment_chain': 1, 'comment_has_chain': 1, 'thread_has_issue_chain': 1, 'issue_chain_has_comment_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'verification_or_tests': 5, 'ambiguous_needs_more_evidence': 3, 'blueprint_human_gap_alignment': 3, 'thread_has_human_issue_and_fix_context': 2, 'weak blueprint fit': 2, 'issue_or_pull_request_thread': 1, 'test_ci_gap': 1, 'comment_has_related_commit_context': 1, 'partial blueprint fit': 1}\nOutcomes: {'ambiguous_needs_more_evidence': 6}\nQuality tiers: {'weak_supervision': 3, 'assumption_check': 3}\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/timogilvie/wavemill", "source_id": "graph-query-motif_query-37cda39e749e4aca", "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": "timogilvie/wavemill", "source_dataset": "graph_queries/blueprint_gap_alignment", "training_usage": "curriculum_gap"}}}, {"ruleId": "foundry_blueprint_gap", "level": "warning", "message": {"text": "Foundry mined blueprint gap alignment: timogilvie/wavemill"}, "properties": {"repobilityId": 404311, "scanner": "foundry_dataset", "fingerprint": "38893c027e94b954fbacdcf19ad44525dce0ec122aaf81f6dadc6c18c68dd4aa", "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": {"weak blueprint fit": 2, "api_integration_gap": 1, "partial blueprint fit": 1, "verification_or_tests": 5, "issue_or_pull_request_thread": 1, "ambiguous_needs_more_evidence": 3, "blueprint_human_gap_alignment": 3, "comment_has_related_commit_context": 1, "thread_has_human_issue_and_fix_context": 2}, "source": "graph_query_export", "motif_id": "blueprint_gap_alignment", "outcomes": {"ambiguous_needs_more_evidence": 6}, "polarity": "mixed", "query_id": "blueprint_gap_alignment", "severity": "medium", "ci_labels": {}, "synthetic": false, "edge_count": 28, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 1, "thread_has_comment": 1, "alignment_uses_comment": 3, "alignment_uses_finding": 3, "chain_has_link_quality": 6, "comment_aligns_finding": 3, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 1, "comment_chain_links_commit": 5, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 1}, "node_count": 23, "node_types": {"repo": 1, "commit": 5, "thread": 1, "comment": 1, "alignment": 3, "fix_outcome": 1, "issue_chain": 1, "link_quality": 6, "comment_chain": 1, "blueprint_finding": 3}, "query_type": "motif_query", "thread_key": "timogilvie/wavemill#51", "issue_number": "51", "quality_tiers": {"assumption_check": 3, "weak_supervision": 3}, "repo_full_name": "timogilvie/wavemill", "training_usage": "curriculum_gap", "source_motif_id": "graph-pattern-motif-thread-71000d05f2b4e753", "graph_gold_label": "weak_supervision_needs_review", "changed_file_labels": {}}, "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: timogilvie/wavemill\nThread: timogilvie/wavemill#51\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: timogilvie/wavemill\nThread: timogilvie/wavemill#51\nGraph gold label: weak_supervision_needs_review\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: timogilvie/wavemill#51\nRepo: timogilvie/wavemill\nIssue/PR number: 51\nGraph consistency label: weak_supervision_needs_review\nNodes: 23\nEdges: 28\nNode types: {'link_quality': 6, 'commit': 5, 'alignment': 3, 'blueprint_finding': 3, 'thread': 1, 'repo': 1, 'comment': 1, 'comment_chain': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'chain_has_link_quality': 6, 'comment_chain_links_commit': 5, 'alignment_uses_comment': 3, 'alignment_uses_finding': 3, 'comment_aligns_finding': 3, 'repo_has_thread': 1, 'thread_has_comment': 1, 'thread_has_comment_chain': 1, 'comment_has_chain': 1, 'thread_has_issue_chain': 1, 'issue_chain_has_comment_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'verification_or_tests': 5, 'ambiguous_needs_more_evidence': 3, 'blueprint_human_gap_alignment': 3, 'thread_has_human_issue_and_fix_context': 2, 'weak blueprint fit': 2, 'issue_or_pull_request_thread': 1, 'api_integration_gap': 1, 'comment_has_related_commit_context': 1, 'partial blueprint fit': 1}\nOutcomes: {'ambiguous_needs_more_evidence': 6}\nQuality tiers: {'weak_supervision': 3, 'assumption_check': 3}\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/timogilvie/wavemill", "source_id": "graph-query-motif_query-48a2262970ac7301", "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": "timogilvie/wavemill", "source_dataset": "graph_queries/blueprint_gap_alignment", "training_usage": "curriculum_gap"}}}, {"ruleId": "foundry_blueprint_gap", "level": "warning", "message": {"text": "Foundry mined blueprint gap alignment: timogilvie/wavemill"}, "properties": {"repobilityId": 404310, "scanner": "foundry_dataset", "fingerprint": "c8936fcf60c04185c4a2c6135a5cef24dbcc96a54f6b88f2ca52b4d88ea69a63", "category": "tech_debt", "severity": "medium", "confidence": 0.7, "triageState": "open", "verdict": "needs_review", "isResolved": false, "reason": "Imported from mined Foundry/Fable5 evidence with real GitHub/source provenance. Review source_id before acting.", "evidence": {"meta": {"kind": "graph_query_record", "title": "Human feedback aligned with blueprint or architecture gaps", "intent": "Curriculum-gap examples connecting issue threads to helicopter-view gaps.", "labels": {"test_ci_gap": 1, "weak blueprint fit": 2, "partial blueprint fit": 1, "verification_or_tests": 5, "issue_or_pull_request_thread": 1, "ambiguous_needs_more_evidence": 3, "blueprint_human_gap_alignment": 3, "comment_has_related_commit_context": 1, "thread_has_human_issue_and_fix_context": 2}, "source": "graph_query_export", "motif_id": "blueprint_gap_alignment", "outcomes": {"ambiguous_needs_more_evidence": 6}, "polarity": "mixed", "query_id": "blueprint_gap_alignment", "severity": "medium", "ci_labels": {}, "synthetic": false, "edge_count": 28, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 1, "thread_has_comment": 1, "alignment_uses_comment": 3, "alignment_uses_finding": 3, "chain_has_link_quality": 6, "comment_aligns_finding": 3, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 1, "comment_chain_links_commit": 5, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 1}, "node_count": 23, "node_types": {"repo": 1, "commit": 5, "thread": 1, "comment": 1, "alignment": 3, "fix_outcome": 1, "issue_chain": 1, "link_quality": 6, "comment_chain": 1, "blueprint_finding": 3}, "query_type": "motif_query", "thread_key": "timogilvie/wavemill#256", "issue_number": "256", "quality_tiers": {"assumption_check": 3, "weak_supervision": 3}, "repo_full_name": "timogilvie/wavemill", "training_usage": "curriculum_gap", "source_motif_id": "graph-pattern-motif-thread-ce1756fe7108e619", "graph_gold_label": "weak_supervision_needs_review", "changed_file_labels": {}}, "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: timogilvie/wavemill\nThread: timogilvie/wavemill#256\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: timogilvie/wavemill\nThread: timogilvie/wavemill#256\nGraph gold label: weak_supervision_needs_review\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: timogilvie/wavemill#256\nRepo: timogilvie/wavemill\nIssue/PR number: 256\nGraph consistency label: weak_supervision_needs_review\nNodes: 23\nEdges: 28\nNode types: {'link_quality': 6, 'commit': 5, 'alignment': 3, 'blueprint_finding': 3, 'thread': 1, 'repo': 1, 'comment': 1, 'comment_chain': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'chain_has_link_quality': 6, 'comment_chain_links_commit': 5, 'alignment_uses_comment': 3, 'alignment_uses_finding': 3, 'comment_aligns_finding': 3, 'repo_has_thread': 1, 'thread_has_comment': 1, 'thread_has_comment_chain': 1, 'comment_has_chain': 1, 'thread_has_issue_chain': 1, 'issue_chain_has_comment_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'verification_or_tests': 5, 'ambiguous_needs_more_evidence': 3, 'blueprint_human_gap_alignment': 3, 'thread_has_human_issue_and_fix_context': 2, 'weak blueprint fit': 2, 'issue_or_pull_request_thread': 1, 'test_ci_gap': 1, 'comment_has_related_commit_context': 1, 'partial blueprint fit': 1}\nOutcomes: {'ambiguous_needs_more_evidence': 6}\nQuality tiers: {'weak_supervision': 3, 'assumption_check': 3}\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/timogilvie/wavemill", "source_id": "graph-query-motif_query-34c49b255c56f394", "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": "timogilvie/wavemill", "source_dataset": "graph_queries/blueprint_gap_alignment", "training_usage": "curriculum_gap"}}}, {"ruleId": "foundry_blueprint_gap", "level": "warning", "message": {"text": "Foundry mined blueprint gap alignment: timogilvie/wavemill"}, "properties": {"repobilityId": 404309, "scanner": "foundry_dataset", "fingerprint": "212702f2c528b6b36fa9d74a48aee4be5efc4c4a8056e2f9b1e2d08891a90d7d", "category": "tech_debt", "severity": "medium", "confidence": 0.7, "triageState": "open", "verdict": "needs_review", "isResolved": false, "reason": "Imported from mined Foundry/Fable5 evidence with real GitHub/source provenance. Review source_id before acting.", "evidence": {"meta": {"kind": "graph_query_record", "title": "Human feedback aligned with blueprint or architecture gaps", "intent": "Curriculum-gap examples connecting issue threads to helicopter-view gaps.", "labels": {"test_ci_gap": 1, "weak blueprint fit": 2, "partial blueprint fit": 1, "verification_or_tests": 4, "issue_or_pull_request_thread": 1, "ambiguous_needs_more_evidence": 3, "blueprint_human_gap_alignment": 3, "comment_has_related_commit_context": 1, "thread_has_human_issue_and_fix_context": 2}, "source": "graph_query_export", "motif_id": "blueprint_gap_alignment", "outcomes": {"ambiguous_needs_more_evidence": 6}, "polarity": "mixed", "query_id": "blueprint_gap_alignment", "severity": "medium", "ci_labels": {}, "synthetic": false, "edge_count": 27, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 1, "thread_has_comment": 1, "alignment_uses_comment": 3, "alignment_uses_finding": 3, "chain_has_link_quality": 6, "comment_aligns_finding": 3, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 1, "comment_chain_links_commit": 4, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 1}, "node_count": 22, "node_types": {"repo": 1, "commit": 4, "thread": 1, "comment": 1, "alignment": 3, "fix_outcome": 1, "issue_chain": 1, "link_quality": 6, "comment_chain": 1, "blueprint_finding": 3}, "query_type": "motif_query", "thread_key": "timogilvie/wavemill#251", "issue_number": "251", "quality_tiers": {"assumption_check": 3, "weak_supervision": 3}, "repo_full_name": "timogilvie/wavemill", "training_usage": "curriculum_gap", "source_motif_id": "graph-pattern-motif-thread-8d6b454b28b075bd", "graph_gold_label": "weak_supervision_needs_review", "changed_file_labels": {}}, "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: timogilvie/wavemill\nThread: timogilvie/wavemill#251\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: timogilvie/wavemill\nThread: timogilvie/wavemill#251\nGraph gold label: weak_supervision_needs_review\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: timogilvie/wavemill#251\nRepo: timogilvie/wavemill\nIssue/PR number: 251\nGraph consistency label: weak_supervision_needs_review\nNodes: 22\nEdges: 27\nNode types: {'link_quality': 6, 'commit': 4, 'alignment': 3, 'blueprint_finding': 3, 'thread': 1, 'repo': 1, 'comment': 1, 'comment_chain': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'chain_has_link_quality': 6, 'comment_chain_links_commit': 4, 'alignment_uses_comment': 3, 'alignment_uses_finding': 3, 'comment_aligns_finding': 3, 'repo_has_thread': 1, 'thread_has_comment': 1, 'thread_has_comment_chain': 1, 'comment_has_chain': 1, 'thread_has_issue_chain': 1, 'issue_chain_has_comment_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'verification_or_tests': 4, 'ambiguous_needs_more_evidence': 3, 'blueprint_human_gap_alignment': 3, 'thread_has_human_issue_and_fix_context': 2, 'weak blueprint fit': 2, 'issue_or_pull_request_thread': 1, 'test_ci_gap': 1, 'comment_has_related_commit_context': 1, 'partial blueprint fit': 1}\nOutcomes: {'ambiguous_needs_more_evidence': 6}\nQuality tiers: {'weak_supervision': 3, 'assumption_check': 3}\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/timogilvie/wavemill", "source_id": "graph-query-motif_query-77ab3f622ab2e30f", "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": "timogilvie/wavemill", "source_dataset": "graph_queries/blueprint_gap_alignment", "training_usage": "curriculum_gap"}}}, {"ruleId": "foundry_blueprint_gap", "level": "warning", "message": {"text": "Foundry mined blueprint gap alignment: timogilvie/wavemill"}, "properties": {"repobilityId": 404308, "scanner": "foundry_dataset", "fingerprint": "3881d717ca05caf077d8d74cdcd43c2a6673eae78602c0e8cda74fa2e48c914e", "category": "tech_debt", "severity": "medium", "confidence": 0.7, "triageState": "open", "verdict": "needs_review", "isResolved": false, "reason": "Imported from mined Foundry/Fable5 evidence with real GitHub/source provenance. Review source_id before acting.", "evidence": {"meta": {"kind": "graph_query_record", "title": "Human feedback aligned with blueprint or architecture gaps", "intent": "Curriculum-gap examples connecting issue threads to helicopter-view gaps.", "labels": {"test_ci_gap": 1, "weak blueprint fit": 2, "partial blueprint fit": 1, "verification_or_tests": 4, "human_feedback_general": 1, "unlinked_human_feedback": 1, "issue_or_pull_request_thread": 1, "ambiguous_needs_more_evidence": 4, "blueprint_human_gap_alignment": 3, "comment_has_related_commit_context": 1, "thread_has_human_issue_and_fix_context": 2}, "source": "graph_query_export", "motif_id": "blueprint_gap_alignment", "outcomes": {"ambiguous_needs_more_evidence": 8}, "polarity": "mixed", "query_id": "blueprint_gap_alignment", "severity": "medium", "ci_labels": {}, "synthetic": false, "edge_count": 32, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 2, "thread_has_comment": 2, "alignment_uses_comment": 3, "alignment_uses_finding": 3, "chain_has_link_quality": 7, "comment_aligns_finding": 3, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 2, "comment_chain_links_commit": 4, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 2}, "node_count": 25, "node_types": {"repo": 1, "commit": 4, "thread": 1, "comment": 2, "alignment": 3, "fix_outcome": 1, "issue_chain": 1, "link_quality": 7, "comment_chain": 2, "blueprint_finding": 3}, "query_type": "motif_query", "thread_key": "timogilvie/wavemill#250", "issue_number": "250", "quality_tiers": {"unresolved": 1, "assumption_check": 3, "weak_supervision": 3}, "repo_full_name": "timogilvie/wavemill", "training_usage": "curriculum_gap", "source_motif_id": "graph-pattern-motif-thread-a0db398030bd4ccd", "graph_gold_label": "weak_supervision_needs_review", "changed_file_labels": {}}, "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: timogilvie/wavemill\nThread: timogilvie/wavemill#250\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: timogilvie/wavemill\nThread: timogilvie/wavemill#250\nGraph gold label: weak_supervision_needs_review\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: timogilvie/wavemill#250\nRepo: timogilvie/wavemill\nIssue/PR number: 250\nGraph consistency label: weak_supervision_needs_review\nNodes: 25\nEdges: 32\nNode types: {'link_quality': 7, 'commit': 4, 'alignment': 3, 'blueprint_finding': 3, 'comment': 2, 'comment_chain': 2, 'thread': 1, 'repo': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'chain_has_link_quality': 7, 'comment_chain_links_commit': 4, 'alignment_uses_comment': 3, 'alignment_uses_finding': 3, 'comment_aligns_finding': 3, 'thread_has_comment': 2, 'thread_has_comment_chain': 2, 'comment_has_chain': 2, 'issue_chain_has_comment_chain': 2, 'repo_has_thread': 1, 'thread_has_issue_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'verification_or_tests': 4, 'ambiguous_needs_more_evidence': 4, 'blueprint_human_gap_alignment': 3, 'thread_has_human_issue_and_fix_context': 2, 'weak blueprint fit': 2, 'issue_or_pull_request_thread': 1, 'test_ci_gap': 1, 'human_feedback_general': 1, 'comment_has_related_commit_context': 1, 'unlinked_human_feedback': 1, 'partial blueprint fit': 1}\nOutcomes: {'ambiguous_needs_more_evidence': 8}\nQuality tiers: {'weak_supervision': 3, 'assumption_check': 3, '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/timogilvie/wavemill", "source_id": "graph-query-motif_query-6a77f309bbd00286", "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": "timogilvie/wavemill", "source_dataset": "graph_queries/blueprint_gap_alignment", "training_usage": "curriculum_gap"}}}, {"ruleId": "foundry_blueprint_gap", "level": "warning", "message": {"text": "Foundry mined blueprint gap alignment: timogilvie/wavemill"}, "properties": {"repobilityId": 404307, "scanner": "foundry_dataset", "fingerprint": "2460e3fc2eea7fd5f6f44028446067182bb1a4ebae22664915f0b5cf24bc0c49", "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": 1, "test_ci_gap": 1, "weak blueprint fit": 2, "agent_instruction_gap": 1, "partial blueprint fit": 1, "verification_or_tests": 4, "issue_or_pull_request_thread": 1, "not_resolved_or_not_observed": 1, "blueprint_human_gap_alignment": 3, "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": 33, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 2, "thread_has_comment": 2, "alignment_uses_comment": 3, "alignment_uses_finding": 3, "chain_has_link_quality": 7, "comment_aligns_finding": 3, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 2, "comment_chain_links_commit": 5, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 2}, "node_count": 26, "node_types": {"repo": 1, "commit": 5, "thread": 1, "comment": 2, "alignment": 3, "fix_outcome": 1, "issue_chain": 1, "link_quality": 7, "comment_chain": 2, "blueprint_finding": 3}, "query_type": "motif_query", "thread_key": "timogilvie/wavemill#247", "issue_number": "247", "quality_tiers": {"unresolved": 1, "assumption_check": 3, "weak_supervision": 3}, "repo_full_name": "timogilvie/wavemill", "training_usage": "curriculum_gap", "source_motif_id": "graph-pattern-motif-thread-4cbbb6c65a8d1603", "graph_gold_label": "supported_by_verification_signal", "changed_file_labels": {}}, "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: timogilvie/wavemill\nThread: timogilvie/wavemill#247\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: timogilvie/wavemill\nThread: timogilvie/wavemill#247\nGraph gold label: supported_by_verification_signal\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: timogilvie/wavemill#247\nRepo: timogilvie/wavemill\nIssue/PR number: 247\nGraph consistency label: supported_by_verification_signal\nNodes: 26\nEdges: 33\nNode types: {'link_quality': 7, 'commit': 5, 'alignment': 3, 'blueprint_finding': 3, 'comment': 2, 'comment_chain': 2, 'thread': 1, 'repo': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'chain_has_link_quality': 7, 'comment_chain_links_commit': 5, 'alignment_uses_comment': 3, 'alignment_uses_finding': 3, 'comment_aligns_finding': 3, 'thread_has_comment': 2, 'thread_has_comment_chain': 2, 'comment_has_chain': 2, 'issue_chain_has_comment_chain': 2, 'repo_has_thread': 1, 'thread_has_issue_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'verification_or_tests': 4, 'claimed_resolved_with_verification_signal': 3, 'blueprint_human_gap_alignment': 3, 'thread_has_human_issue_and_fix_context': 2, 'weak blueprint fit': 2, 'issue_or_pull_request_thread': 1, 'test_ci_gap': 1, 'agent_instruction_gap': 1, 'human_reported_issue_then_verified_fix_attempt': 1, 'bug_fix': 1, 'human_reported_issue_no_linked_fix': 1, 'not_resolved_or_not_observed': 1, 'partial blueprint fit': 1}\nOutcomes: {'claimed_resolved_with_verification_signal': 6, 'not_resolved_or_not_observed': 2}\nQuality tiers: {'weak_supervision': 3, 'assumption_check': 3, '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/timogilvie/wavemill", "source_id": "graph-query-motif_query-8beda370eff69d17", "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": "timogilvie/wavemill", "source_dataset": "graph_queries/blueprint_gap_alignment", "training_usage": "curriculum_gap"}}}, {"ruleId": "foundry_blueprint_gap", "level": "warning", "message": {"text": "Foundry mined blueprint gap alignment: timogilvie/wavemill"}, "properties": {"repobilityId": 404306, "scanner": "foundry_dataset", "fingerprint": "cf0309db3a9010948cf226b3731f46e956a0555fc64e92b64b1417f9ba379b51", "category": "tech_debt", "severity": "medium", "confidence": 0.7, "triageState": "open", "verdict": "needs_review", "isResolved": false, "reason": "Imported from mined Foundry/Fable5 evidence with real GitHub/source provenance. Review source_id before acting.", "evidence": {"meta": {"kind": "graph_query_record", "title": "Human feedback aligned with blueprint or architecture gaps", "intent": "Curriculum-gap examples connecting issue threads to helicopter-view gaps.", "labels": {"test_ci_gap": 1, "weak blueprint fit": 2, "agent_instruction_gap": 1, "partial blueprint fit": 1, "verification_or_tests": 5, "human_feedback_general": 1, "unlinked_human_feedback": 1, "issue_or_pull_request_thread": 1, "not_resolved_or_not_observed": 1, "ambiguous_needs_more_evidence": 4, "blueprint_human_gap_alignment": 3, "comment_has_related_commit_context": 1, "human_reported_issue_no_linked_fix": 1, "thread_has_human_issue_and_fix_context": 2}, "source": "graph_query_export", "motif_id": "blueprint_gap_alignment", "outcomes": {"not_resolved_or_not_observed": 2, "ambiguous_needs_more_evidence": 8}, "polarity": "mixed", "query_id": "blueprint_gap_alignment", "severity": "medium", "ci_labels": {}, "synthetic": false, "edge_count": 38, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 3, "thread_has_comment": 3, "alignment_uses_comment": 3, "alignment_uses_finding": 3, "chain_has_link_quality": 8, "comment_aligns_finding": 3, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 3, "comment_chain_links_commit": 5, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 3}, "node_count": 29, "node_types": {"repo": 1, "commit": 5, "thread": 1, "comment": 3, "alignment": 3, "fix_outcome": 1, "issue_chain": 1, "link_quality": 8, "comment_chain": 3, "blueprint_finding": 3}, "query_type": "motif_query", "thread_key": "timogilvie/wavemill#236", "issue_number": "236", "quality_tiers": {"unresolved": 2, "assumption_check": 3, "weak_supervision": 3}, "repo_full_name": "timogilvie/wavemill", "training_usage": "curriculum_gap", "source_motif_id": "graph-pattern-motif-thread-a45c367164623e7f", "graph_gold_label": "weak_supervision_needs_review", "changed_file_labels": {}}, "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: timogilvie/wavemill\nThread: timogilvie/wavemill#236\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: timogilvie/wavemill\nThread: timogilvie/wavemill#236\nGraph gold label: weak_supervision_needs_review\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: timogilvie/wavemill#236\nRepo: timogilvie/wavemill\nIssue/PR number: 236\nGraph consistency label: weak_supervision_needs_review\nNodes: 29\nEdges: 38\nNode types: {'link_quality': 8, 'commit': 5, 'comment': 3, 'comment_chain': 3, 'alignment': 3, 'blueprint_finding': 3, 'thread': 1, 'repo': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'chain_has_link_quality': 8, 'comment_chain_links_commit': 5, 'thread_has_comment': 3, 'thread_has_comment_chain': 3, 'comment_has_chain': 3, 'issue_chain_has_comment_chain': 3, 'alignment_uses_comment': 3, 'alignment_uses_finding': 3, 'comment_aligns_finding': 3, 'repo_has_thread': 1, 'thread_has_issue_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'verification_or_tests': 5, 'ambiguous_needs_more_evidence': 4, 'blueprint_human_gap_alignment': 3, 'thread_has_human_issue_and_fix_context': 2, 'weak blueprint fit': 2, 'issue_or_pull_request_thread': 1, 'test_ci_gap': 1, 'agent_instruction_gap': 1, 'human_feedback_general': 1, 'comment_has_related_commit_context': 1, 'human_reported_issue_no_linked_fix': 1, 'not_resolved_or_not_observed': 1, 'unlinked_human_feedback': 1, 'partial blueprint fit': 1}\nOutcomes: {'ambiguous_needs_more_evidence': 8, 'not_resolved_or_not_observed': 2}\nQuality tiers: {'weak_supervision': 3, 'assumption_check': 3, 'unresolved': 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/timogilvie/wavemill", "source_id": "graph-query-motif_query-f58b6223c028dd21", "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": "timogilvie/wavemill", "source_dataset": "graph_queries/blueprint_gap_alignment", "training_usage": "curriculum_gap"}}}, {"ruleId": "foundry_blueprint_gap", "level": "warning", "message": {"text": "Foundry mined blueprint gap alignment: timogilvie/wavemill"}, "properties": {"repobilityId": 404305, "scanner": "foundry_dataset", "fingerprint": "1cb1c7f0d61afbe70d44021220969212d061ed605db6f09e5bdd13aed2ef333a", "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": 1, "test_ci_gap": 1, "weak blueprint fit": 2, "agent_instruction_gap": 1, "partial blueprint fit": 1, "verification_or_tests": 4, "issue_or_pull_request_thread": 1, "not_resolved_or_not_observed": 1, "blueprint_human_gap_alignment": 3, "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": 33, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 2, "thread_has_comment": 2, "alignment_uses_comment": 3, "alignment_uses_finding": 3, "chain_has_link_quality": 7, "comment_aligns_finding": 3, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 2, "comment_chain_links_commit": 5, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 2}, "node_count": 26, "node_types": {"repo": 1, "commit": 5, "thread": 1, "comment": 2, "alignment": 3, "fix_outcome": 1, "issue_chain": 1, "link_quality": 7, "comment_chain": 2, "blueprint_finding": 3}, "query_type": "motif_query", "thread_key": "timogilvie/wavemill#234", "issue_number": "234", "quality_tiers": {"unresolved": 1, "assumption_check": 3, "weak_supervision": 3}, "repo_full_name": "timogilvie/wavemill", "training_usage": "curriculum_gap", "source_motif_id": "graph-pattern-motif-thread-d29540fcb36b3661", "graph_gold_label": "supported_by_verification_signal", "changed_file_labels": {}}, "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: timogilvie/wavemill\nThread: timogilvie/wavemill#234\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: timogilvie/wavemill\nThread: timogilvie/wavemill#234\nGraph gold label: supported_by_verification_signal\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: timogilvie/wavemill#234\nRepo: timogilvie/wavemill\nIssue/PR number: 234\nGraph consistency label: supported_by_verification_signal\nNodes: 26\nEdges: 33\nNode types: {'link_quality': 7, 'commit': 5, 'alignment': 3, 'blueprint_finding': 3, 'comment': 2, 'comment_chain': 2, 'thread': 1, 'repo': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'chain_has_link_quality': 7, 'comment_chain_links_commit': 5, 'alignment_uses_comment': 3, 'alignment_uses_finding': 3, 'comment_aligns_finding': 3, 'thread_has_comment': 2, 'thread_has_comment_chain': 2, 'comment_has_chain': 2, 'issue_chain_has_comment_chain': 2, 'repo_has_thread': 1, 'thread_has_issue_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'verification_or_tests': 4, 'claimed_resolved_with_verification_signal': 3, 'blueprint_human_gap_alignment': 3, 'thread_has_human_issue_and_fix_context': 2, 'weak blueprint fit': 2, 'issue_or_pull_request_thread': 1, 'test_ci_gap': 1, 'agent_instruction_gap': 1, 'human_reported_issue_then_verified_fix_attempt': 1, 'bug_fix': 1, 'human_reported_issue_no_linked_fix': 1, 'not_resolved_or_not_observed': 1, 'partial blueprint fit': 1}\nOutcomes: {'claimed_resolved_with_verification_signal': 6, 'not_resolved_or_not_observed': 2}\nQuality tiers: {'weak_supervision': 3, 'assumption_check': 3, '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/timogilvie/wavemill", "source_id": "graph-query-motif_query-3197bf262a583320", "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": "timogilvie/wavemill", "source_dataset": "graph_queries/blueprint_gap_alignment", "training_usage": "curriculum_gap"}}}, {"ruleId": "foundry_blueprint_gap", "level": "warning", "message": {"text": "Foundry mined blueprint gap alignment: timogilvie/wavemill"}, "properties": {"repobilityId": 404304, "scanner": "foundry_dataset", "fingerprint": "4e668ae86620dcde03c10d19003b31720928d6674bc87368b0427006806789ef", "category": "tech_debt", "severity": "medium", "confidence": 0.7, "triageState": "open", "verdict": "needs_review", "isResolved": false, "reason": "Imported from mined Foundry/Fable5 evidence with real GitHub/source provenance. Review source_id before acting.", "evidence": {"meta": {"kind": "graph_query_record", "title": "Human feedback aligned with blueprint or architecture gaps", "intent": "Curriculum-gap examples connecting issue threads to helicopter-view gaps.", "labels": {"test_ci_gap": 1, "weak blueprint fit": 2, "partial blueprint fit": 1, "positive_human_signal": 1, "verification_or_tests": 4, "human_feedback_general": 1, "unlinked_human_feedback": 1, "issue_or_pull_request_thread": 1, "ambiguous_needs_more_evidence": 4, "blueprint_human_gap_alignment": 3, "comment_has_related_commit_context": 1, "positive_feedback_no_linked_change": 1, "human_positive_or_acceptance_signal": 1, "thread_has_human_issue_and_fix_context": 2}, "source": "graph_query_export", "motif_id": "blueprint_gap_alignment", "outcomes": {"ambiguous_needs_more_evidence": 8, "human_positive_or_acceptance_signal": 2}, "polarity": "mixed", "query_id": "blueprint_gap_alignment", "severity": "medium", "ci_labels": {}, "synthetic": false, "edge_count": 37, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 3, "thread_has_comment": 3, "alignment_uses_comment": 3, "alignment_uses_finding": 3, "chain_has_link_quality": 8, "comment_aligns_finding": 3, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 3, "comment_chain_links_commit": 4, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 3}, "node_count": 28, "node_types": {"repo": 1, "commit": 4, "thread": 1, "comment": 3, "alignment": 3, "fix_outcome": 1, "issue_chain": 1, "link_quality": 8, "comment_chain": 3, "blueprint_finding": 3}, "query_type": "motif_query", "thread_key": "timogilvie/wavemill#233", "issue_number": "233", "quality_tiers": {"unresolved": 2, "assumption_check": 3, "weak_supervision": 3}, "repo_full_name": "timogilvie/wavemill", "training_usage": "curriculum_gap", "source_motif_id": "graph-pattern-motif-thread-1cf612f540535702", "graph_gold_label": "weak_supervision_needs_review", "changed_file_labels": {}}, "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: timogilvie/wavemill\nThread: timogilvie/wavemill#233\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: timogilvie/wavemill\nThread: timogilvie/wavemill#233\nGraph gold label: weak_supervision_needs_review\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: timogilvie/wavemill#233\nRepo: timogilvie/wavemill\nIssue/PR number: 233\nGraph consistency label: weak_supervision_needs_review\nNodes: 28\nEdges: 37\nNode types: {'link_quality': 8, 'commit': 4, 'comment': 3, 'comment_chain': 3, 'alignment': 3, 'blueprint_finding': 3, 'thread': 1, 'repo': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'chain_has_link_quality': 8, 'comment_chain_links_commit': 4, 'thread_has_comment': 3, 'thread_has_comment_chain': 3, 'comment_has_chain': 3, 'issue_chain_has_comment_chain': 3, 'alignment_uses_comment': 3, 'alignment_uses_finding': 3, 'comment_aligns_finding': 3, 'repo_has_thread': 1, 'thread_has_issue_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'verification_or_tests': 4, 'ambiguous_needs_more_evidence': 4, 'blueprint_human_gap_alignment': 3, 'thread_has_human_issue_and_fix_context': 2, 'weak blueprint fit': 2, 'issue_or_pull_request_thread': 1, 'test_ci_gap': 1, 'human_feedback_general': 1, 'positive_human_signal': 1, 'comment_has_related_commit_context': 1, 'unlinked_human_feedback': 1, 'positive_feedback_no_linked_change': 1, 'human_positive_or_acceptance_signal': 1, 'partial blueprint fit': 1}\nOutcomes: {'ambiguous_needs_more_evidence': 8, 'human_positive_or_acceptance_signal': 2}\nQuality tiers: {'weak_supervision': 3, 'assumption_check': 3, 'unresolved': 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/timogilvie/wavemill", "source_id": "graph-query-motif_query-4eacf9c18c23eced", "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": "timogilvie/wavemill", "source_dataset": "graph_queries/blueprint_gap_alignment", "training_usage": "curriculum_gap"}}}, {"ruleId": "foundry_blueprint_gap", "level": "warning", "message": {"text": "Foundry mined blueprint gap alignment: timogilvie/wavemill"}, "properties": {"repobilityId": 404303, "scanner": "foundry_dataset", "fingerprint": "884eaf3b013e51626cbfbc9e677c50bf6a40d2283b5073ad9ce992842de0de4f", "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_gap": 1, "weak blueprint fit": 2, "partial blueprint fit": 1, "verification_or_tests": 6, "human_feedback_general": 3, "unlinked_human_feedback": 1, "issue_or_pull_request_thread": 1, "ambiguous_needs_more_evidence": 6, "blueprint_human_gap_alignment": 3, "comment_has_related_commit_context": 3, "thread_has_human_issue_and_fix_context": 2}, "source": "graph_query_export", "motif_id": "blueprint_gap_alignment", "outcomes": {"ambiguous_needs_more_evidence": 12}, "polarity": "mixed", "query_id": "blueprint_gap_alignment", "severity": "medium", "ci_labels": {}, "synthetic": false, "edge_count": 45, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 4, "thread_has_comment": 4, "alignment_uses_comment": 3, "alignment_uses_finding": 3, "chain_has_link_quality": 9, "comment_aligns_finding": 3, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 4, "comment_chain_links_commit": 7, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 4}, "node_count": 33, "node_types": {"repo": 1, "commit": 6, "thread": 1, "comment": 4, "alignment": 3, "fix_outcome": 1, "issue_chain": 1, "link_quality": 9, "comment_chain": 4, "blueprint_finding": 3}, "query_type": "motif_query", "thread_key": "timogilvie/wavemill#232", "issue_number": "232", "quality_tiers": {"unresolved": 1, "assumption_check": 3, "weak_supervision": 5}, "repo_full_name": "timogilvie/wavemill", "training_usage": "curriculum_gap", "source_motif_id": "graph-pattern-motif-thread-616bff7d78bd9ecf", "graph_gold_label": "weak_supervision_needs_review", "changed_file_labels": {}}, "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: timogilvie/wavemill\nThread: timogilvie/wavemill#232\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: timogilvie/wavemill\nThread: timogilvie/wavemill#232\nGraph gold label: weak_supervision_needs_review\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: timogilvie/wavemill#232\nRepo: timogilvie/wavemill\nIssue/PR number: 232\nGraph consistency label: weak_supervision_needs_review\nNodes: 33\nEdges: 45\nNode types: {'link_quality': 9, 'commit': 6, 'comment': 4, 'comment_chain': 4, 'alignment': 3, 'blueprint_finding': 3, 'thread': 1, 'repo': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'chain_has_link_quality': 9, 'comment_chain_links_commit': 7, 'thread_has_comment': 4, 'thread_has_comment_chain': 4, 'comment_has_chain': 4, 'issue_chain_has_comment_chain': 4, 'alignment_uses_comment': 3, 'alignment_uses_finding': 3, 'comment_aligns_finding': 3, 'repo_has_thread': 1, 'thread_has_issue_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'ambiguous_needs_more_evidence': 6, 'verification_or_tests': 6, 'human_feedback_general': 3, 'comment_has_related_commit_context': 3, 'blueprint_human_gap_alignment': 3, 'thread_has_human_issue_and_fix_context': 2, 'weak blueprint fit': 2, 'issue_or_pull_request_thread': 1, 'ui_workflow_gap': 1, 'unlinked_human_feedback': 1, 'partial blueprint fit': 1}\nOutcomes: {'ambiguous_needs_more_evidence': 12}\nQuality tiers: {'weak_supervision': 5, 'assumption_check': 3, '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/timogilvie/wavemill", "source_id": "graph-query-motif_query-376544c585e32f7d", "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": "timogilvie/wavemill", "source_dataset": "graph_queries/blueprint_gap_alignment", "training_usage": "curriculum_gap"}}}, {"ruleId": "foundry_blueprint_gap", "level": "warning", "message": {"text": "Foundry mined blueprint gap alignment: timogilvie/wavemill"}, "properties": {"repobilityId": 404302, "scanner": "foundry_dataset", "fingerprint": "6f022353446f10cd1b4328177f270d76ca6a4078a1c18c20879d719afb5b75c0", "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_gap": 1, "weak blueprint fit": 2, "partial blueprint fit": 1, "verification_or_tests": 5, "human_feedback_general": 1, "unlinked_human_feedback": 1, "issue_or_pull_request_thread": 1, "ambiguous_needs_more_evidence": 4, "blueprint_human_gap_alignment": 3, "comment_has_related_commit_context": 1, "thread_has_human_issue_and_fix_context": 2}, "source": "graph_query_export", "motif_id": "blueprint_gap_alignment", "outcomes": {"ambiguous_needs_more_evidence": 8}, "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, "alignment_uses_comment": 3, "alignment_uses_finding": 3, "chain_has_link_quality": 7, "comment_aligns_finding": 3, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 2, "comment_chain_links_commit": 5, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 2}, "node_count": 26, "node_types": {"repo": 1, "commit": 5, "thread": 1, "comment": 2, "alignment": 3, "fix_outcome": 1, "issue_chain": 1, "link_quality": 7, "comment_chain": 2, "blueprint_finding": 3}, "query_type": "motif_query", "thread_key": "timogilvie/wavemill#230", "issue_number": "230", "quality_tiers": {"unresolved": 1, "assumption_check": 3, "weak_supervision": 3}, "repo_full_name": "timogilvie/wavemill", "training_usage": "curriculum_gap", "source_motif_id": "graph-pattern-motif-thread-62138f23d61ee74a", "graph_gold_label": "weak_supervision_needs_review", "changed_file_labels": {}}, "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: timogilvie/wavemill\nThread: timogilvie/wavemill#230\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: timogilvie/wavemill\nThread: timogilvie/wavemill#230\nGraph gold label: weak_supervision_needs_review\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: timogilvie/wavemill#230\nRepo: timogilvie/wavemill\nIssue/PR number: 230\nGraph consistency label: weak_supervision_needs_review\nNodes: 26\nEdges: 33\nNode types: {'link_quality': 7, 'commit': 5, 'alignment': 3, 'blueprint_finding': 3, 'comment': 2, 'comment_chain': 2, 'thread': 1, 'repo': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'chain_has_link_quality': 7, 'comment_chain_links_commit': 5, 'alignment_uses_comment': 3, 'alignment_uses_finding': 3, 'comment_aligns_finding': 3, 'thread_has_comment': 2, 'thread_has_comment_chain': 2, 'comment_has_chain': 2, 'issue_chain_has_comment_chain': 2, 'repo_has_thread': 1, 'thread_has_issue_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'verification_or_tests': 5, 'ambiguous_needs_more_evidence': 4, 'blueprint_human_gap_alignment': 3, 'thread_has_human_issue_and_fix_context': 2, 'weak blueprint fit': 2, 'issue_or_pull_request_thread': 1, 'ui_workflow_gap': 1, 'human_feedback_general': 1, 'comment_has_related_commit_context': 1, 'unlinked_human_feedback': 1, 'partial blueprint fit': 1}\nOutcomes: {'ambiguous_needs_more_evidence': 8}\nQuality tiers: {'weak_supervision': 3, 'assumption_check': 3, '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/timogilvie/wavemill", "source_id": "graph-query-motif_query-f146d852b09d6314", "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": "timogilvie/wavemill", "source_dataset": "graph_queries/blueprint_gap_alignment", "training_usage": "curriculum_gap"}}}, {"ruleId": "foundry_blueprint_gap", "level": "warning", "message": {"text": "Foundry mined blueprint gap alignment: timogilvie/wavemill"}, "properties": {"repobilityId": 404301, "scanner": "foundry_dataset", "fingerprint": "ff75f70e2d5e79716520ee0591ff9dcf6c89d9dfd726f6ec6c4c4c55c7407bdb", "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": 1, "ui_workflow_gap": 2, "weak blueprint fit": 2, "partial blueprint fit": 1, "verification_or_tests": 5, "issue_or_pull_request_thread": 1, "ambiguous_needs_more_evidence": 1, "blueprint_human_gap_alignment": 6, "comment_has_related_commit_context": 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": {"ambiguous_needs_more_evidence": 2, "claimed_resolved_with_verification_signal": 6}, "polarity": "mixed", "query_id": "blueprint_gap_alignment", "severity": "medium", "ci_labels": {}, "synthetic": false, "edge_count": 49, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 2, "thread_has_comment": 2, "alignment_uses_comment": 6, "alignment_uses_finding": 6, "chain_has_link_quality": 10, "comment_aligns_finding": 6, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 2, "comment_chain_links_commit": 9, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 2}, "node_count": 33, "node_types": {"repo": 1, "commit": 6, "thread": 1, "comment": 2, "alignment": 6, "fix_outcome": 1, "issue_chain": 1, "link_quality": 10, "comment_chain": 2, "blueprint_finding": 3}, "query_type": "motif_query", "thread_key": "timogilvie/wavemill#229", "issue_number": "229", "quality_tiers": {"assumption_check": 6, "weak_supervision": 4}, "repo_full_name": "timogilvie/wavemill", "training_usage": "curriculum_gap", "source_motif_id": "graph-pattern-motif-thread-ef552504465f9588", "graph_gold_label": "supported_by_verification_signal", "changed_file_labels": {}}, "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: timogilvie/wavemill\nThread: timogilvie/wavemill#229\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: timogilvie/wavemill\nThread: timogilvie/wavemill#229\nGraph gold label: supported_by_verification_signal\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: timogilvie/wavemill#229\nRepo: timogilvie/wavemill\nIssue/PR number: 229\nGraph consistency label: supported_by_verification_signal\nNodes: 33\nEdges: 49\nNode types: {'link_quality': 10, 'commit': 6, 'alignment': 6, 'blueprint_finding': 3, 'comment': 2, 'comment_chain': 2, 'thread': 1, 'repo': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'chain_has_link_quality': 10, 'comment_chain_links_commit': 9, 'alignment_uses_comment': 6, 'alignment_uses_finding': 6, 'comment_aligns_finding': 6, 'thread_has_comment': 2, 'thread_has_comment_chain': 2, 'comment_has_chain': 2, 'issue_chain_has_comment_chain': 2, 'repo_has_thread': 1, 'thread_has_issue_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'blueprint_human_gap_alignment': 6, 'verification_or_tests': 5, 'claimed_resolved_with_verification_signal': 3, 'ui_workflow_gap': 2, 'thread_has_human_issue_and_fix_context': 2, 'weak blueprint fit': 2, 'issue_or_pull_request_thread': 1, 'human_reported_issue_then_verified_fix_attempt': 1, 'bug_fix': 1, 'comment_has_related_commit_context': 1, 'ambiguous_needs_more_evidence': 1, 'partial blueprint fit': 1}\nOutcomes: {'claimed_resolved_with_verification_signal': 6, 'ambiguous_needs_more_evidence': 2}\nQuality tiers: {'assumption_check': 6, 'weak_supervision': 4}\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/timogilvie/wavemill", "source_id": "graph-query-motif_query-3134a69295e74601", "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": "timogilvie/wavemill", "source_dataset": "graph_queries/blueprint_gap_alignment", "training_usage": "curriculum_gap"}}}, {"ruleId": "foundry_blueprint_gap", "level": "warning", "message": {"text": "Foundry mined blueprint gap alignment: timogilvie/wavemill"}, "properties": {"repobilityId": 404300, "scanner": "foundry_dataset", "fingerprint": "40c781ba1cf0712ccc29595a590fd7130e8c4d2ce7650aa32d5154ddb3b35c23", "category": "tech_debt", "severity": "medium", "confidence": 0.7, "triageState": "open", "verdict": "needs_review", "isResolved": false, "reason": "Imported from mined Foundry/Fable5 evidence with real GitHub/source provenance. Review source_id before acting.", "evidence": {"meta": {"kind": "graph_query_record", "title": "Human feedback aligned with blueprint or architecture gaps", "intent": "Curriculum-gap examples connecting issue threads to helicopter-view gaps.", "labels": {"test_ci_gap": 1, "weak blueprint fit": 2, "partial blueprint fit": 1, "verification_or_tests": 5, "issue_or_pull_request_thread": 1, "ambiguous_needs_more_evidence": 3, "blueprint_human_gap_alignment": 3, "comment_has_related_commit_context": 1, "thread_has_human_issue_and_fix_context": 2}, "source": "graph_query_export", "motif_id": "blueprint_gap_alignment", "outcomes": {"ambiguous_needs_more_evidence": 6}, "polarity": "mixed", "query_id": "blueprint_gap_alignment", "severity": "medium", "ci_labels": {}, "synthetic": false, "edge_count": 28, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 1, "thread_has_comment": 1, "alignment_uses_comment": 3, "alignment_uses_finding": 3, "chain_has_link_quality": 6, "comment_aligns_finding": 3, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 1, "comment_chain_links_commit": 5, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 1}, "node_count": 23, "node_types": {"repo": 1, "commit": 5, "thread": 1, "comment": 1, "alignment": 3, "fix_outcome": 1, "issue_chain": 1, "link_quality": 6, "comment_chain": 1, "blueprint_finding": 3}, "query_type": "motif_query", "thread_key": "timogilvie/wavemill#225", "issue_number": "225", "quality_tiers": {"assumption_check": 3, "weak_supervision": 3}, "repo_full_name": "timogilvie/wavemill", "training_usage": "curriculum_gap", "source_motif_id": "graph-pattern-motif-thread-8ba7006c9d51cf5f", "graph_gold_label": "weak_supervision_needs_review", "changed_file_labels": {}}, "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: timogilvie/wavemill\nThread: timogilvie/wavemill#225\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: timogilvie/wavemill\nThread: timogilvie/wavemill#225\nGraph gold label: weak_supervision_needs_review\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: timogilvie/wavemill#225\nRepo: timogilvie/wavemill\nIssue/PR number: 225\nGraph consistency label: weak_supervision_needs_review\nNodes: 23\nEdges: 28\nNode types: {'link_quality': 6, 'commit': 5, 'alignment': 3, 'blueprint_finding': 3, 'thread': 1, 'repo': 1, 'comment': 1, 'comment_chain': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'chain_has_link_quality': 6, 'comment_chain_links_commit': 5, 'alignment_uses_comment': 3, 'alignment_uses_finding': 3, 'comment_aligns_finding': 3, 'repo_has_thread': 1, 'thread_has_comment': 1, 'thread_has_comment_chain': 1, 'comment_has_chain': 1, 'thread_has_issue_chain': 1, 'issue_chain_has_comment_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'verification_or_tests': 5, 'ambiguous_needs_more_evidence': 3, 'blueprint_human_gap_alignment': 3, 'thread_has_human_issue_and_fix_context': 2, 'weak blueprint fit': 2, 'issue_or_pull_request_thread': 1, 'test_ci_gap': 1, 'comment_has_related_commit_context': 1, 'partial blueprint fit': 1}\nOutcomes: {'ambiguous_needs_more_evidence': 6}\nQuality tiers: {'weak_supervision': 3, 'assumption_check': 3}\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/timogilvie/wavemill", "source_id": "graph-query-motif_query-f2437c8fc653321c", "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": "timogilvie/wavemill", "source_dataset": "graph_queries/blueprint_gap_alignment", "training_usage": "curriculum_gap"}}}, {"ruleId": "foundry_blueprint_gap", "level": "warning", "message": {"text": "Foundry mined blueprint gap alignment: timogilvie/wavemill"}, "properties": {"repobilityId": 404299, "scanner": "foundry_dataset", "fingerprint": "2d11603e12068d463c1ff494a241fcb8bff719e5144c493127371ab39a1f836e", "category": "tech_debt", "severity": "medium", "confidence": 0.7, "triageState": "open", "verdict": "needs_review", "isResolved": false, "reason": "Imported from mined Foundry/Fable5 evidence with real GitHub/source provenance. Review source_id before acting.", "evidence": {"meta": {"kind": "graph_query_record", "title": "Human feedback aligned with blueprint or architecture gaps", "intent": "Curriculum-gap examples connecting issue threads to helicopter-view gaps.", "labels": {"test_ci_gap": 1, "weak blueprint fit": 2, "partial blueprint fit": 1, "verification_or_tests": 1, "issue_or_pull_request_thread": 1, "ambiguous_needs_more_evidence": 3, "blueprint_human_gap_alignment": 3, "comment_has_related_commit_context": 1, "thread_has_human_issue_and_fix_context": 2}, "source": "graph_query_export", "motif_id": "blueprint_gap_alignment", "outcomes": {"ambiguous_needs_more_evidence": 6}, "polarity": "mixed", "query_id": "blueprint_gap_alignment", "severity": "medium", "ci_labels": {}, "synthetic": false, "edge_count": 24, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 1, "thread_has_comment": 1, "alignment_uses_comment": 3, "alignment_uses_finding": 3, "chain_has_link_quality": 6, "comment_aligns_finding": 3, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 1, "comment_chain_links_commit": 1, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 1}, "node_count": 19, "node_types": {"repo": 1, "commit": 1, "thread": 1, "comment": 1, "alignment": 3, "fix_outcome": 1, "issue_chain": 1, "link_quality": 6, "comment_chain": 1, "blueprint_finding": 3}, "query_type": "motif_query", "thread_key": "timogilvie/wavemill#222", "issue_number": "222", "quality_tiers": {"assumption_check": 3, "weak_supervision": 3}, "repo_full_name": "timogilvie/wavemill", "training_usage": "curriculum_gap", "source_motif_id": "graph-pattern-motif-thread-bf9cf3c2d9d4fffe", "graph_gold_label": "weak_supervision_needs_review", "changed_file_labels": {}}, "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: timogilvie/wavemill\nThread: timogilvie/wavemill#222\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: timogilvie/wavemill\nThread: timogilvie/wavemill#222\nGraph gold label: weak_supervision_needs_review\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: timogilvie/wavemill#222\nRepo: timogilvie/wavemill\nIssue/PR number: 222\nGraph consistency label: weak_supervision_needs_review\nNodes: 19\nEdges: 24\nNode types: {'link_quality': 6, 'alignment': 3, 'blueprint_finding': 3, 'thread': 1, 'repo': 1, 'comment': 1, 'comment_chain': 1, 'commit': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'chain_has_link_quality': 6, 'alignment_uses_comment': 3, 'alignment_uses_finding': 3, 'comment_aligns_finding': 3, 'repo_has_thread': 1, 'thread_has_comment': 1, 'thread_has_comment_chain': 1, 'comment_has_chain': 1, 'comment_chain_links_commit': 1, 'thread_has_issue_chain': 1, 'issue_chain_has_comment_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'ambiguous_needs_more_evidence': 3, 'blueprint_human_gap_alignment': 3, 'thread_has_human_issue_and_fix_context': 2, 'weak blueprint fit': 2, 'issue_or_pull_request_thread': 1, 'test_ci_gap': 1, 'comment_has_related_commit_context': 1, 'verification_or_tests': 1, 'partial blueprint fit': 1}\nOutcomes: {'ambiguous_needs_more_evidence': 6}\nQuality tiers: {'weak_supervision': 3, 'assumption_check': 3}\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/timogilvie/wavemill", "source_id": "graph-query-motif_query-e0ff45287b2ddc6f", "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": "timogilvie/wavemill", "source_dataset": "graph_queries/blueprint_gap_alignment", "training_usage": "curriculum_gap"}}}, {"ruleId": "foundry_blueprint_gap", "level": "warning", "message": {"text": "Foundry mined blueprint gap alignment: timogilvie/wavemill"}, "properties": {"repobilityId": 404298, "scanner": "foundry_dataset", "fingerprint": "c31a3893d219bc2557a0ba5b717c6cc86e5a75a96b0f47db9ee0cb8b36f5c8a9", "category": "tech_debt", "severity": "medium", "confidence": 0.7, "triageState": "open", "verdict": "needs_review", "isResolved": false, "reason": "Imported from mined Foundry/Fable5 evidence with real GitHub/source provenance. Review source_id before acting.", "evidence": {"meta": {"kind": "graph_query_record", "title": "Human feedback aligned with blueprint or architecture gaps", "intent": "Curriculum-gap examples connecting issue threads to helicopter-view gaps.", "labels": {"test_ci_gap": 1, "weak blueprint fit": 2, "partial blueprint fit": 1, "verification_or_tests": 1, "human_feedback_general": 1, "unlinked_human_feedback": 1, "issue_or_pull_request_thread": 1, "ambiguous_needs_more_evidence": 4, "blueprint_human_gap_alignment": 3, "comment_has_related_commit_context": 1, "thread_has_human_issue_and_fix_context": 2}, "source": "graph_query_export", "motif_id": "blueprint_gap_alignment", "outcomes": {"ambiguous_needs_more_evidence": 8}, "polarity": "mixed", "query_id": "blueprint_gap_alignment", "severity": "medium", "ci_labels": {}, "synthetic": false, "edge_count": 29, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 2, "thread_has_comment": 2, "alignment_uses_comment": 3, "alignment_uses_finding": 3, "chain_has_link_quality": 7, "comment_aligns_finding": 3, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 2, "comment_chain_links_commit": 1, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 2}, "node_count": 22, "node_types": {"repo": 1, "commit": 1, "thread": 1, "comment": 2, "alignment": 3, "fix_outcome": 1, "issue_chain": 1, "link_quality": 7, "comment_chain": 2, "blueprint_finding": 3}, "query_type": "motif_query", "thread_key": "timogilvie/wavemill#220", "issue_number": "220", "quality_tiers": {"unresolved": 1, "assumption_check": 3, "weak_supervision": 3}, "repo_full_name": "timogilvie/wavemill", "training_usage": "curriculum_gap", "source_motif_id": "graph-pattern-motif-thread-1420d44afa248f54", "graph_gold_label": "weak_supervision_needs_review", "changed_file_labels": {}}, "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: timogilvie/wavemill\nThread: timogilvie/wavemill#220\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: timogilvie/wavemill\nThread: timogilvie/wavemill#220\nGraph gold label: weak_supervision_needs_review\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: timogilvie/wavemill#220\nRepo: timogilvie/wavemill\nIssue/PR number: 220\nGraph consistency label: weak_supervision_needs_review\nNodes: 22\nEdges: 29\nNode types: {'link_quality': 7, 'alignment': 3, 'blueprint_finding': 3, 'comment': 2, 'comment_chain': 2, 'thread': 1, 'repo': 1, 'commit': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'chain_has_link_quality': 7, 'alignment_uses_comment': 3, 'alignment_uses_finding': 3, 'comment_aligns_finding': 3, 'thread_has_comment': 2, 'thread_has_comment_chain': 2, 'comment_has_chain': 2, 'issue_chain_has_comment_chain': 2, 'repo_has_thread': 1, 'comment_chain_links_commit': 1, 'thread_has_issue_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'ambiguous_needs_more_evidence': 4, 'blueprint_human_gap_alignment': 3, 'thread_has_human_issue_and_fix_context': 2, 'weak blueprint fit': 2, 'issue_or_pull_request_thread': 1, 'test_ci_gap': 1, 'human_feedback_general': 1, 'comment_has_related_commit_context': 1, 'verification_or_tests': 1, 'unlinked_human_feedback': 1, 'partial blueprint fit': 1}\nOutcomes: {'ambiguous_needs_more_evidence': 8}\nQuality tiers: {'weak_supervision': 3, 'assumption_check': 3, '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/timogilvie/wavemill", "source_id": "graph-query-motif_query-f4b712c7cb955349", "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": "timogilvie/wavemill", "source_dataset": "graph_queries/blueprint_gap_alignment", "training_usage": "curriculum_gap"}}}, {"ruleId": "foundry_blueprint_gap", "level": "warning", "message": {"text": "Foundry mined blueprint gap alignment: timogilvie/wavemill"}, "properties": {"repobilityId": 404297, "scanner": "foundry_dataset", "fingerprint": "133f0422c5f9b0e5b3a64432c52ded569387ae27c9ca537e3d5b6502a27d9e43", "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": {"data_schema": 1, "weak blueprint fit": 2, "partial blueprint fit": 1, "verification_or_tests": 4, "human_feedback_general": 1, "data_schema_persistence": 1, "unlinked_human_feedback": 1, "issue_or_pull_request_thread": 1, "ambiguous_needs_more_evidence": 1, "blueprint_human_gap_alignment": 3, "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": {"ambiguous_needs_more_evidence": 2, "claimed_resolved_with_verification_signal": 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": 2, "thread_has_comment": 2, "alignment_uses_comment": 3, "alignment_uses_finding": 3, "chain_has_link_quality": 7, "comment_aligns_finding": 3, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 2, "comment_chain_links_commit": 5, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 2}, "node_count": 26, "node_types": {"repo": 1, "commit": 5, "thread": 1, "comment": 2, "alignment": 3, "fix_outcome": 1, "issue_chain": 1, "link_quality": 7, "comment_chain": 2, "blueprint_finding": 3}, "query_type": "motif_query", "thread_key": "timogilvie/wavemill#212", "issue_number": "212", "quality_tiers": {"unresolved": 1, "assumption_check": 3, "weak_supervision": 3}, "repo_full_name": "timogilvie/wavemill", "training_usage": "curriculum_gap", "source_motif_id": "graph-pattern-motif-thread-9a30c6a0083aed96", "graph_gold_label": "supported_by_verification_signal", "changed_file_labels": {}}, "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: timogilvie/wavemill\nThread: timogilvie/wavemill#212\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: timogilvie/wavemill\nThread: timogilvie/wavemill#212\nGraph gold label: supported_by_verification_signal\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: timogilvie/wavemill#212\nRepo: timogilvie/wavemill\nIssue/PR number: 212\nGraph consistency label: supported_by_verification_signal\nNodes: 26\nEdges: 33\nNode types: {'link_quality': 7, 'commit': 5, 'alignment': 3, 'blueprint_finding': 3, 'comment': 2, 'comment_chain': 2, 'thread': 1, 'repo': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'chain_has_link_quality': 7, 'comment_chain_links_commit': 5, 'alignment_uses_comment': 3, 'alignment_uses_finding': 3, 'comment_aligns_finding': 3, 'thread_has_comment': 2, 'thread_has_comment_chain': 2, 'comment_has_chain': 2, 'issue_chain_has_comment_chain': 2, 'repo_has_thread': 1, 'thread_has_issue_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'verification_or_tests': 4, 'claimed_resolved_with_verification_signal': 3, 'blueprint_human_gap_alignment': 3, 'thread_has_human_issue_and_fix_context': 2, 'weak blueprint fit': 2, 'issue_or_pull_request_thread': 1, 'data_schema_persistence': 1, 'human_feedback_general': 1, 'human_reported_issue_then_verified_fix_attempt': 1, 'data_schema': 1, 'unlinked_human_feedback': 1, 'ambiguous_needs_more_evidence': 1, 'partial blueprint fit': 1}\nOutcomes: {'claimed_resolved_with_verification_signal': 6, 'ambiguous_needs_more_evidence': 2}\nQuality tiers: {'weak_supervision': 3, 'assumption_check': 3, '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/timogilvie/wavemill", "source_id": "graph-query-motif_query-18af1a3f677c884b", "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": "timogilvie/wavemill", "source_dataset": "graph_queries/blueprint_gap_alignment", "training_usage": "curriculum_gap"}}}, {"ruleId": "foundry_blueprint_gap", "level": "warning", "message": {"text": "Foundry mined blueprint gap alignment: timogilvie/wavemill"}, "properties": {"repobilityId": 404296, "scanner": "foundry_dataset", "fingerprint": "80e72bcc78ad37c18d7bf0c58e6675982a7bc0bd119813428583358d1460f417", "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": {"data_schema": 1, "weak blueprint fit": 2, "partial blueprint fit": 1, "verification_or_tests": 4, "data_schema_persistence": 1, "issue_or_pull_request_thread": 1, "blueprint_human_gap_alignment": 3, "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": 28, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 1, "thread_has_comment": 1, "alignment_uses_comment": 3, "alignment_uses_finding": 3, "chain_has_link_quality": 6, "comment_aligns_finding": 3, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 1, "comment_chain_links_commit": 5, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 1}, "node_count": 23, "node_types": {"repo": 1, "commit": 5, "thread": 1, "comment": 1, "alignment": 3, "fix_outcome": 1, "issue_chain": 1, "link_quality": 6, "comment_chain": 1, "blueprint_finding": 3}, "query_type": "motif_query", "thread_key": "timogilvie/wavemill#209", "issue_number": "209", "quality_tiers": {"assumption_check": 3, "weak_supervision": 3}, "repo_full_name": "timogilvie/wavemill", "training_usage": "curriculum_gap", "source_motif_id": "graph-pattern-motif-thread-73769353f4febfc0", "graph_gold_label": "supported_by_verification_signal", "changed_file_labels": {}}, "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: timogilvie/wavemill\nThread: timogilvie/wavemill#209\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: timogilvie/wavemill\nThread: timogilvie/wavemill#209\nGraph gold label: supported_by_verification_signal\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: timogilvie/wavemill#209\nRepo: timogilvie/wavemill\nIssue/PR number: 209\nGraph consistency label: supported_by_verification_signal\nNodes: 23\nEdges: 28\nNode types: {'link_quality': 6, 'commit': 5, 'alignment': 3, 'blueprint_finding': 3, 'thread': 1, 'repo': 1, 'comment': 1, 'comment_chain': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'chain_has_link_quality': 6, 'comment_chain_links_commit': 5, 'alignment_uses_comment': 3, 'alignment_uses_finding': 3, 'comment_aligns_finding': 3, 'repo_has_thread': 1, 'thread_has_comment': 1, 'thread_has_comment_chain': 1, 'comment_has_chain': 1, 'thread_has_issue_chain': 1, 'issue_chain_has_comment_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'verification_or_tests': 4, 'claimed_resolved_with_verification_signal': 3, 'blueprint_human_gap_alignment': 3, 'thread_has_human_issue_and_fix_context': 2, 'weak blueprint fit': 2, 'issue_or_pull_request_thread': 1, 'data_schema_persistence': 1, 'human_reported_issue_then_verified_fix_attempt': 1, 'data_schema': 1, 'partial blueprint fit': 1}\nOutcomes: {'claimed_resolved_with_verification_signal': 6}\nQuality tiers: {'weak_supervision': 3, 'assumption_check': 3}\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/timogilvie/wavemill", "source_id": "graph-query-motif_query-22c32c6922dd7655", "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": "timogilvie/wavemill", "source_dataset": "graph_queries/blueprint_gap_alignment", "training_usage": "curriculum_gap"}}}, {"ruleId": "foundry_blueprint_gap", "level": "warning", "message": {"text": "Foundry mined blueprint gap alignment: timogilvie/wavemill"}, "properties": {"repobilityId": 404295, "scanner": "foundry_dataset", "fingerprint": "788bb753a3a3d9f33c3e9603670e0a5b7cf1e182f18783633a86552981c8b707", "category": "tech_debt", "severity": "medium", "confidence": 0.7, "triageState": "open", "verdict": "needs_review", "isResolved": false, "reason": "Imported from mined Foundry/Fable5 evidence with real GitHub/source provenance. Review source_id before acting.", "evidence": {"meta": {"kind": "graph_query_record", "title": "Human feedback aligned with blueprint or architecture gaps", "intent": "Curriculum-gap examples connecting issue threads to helicopter-view gaps.", "labels": {"test_ci_gap": 1, "weak blueprint fit": 2, "partial blueprint fit": 1, "verification_or_tests": 4, "human_feedback_general": 1, "unlinked_human_feedback": 1, "issue_or_pull_request_thread": 1, "ambiguous_needs_more_evidence": 4, "blueprint_human_gap_alignment": 3, "comment_has_related_commit_context": 1, "thread_has_human_issue_and_fix_context": 2}, "source": "graph_query_export", "motif_id": "blueprint_gap_alignment", "outcomes": {"ambiguous_needs_more_evidence": 8}, "polarity": "mixed", "query_id": "blueprint_gap_alignment", "severity": "medium", "ci_labels": {}, "synthetic": false, "edge_count": 32, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 2, "thread_has_comment": 2, "alignment_uses_comment": 3, "alignment_uses_finding": 3, "chain_has_link_quality": 7, "comment_aligns_finding": 3, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 2, "comment_chain_links_commit": 4, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 2}, "node_count": 25, "node_types": {"repo": 1, "commit": 4, "thread": 1, "comment": 2, "alignment": 3, "fix_outcome": 1, "issue_chain": 1, "link_quality": 7, "comment_chain": 2, "blueprint_finding": 3}, "query_type": "motif_query", "thread_key": "timogilvie/wavemill#205", "issue_number": "205", "quality_tiers": {"unresolved": 1, "assumption_check": 3, "weak_supervision": 3}, "repo_full_name": "timogilvie/wavemill", "training_usage": "curriculum_gap", "source_motif_id": "graph-pattern-motif-thread-4f8daa2c7b008647", "graph_gold_label": "weak_supervision_needs_review", "changed_file_labels": {}}, "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: timogilvie/wavemill\nThread: timogilvie/wavemill#205\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: timogilvie/wavemill\nThread: timogilvie/wavemill#205\nGraph gold label: weak_supervision_needs_review\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: timogilvie/wavemill#205\nRepo: timogilvie/wavemill\nIssue/PR number: 205\nGraph consistency label: weak_supervision_needs_review\nNodes: 25\nEdges: 32\nNode types: {'link_quality': 7, 'commit': 4, 'alignment': 3, 'blueprint_finding': 3, 'comment': 2, 'comment_chain': 2, 'thread': 1, 'repo': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'chain_has_link_quality': 7, 'comment_chain_links_commit': 4, 'alignment_uses_comment': 3, 'alignment_uses_finding': 3, 'comment_aligns_finding': 3, 'thread_has_comment': 2, 'thread_has_comment_chain': 2, 'comment_has_chain': 2, 'issue_chain_has_comment_chain': 2, 'repo_has_thread': 1, 'thread_has_issue_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'verification_or_tests': 4, 'ambiguous_needs_more_evidence': 4, 'blueprint_human_gap_alignment': 3, 'thread_has_human_issue_and_fix_context': 2, 'weak blueprint fit': 2, 'issue_or_pull_request_thread': 1, 'test_ci_gap': 1, 'human_feedback_general': 1, 'comment_has_related_commit_context': 1, 'unlinked_human_feedback': 1, 'partial blueprint fit': 1}\nOutcomes: {'ambiguous_needs_more_evidence': 8}\nQuality tiers: {'weak_supervision': 3, 'assumption_check': 3, '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/timogilvie/wavemill", "source_id": "graph-query-motif_query-b035a4fd1cc89702", "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": "timogilvie/wavemill", "source_dataset": "graph_queries/blueprint_gap_alignment", "training_usage": "curriculum_gap"}}}, {"ruleId": "foundry_blueprint_gap", "level": "warning", "message": {"text": "Foundry mined blueprint gap alignment: timogilvie/wavemill"}, "properties": {"repobilityId": 404294, "scanner": "foundry_dataset", "fingerprint": "15b45c026b11ce508b862e3cd2f390745164374da2a2e4e08ba3bf1e45c8d821", "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": {"weak blueprint fit": 2, "api_integration_gap": 1, "partial blueprint fit": 1, "verification_or_tests": 4, "human_feedback_general": 1, "unlinked_human_feedback": 1, "issue_or_pull_request_thread": 1, "ambiguous_needs_more_evidence": 4, "blueprint_human_gap_alignment": 3, "comment_has_related_commit_context": 1, "thread_has_human_issue_and_fix_context": 2}, "source": "graph_query_export", "motif_id": "blueprint_gap_alignment", "outcomes": {"ambiguous_needs_more_evidence": 8}, "polarity": "mixed", "query_id": "blueprint_gap_alignment", "severity": "medium", "ci_labels": {}, "synthetic": false, "edge_count": 32, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 2, "thread_has_comment": 2, "alignment_uses_comment": 3, "alignment_uses_finding": 3, "chain_has_link_quality": 7, "comment_aligns_finding": 3, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 2, "comment_chain_links_commit": 4, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 2}, "node_count": 25, "node_types": {"repo": 1, "commit": 4, "thread": 1, "comment": 2, "alignment": 3, "fix_outcome": 1, "issue_chain": 1, "link_quality": 7, "comment_chain": 2, "blueprint_finding": 3}, "query_type": "motif_query", "thread_key": "timogilvie/wavemill#198", "issue_number": "198", "quality_tiers": {"unresolved": 1, "assumption_check": 3, "weak_supervision": 3}, "repo_full_name": "timogilvie/wavemill", "training_usage": "curriculum_gap", "source_motif_id": "graph-pattern-motif-thread-81ffff2b861e28a1", "graph_gold_label": "weak_supervision_needs_review", "changed_file_labels": {}}, "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: timogilvie/wavemill\nThread: timogilvie/wavemill#198\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: timogilvie/wavemill\nThread: timogilvie/wavemill#198\nGraph gold label: weak_supervision_needs_review\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: timogilvie/wavemill#198\nRepo: timogilvie/wavemill\nIssue/PR number: 198\nGraph consistency label: weak_supervision_needs_review\nNodes: 25\nEdges: 32\nNode types: {'link_quality': 7, 'commit': 4, 'alignment': 3, 'blueprint_finding': 3, 'comment': 2, 'comment_chain': 2, 'thread': 1, 'repo': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'chain_has_link_quality': 7, 'comment_chain_links_commit': 4, 'alignment_uses_comment': 3, 'alignment_uses_finding': 3, 'comment_aligns_finding': 3, 'thread_has_comment': 2, 'thread_has_comment_chain': 2, 'comment_has_chain': 2, 'issue_chain_has_comment_chain': 2, 'repo_has_thread': 1, 'thread_has_issue_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'verification_or_tests': 4, 'ambiguous_needs_more_evidence': 4, 'blueprint_human_gap_alignment': 3, 'thread_has_human_issue_and_fix_context': 2, 'weak blueprint fit': 2, 'issue_or_pull_request_thread': 1, 'api_integration_gap': 1, 'human_feedback_general': 1, 'comment_has_related_commit_context': 1, 'unlinked_human_feedback': 1, 'partial blueprint fit': 1}\nOutcomes: {'ambiguous_needs_more_evidence': 8}\nQuality tiers: {'weak_supervision': 3, 'assumption_check': 3, '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/timogilvie/wavemill", "source_id": "graph-query-motif_query-ade41ffd95aa96fe", "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": "timogilvie/wavemill", "source_dataset": "graph_queries/blueprint_gap_alignment", "training_usage": "curriculum_gap"}}}, {"ruleId": "foundry_blueprint_gap", "level": "warning", "message": {"text": "Foundry mined blueprint gap alignment: timogilvie/wavemill"}, "properties": {"repobilityId": 404293, "scanner": "foundry_dataset", "fingerprint": "a0daaede4e1a4a147ee04b12b94157907fc559d8ccfea06d81d9627d650da0e6", "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": {"weak blueprint fit": 2, "api_integration_gap": 1, "partial blueprint fit": 1, "verification_or_tests": 4, "human_feedback_general": 1, "unlinked_human_feedback": 1, "issue_or_pull_request_thread": 1, "ambiguous_needs_more_evidence": 4, "blueprint_human_gap_alignment": 3, "comment_has_related_commit_context": 1, "thread_has_human_issue_and_fix_context": 2}, "source": "graph_query_export", "motif_id": "blueprint_gap_alignment", "outcomes": {"ambiguous_needs_more_evidence": 8}, "polarity": "mixed", "query_id": "blueprint_gap_alignment", "severity": "medium", "ci_labels": {}, "synthetic": false, "edge_count": 32, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 2, "thread_has_comment": 2, "alignment_uses_comment": 3, "alignment_uses_finding": 3, "chain_has_link_quality": 7, "comment_aligns_finding": 3, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 2, "comment_chain_links_commit": 4, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 2}, "node_count": 25, "node_types": {"repo": 1, "commit": 4, "thread": 1, "comment": 2, "alignment": 3, "fix_outcome": 1, "issue_chain": 1, "link_quality": 7, "comment_chain": 2, "blueprint_finding": 3}, "query_type": "motif_query", "thread_key": "timogilvie/wavemill#197", "issue_number": "197", "quality_tiers": {"unresolved": 1, "assumption_check": 3, "weak_supervision": 3}, "repo_full_name": "timogilvie/wavemill", "training_usage": "curriculum_gap", "source_motif_id": "graph-pattern-motif-thread-5d87595e4285e410", "graph_gold_label": "weak_supervision_needs_review", "changed_file_labels": {}}, "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: timogilvie/wavemill\nThread: timogilvie/wavemill#197\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: timogilvie/wavemill\nThread: timogilvie/wavemill#197\nGraph gold label: weak_supervision_needs_review\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: timogilvie/wavemill#197\nRepo: timogilvie/wavemill\nIssue/PR number: 197\nGraph consistency label: weak_supervision_needs_review\nNodes: 25\nEdges: 32\nNode types: {'link_quality': 7, 'commit': 4, 'alignment': 3, 'blueprint_finding': 3, 'comment': 2, 'comment_chain': 2, 'thread': 1, 'repo': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'chain_has_link_quality': 7, 'comment_chain_links_commit': 4, 'alignment_uses_comment': 3, 'alignment_uses_finding': 3, 'comment_aligns_finding': 3, 'thread_has_comment': 2, 'thread_has_comment_chain': 2, 'comment_has_chain': 2, 'issue_chain_has_comment_chain': 2, 'repo_has_thread': 1, 'thread_has_issue_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'ambiguous_needs_more_evidence': 4, 'verification_or_tests': 4, 'blueprint_human_gap_alignment': 3, 'thread_has_human_issue_and_fix_context': 2, 'weak blueprint fit': 2, 'issue_or_pull_request_thread': 1, 'human_feedback_general': 1, 'api_integration_gap': 1, 'unlinked_human_feedback': 1, 'comment_has_related_commit_context': 1, 'partial blueprint fit': 1}\nOutcomes: {'ambiguous_needs_more_evidence': 8}\nQuality tiers: {'weak_supervision': 3, 'assumption_check': 3, '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/timogilvie/wavemill", "source_id": "graph-query-motif_query-47c00770ad4d5f00", "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": "timogilvie/wavemill", "source_dataset": "graph_queries/blueprint_gap_alignment", "training_usage": "curriculum_gap"}}}, {"ruleId": "foundry_blueprint_gap", "level": "warning", "message": {"text": "Foundry mined blueprint gap alignment: timogilvie/wavemill"}, "properties": {"repobilityId": 404292, "scanner": "foundry_dataset", "fingerprint": "2adaf4783f93c7f2a2d2a5099a97737ee7bb21be972db33c1e97edbe24efbd7d", "category": "tech_debt", "severity": "medium", "confidence": 0.7, "triageState": "open", "verdict": "needs_review", "isResolved": false, "reason": "Imported from mined Foundry/Fable5 evidence with real GitHub/source provenance. Review source_id before acting.", "evidence": {"meta": {"kind": "graph_query_record", "title": "Human feedback aligned with blueprint or architecture gaps", "intent": "Curriculum-gap examples connecting issue threads to helicopter-view gaps.", "labels": {"test_ci_gap": 1, "weak blueprint fit": 2, "partial blueprint fit": 1, "verification_or_tests": 3, "human_feedback_general": 1, "unlinked_human_feedback": 1, "issue_or_pull_request_thread": 1, "ambiguous_needs_more_evidence": 4, "blueprint_human_gap_alignment": 3, "comment_has_related_commit_context": 1, "thread_has_human_issue_and_fix_context": 2}, "source": "graph_query_export", "motif_id": "blueprint_gap_alignment", "outcomes": {"ambiguous_needs_more_evidence": 8}, "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, "alignment_uses_comment": 3, "alignment_uses_finding": 3, "chain_has_link_quality": 7, "comment_aligns_finding": 3, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 2, "comment_chain_links_commit": 3, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 2}, "node_count": 24, "node_types": {"repo": 1, "commit": 3, "thread": 1, "comment": 2, "alignment": 3, "fix_outcome": 1, "issue_chain": 1, "link_quality": 7, "comment_chain": 2, "blueprint_finding": 3}, "query_type": "motif_query", "thread_key": "timogilvie/wavemill#196", "issue_number": "196", "quality_tiers": {"unresolved": 1, "assumption_check": 3, "weak_supervision": 3}, "repo_full_name": "timogilvie/wavemill", "training_usage": "curriculum_gap", "source_motif_id": "graph-pattern-motif-thread-66cf42c146b66aad", "graph_gold_label": "weak_supervision_needs_review", "changed_file_labels": {}}, "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: timogilvie/wavemill\nThread: timogilvie/wavemill#196\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: timogilvie/wavemill\nThread: timogilvie/wavemill#196\nGraph gold label: weak_supervision_needs_review\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: timogilvie/wavemill#196\nRepo: timogilvie/wavemill\nIssue/PR number: 196\nGraph consistency label: weak_supervision_needs_review\nNodes: 24\nEdges: 31\nNode types: {'link_quality': 7, 'commit': 3, 'alignment': 3, 'blueprint_finding': 3, 'comment': 2, 'comment_chain': 2, 'thread': 1, 'repo': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'chain_has_link_quality': 7, 'comment_chain_links_commit': 3, 'alignment_uses_comment': 3, 'alignment_uses_finding': 3, 'comment_aligns_finding': 3, 'thread_has_comment': 2, 'thread_has_comment_chain': 2, 'comment_has_chain': 2, 'issue_chain_has_comment_chain': 2, 'repo_has_thread': 1, 'thread_has_issue_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'ambiguous_needs_more_evidence': 4, 'verification_or_tests': 3, 'blueprint_human_gap_alignment': 3, 'thread_has_human_issue_and_fix_context': 2, 'weak blueprint fit': 2, 'issue_or_pull_request_thread': 1, 'human_feedback_general': 1, 'test_ci_gap': 1, 'unlinked_human_feedback': 1, 'comment_has_related_commit_context': 1, 'partial blueprint fit': 1}\nOutcomes: {'ambiguous_needs_more_evidence': 8}\nQuality tiers: {'weak_supervision': 3, 'assumption_check': 3, '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/timogilvie/wavemill", "source_id": "graph-query-motif_query-6c56cdd3defe5673", "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": "timogilvie/wavemill", "source_dataset": "graph_queries/blueprint_gap_alignment", "training_usage": "curriculum_gap"}}}, {"ruleId": "foundry_blueprint_gap", "level": "warning", "message": {"text": "Foundry mined blueprint gap alignment: timogilvie/wavemill"}, "properties": {"repobilityId": 404291, "scanner": "foundry_dataset", "fingerprint": "6599cb40ab6e222ca3a12ec09428608f5bd7333f8117130b67f8f090305f1552", "category": "tech_debt", "severity": "medium", "confidence": 0.7, "triageState": "open", "verdict": "needs_review", "isResolved": false, "reason": "Imported from mined Foundry/Fable5 evidence with real GitHub/source provenance. Review source_id before acting.", "evidence": {"meta": {"kind": "graph_query_record", "title": "Human feedback aligned with blueprint or architecture gaps", "intent": "Curriculum-gap examples connecting issue threads to helicopter-view gaps.", "labels": {"test_ci_gap": 1, "weak blueprint fit": 2, "partial blueprint fit": 1, "verification_or_tests": 3, "human_feedback_general": 2, "unlinked_human_feedback": 2, "issue_or_pull_request_thread": 1, "ambiguous_needs_more_evidence": 5, "blueprint_human_gap_alignment": 3, "comment_has_related_commit_context": 1, "thread_has_human_issue_and_fix_context": 2}, "source": "graph_query_export", "motif_id": "blueprint_gap_alignment", "outcomes": {"ambiguous_needs_more_evidence": 10}, "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": 3, "thread_has_comment": 3, "alignment_uses_comment": 3, "alignment_uses_finding": 3, "chain_has_link_quality": 8, "comment_aligns_finding": 3, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 3, "comment_chain_links_commit": 3, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 3}, "node_count": 27, "node_types": {"repo": 1, "commit": 3, "thread": 1, "comment": 3, "alignment": 3, "fix_outcome": 1, "issue_chain": 1, "link_quality": 8, "comment_chain": 3, "blueprint_finding": 3}, "query_type": "motif_query", "thread_key": "timogilvie/wavemill#195", "issue_number": "195", "quality_tiers": {"unresolved": 2, "assumption_check": 3, "weak_supervision": 3}, "repo_full_name": "timogilvie/wavemill", "training_usage": "curriculum_gap", "source_motif_id": "graph-pattern-motif-thread-ed93010a8e80e44a", "graph_gold_label": "weak_supervision_needs_review", "changed_file_labels": {}}, "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: timogilvie/wavemill\nThread: timogilvie/wavemill#195\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: timogilvie/wavemill\nThread: timogilvie/wavemill#195\nGraph gold label: weak_supervision_needs_review\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: timogilvie/wavemill#195\nRepo: timogilvie/wavemill\nIssue/PR number: 195\nGraph consistency label: weak_supervision_needs_review\nNodes: 27\nEdges: 36\nNode types: {'link_quality': 8, 'comment': 3, 'comment_chain': 3, 'commit': 3, 'alignment': 3, 'blueprint_finding': 3, 'thread': 1, 'repo': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'chain_has_link_quality': 8, 'thread_has_comment': 3, 'thread_has_comment_chain': 3, 'comment_has_chain': 3, 'comment_chain_links_commit': 3, 'issue_chain_has_comment_chain': 3, 'alignment_uses_comment': 3, 'alignment_uses_finding': 3, 'comment_aligns_finding': 3, 'repo_has_thread': 1, 'thread_has_issue_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'ambiguous_needs_more_evidence': 5, 'verification_or_tests': 3, 'blueprint_human_gap_alignment': 3, 'human_feedback_general': 2, 'unlinked_human_feedback': 2, 'thread_has_human_issue_and_fix_context': 2, 'weak blueprint fit': 2, 'issue_or_pull_request_thread': 1, 'test_ci_gap': 1, 'comment_has_related_commit_context': 1, 'partial blueprint fit': 1}\nOutcomes: {'ambiguous_needs_more_evidence': 10}\nQuality tiers: {'weak_supervision': 3, 'assumption_check': 3, 'unresolved': 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/timogilvie/wavemill", "source_id": "graph-query-motif_query-783509b44e706600", "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": "timogilvie/wavemill", "source_dataset": "graph_queries/blueprint_gap_alignment", "training_usage": "curriculum_gap"}}}, {"ruleId": "foundry_blueprint_gap", "level": "warning", "message": {"text": "Foundry mined blueprint gap alignment: timogilvie/wavemill"}, "properties": {"repobilityId": 404290, "scanner": "foundry_dataset", "fingerprint": "0990ab4cd746a6038560ce6ab790c24980d4d1a0ced07b185545a81af6a6d2bf", "category": "tech_debt", "severity": "medium", "confidence": 0.7, "triageState": "open", "verdict": "needs_review", "isResolved": false, "reason": "Imported from mined Foundry/Fable5 evidence with real GitHub/source provenance. Review source_id before acting.", "evidence": {"meta": {"kind": "graph_query_record", "title": "Human feedback aligned with blueprint or architecture gaps", "intent": "Curriculum-gap examples connecting issue threads to helicopter-view gaps.", "labels": {"test_ci_gap": 2, "weak blueprint fit": 2, "partial blueprint fit": 1, "verification_or_tests": 2, "human_feedback_general": 2, "unlinked_human_feedback": 2, "issue_or_pull_request_thread": 1, "not_resolved_or_not_observed": 1, "ambiguous_needs_more_evidence": 5, "blueprint_human_gap_alignment": 6, "comment_has_related_commit_context": 1, "human_reported_issue_no_linked_fix": 1, "thread_has_human_issue_and_fix_context": 2}, "source": "graph_query_export", "motif_id": "blueprint_gap_alignment", "outcomes": {"not_resolved_or_not_observed": 2, "ambiguous_needs_more_evidence": 10}, "polarity": "mixed", "query_id": "blueprint_gap_alignment", "severity": "medium", "ci_labels": {}, "synthetic": false, "edge_count": 52, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 4, "thread_has_comment": 4, "alignment_uses_comment": 6, "alignment_uses_finding": 6, "chain_has_link_quality": 12, "comment_aligns_finding": 6, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 4, "comment_chain_links_commit": 2, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 4}, "node_count": 35, "node_types": {"repo": 1, "commit": 2, "thread": 1, "comment": 4, "alignment": 6, "fix_outcome": 1, "issue_chain": 1, "link_quality": 12, "comment_chain": 4, "blueprint_finding": 3}, "query_type": "motif_query", "thread_key": "timogilvie/wavemill#173", "issue_number": "173", "quality_tiers": {"unresolved": 3, "assumption_check": 6, "weak_supervision": 3}, "repo_full_name": "timogilvie/wavemill", "training_usage": "curriculum_gap", "source_motif_id": "graph-pattern-motif-thread-df3d05e71aadab85", "graph_gold_label": "weak_supervision_needs_review", "changed_file_labels": {}}, "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: timogilvie/wavemill\nThread: timogilvie/wavemill#173\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: timogilvie/wavemill\nThread: timogilvie/wavemill#173\nGraph gold label: weak_supervision_needs_review\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: timogilvie/wavemill#173\nRepo: timogilvie/wavemill\nIssue/PR number: 173\nGraph consistency label: weak_supervision_needs_review\nNodes: 35\nEdges: 52\nNode types: {'link_quality': 12, 'alignment': 6, 'comment': 4, 'comment_chain': 4, 'blueprint_finding': 3, 'commit': 2, 'thread': 1, 'repo': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'chain_has_link_quality': 12, 'alignment_uses_comment': 6, 'alignment_uses_finding': 6, 'comment_aligns_finding': 6, 'thread_has_comment': 4, 'thread_has_comment_chain': 4, 'comment_has_chain': 4, 'issue_chain_has_comment_chain': 4, 'comment_chain_links_commit': 2, 'repo_has_thread': 1, 'thread_has_issue_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'blueprint_human_gap_alignment': 6, 'ambiguous_needs_more_evidence': 5, 'test_ci_gap': 2, 'human_feedback_general': 2, 'verification_or_tests': 2, 'unlinked_human_feedback': 2, 'thread_has_human_issue_and_fix_context': 2, 'weak blueprint fit': 2, 'issue_or_pull_request_thread': 1, 'comment_has_related_commit_context': 1, 'human_reported_issue_no_linked_fix': 1, 'not_resolved_or_not_observed': 1, 'partial blueprint fit': 1}\nOutcomes: {'ambiguous_needs_more_evidence': 10, 'not_resolved_or_not_observed': 2}\nQuality tiers: {'assumption_check': 6, 'weak_supervision': 3, 'unresolved': 3}\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/timogilvie/wavemill", "source_id": "graph-query-motif_query-5c67d315f6cc97f5", "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": "timogilvie/wavemill", "source_dataset": "graph_queries/blueprint_gap_alignment", "training_usage": "curriculum_gap"}}}, {"ruleId": "foundry_blueprint_gap", "level": "warning", "message": {"text": "Foundry mined blueprint gap alignment: timogilvie/wavemill"}, "properties": {"repobilityId": 404289, "scanner": "foundry_dataset", "fingerprint": "2407d54b36fc4d72c9a58380af65020a80d2a379b28362d910b2521ec08072d2", "category": "tech_debt", "severity": "medium", "confidence": 0.7, "triageState": "open", "verdict": "needs_review", "isResolved": false, "reason": "Imported from mined Foundry/Fable5 evidence with real GitHub/source provenance. Review source_id before acting.", "evidence": {"meta": {"kind": "graph_query_record", "title": "Human feedback aligned with blueprint or architecture gaps", "intent": "Curriculum-gap examples connecting issue threads to helicopter-view gaps.", "labels": {"test_ci_gap": 1, "weak blueprint fit": 2, "agent_instruction_gap": 1, "partial blueprint fit": 1, "human_feedback_general": 1, "unlinked_human_feedback": 1, "issue_or_pull_request_thread": 1, "not_resolved_or_not_observed": 4, "ambiguous_needs_more_evidence": 1, "blueprint_human_gap_alignment": 3, "human_reported_issue_no_linked_fix": 2, "thread_has_human_issue_without_fix_context": 2}, "source": "graph_query_export", "motif_id": "blueprint_gap_alignment", "outcomes": {"not_resolved_or_not_observed": 8, "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": 3, "thread_has_comment": 3, "alignment_uses_comment": 3, "alignment_uses_finding": 3, "chain_has_link_quality": 8, "comment_aligns_finding": 3, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 3, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 3}, "node_count": 24, "node_types": {"repo": 1, "thread": 1, "comment": 3, "alignment": 3, "fix_outcome": 1, "issue_chain": 1, "link_quality": 8, "comment_chain": 3, "blueprint_finding": 3}, "query_type": "motif_query", "thread_key": "timogilvie/wavemill#172", "issue_number": "172", "quality_tiers": {"unresolved": 5, "assumption_check": 3}, "repo_full_name": "timogilvie/wavemill", "training_usage": "curriculum_gap", "source_motif_id": "graph-pattern-motif-thread-b21a7316b0a31bb8", "graph_gold_label": "assumption_check", "changed_file_labels": {}}, "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: assumption_check\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#172\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: timogilvie/wavemill\nThread: timogilvie/wavemill#172\nGraph gold label: assumption_check\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: timogilvie/wavemill#172\nRepo: timogilvie/wavemill\nIssue/PR number: 172\nGraph consistency label: assumption_check\nNodes: 24\nEdges: 33\nNode types: {'link_quality': 8, 'comment': 3, 'comment_chain': 3, 'alignment': 3, 'blueprint_finding': 3, 'thread': 1, 'repo': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'chain_has_link_quality': 8, 'thread_has_comment': 3, 'thread_has_comment_chain': 3, 'comment_has_chain': 3, 'issue_chain_has_comment_chain': 3, 'alignment_uses_comment': 3, 'alignment_uses_finding': 3, 'comment_aligns_finding': 3, 'repo_has_thread': 1, 'thread_has_issue_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'not_resolved_or_not_observed': 4, 'blueprint_human_gap_alignment': 3, 'human_reported_issue_no_linked_fix': 2, 'thread_has_human_issue_without_fix_context': 2, 'weak blueprint fit': 2, 'issue_or_pull_request_thread': 1, 'agent_instruction_gap': 1, 'human_feedback_general': 1, 'test_ci_gap': 1, 'unlinked_human_feedback': 1, 'ambiguous_needs_more_evidence': 1, 'partial blueprint fit': 1}\nOutcomes: {'not_resolved_or_not_observed': 8, 'ambiguous_needs_more_evidence': 2}\nQuality tiers: {'unresolved': 5, 'assumption_check': 3}\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/timogilvie/wavemill", "source_id": "graph-query-motif_query-ac9416bdb7ab4385", "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": "timogilvie/wavemill", "source_dataset": "graph_queries/blueprint_gap_alignment", "training_usage": "curriculum_gap"}}}, {"ruleId": "foundry_blueprint_gap", "level": "warning", "message": {"text": "Foundry mined blueprint gap alignment: timogilvie/wavemill"}, "properties": {"repobilityId": 404288, "scanner": "foundry_dataset", "fingerprint": "acbbef0d1efd52fe030d90a8764919fd2a3edd37d5deec8a133c9bdfc6a44e36", "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": {"data_schema": 1, "weak blueprint fit": 2, "partial blueprint fit": 1, "verification_or_tests": 4, "data_schema_persistence": 2, "issue_or_pull_request_thread": 1, "ambiguous_needs_more_evidence": 3, "blueprint_human_gap_alignment": 6, "comment_has_related_commit_context": 1, "thread_has_human_issue_and_fix_context": 2, "claimed_resolved_with_verification_signal": 1, "human_reported_issue_then_verified_fix_attempt": 1}, "source": "graph_query_export", "motif_id": "blueprint_gap_alignment", "outcomes": {"ambiguous_needs_more_evidence": 6, "claimed_resolved_with_verification_signal": 2}, "polarity": "mixed", "query_id": "blueprint_gap_alignment", "severity": "medium", "ci_labels": {}, "synthetic": false, "edge_count": 46, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 2, "thread_has_comment": 2, "alignment_uses_comment": 6, "alignment_uses_finding": 6, "chain_has_link_quality": 10, "comment_aligns_finding": 6, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 2, "comment_chain_links_commit": 6, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 2}, "node_count": 32, "node_types": {"repo": 1, "commit": 5, "thread": 1, "comment": 2, "alignment": 6, "fix_outcome": 1, "issue_chain": 1, "link_quality": 10, "comment_chain": 2, "blueprint_finding": 3}, "query_type": "motif_query", "thread_key": "timogilvie/wavemill#165", "issue_number": "165", "quality_tiers": {"assumption_check": 6, "weak_supervision": 4}, "repo_full_name": "timogilvie/wavemill", "training_usage": "curriculum_gap", "source_motif_id": "graph-pattern-motif-thread-979ef62429924311", "graph_gold_label": "supported_by_verification_signal", "changed_file_labels": {}}, "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: timogilvie/wavemill\nThread: timogilvie/wavemill#165\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: timogilvie/wavemill\nThread: timogilvie/wavemill#165\nGraph gold label: supported_by_verification_signal\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: timogilvie/wavemill#165\nRepo: timogilvie/wavemill\nIssue/PR number: 165\nGraph consistency label: supported_by_verification_signal\nNodes: 32\nEdges: 46\nNode types: {'link_quality': 10, 'alignment': 6, 'commit': 5, 'blueprint_finding': 3, 'comment': 2, 'comment_chain': 2, 'thread': 1, 'repo': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'chain_has_link_quality': 10, 'comment_chain_links_commit': 6, 'alignment_uses_comment': 6, 'alignment_uses_finding': 6, 'comment_aligns_finding': 6, 'thread_has_comment': 2, 'thread_has_comment_chain': 2, 'comment_has_chain': 2, 'issue_chain_has_comment_chain': 2, 'repo_has_thread': 1, 'thread_has_issue_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'blueprint_human_gap_alignment': 6, 'verification_or_tests': 4, 'ambiguous_needs_more_evidence': 3, 'data_schema_persistence': 2, 'thread_has_human_issue_and_fix_context': 2, 'weak blueprint fit': 2, 'issue_or_pull_request_thread': 1, 'comment_has_related_commit_context': 1, 'human_reported_issue_then_verified_fix_attempt': 1, 'data_schema': 1, 'claimed_resolved_with_verification_signal': 1, 'partial blueprint fit': 1}\nOutcomes: {'ambiguous_needs_more_evidence': 6, 'claimed_resolved_with_verification_signal': 2}\nQuality tiers: {'assumption_check': 6, 'weak_supervision': 4}\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/timogilvie/wavemill", "source_id": "graph-query-motif_query-7a1bc65ac9aa4b46", "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": "timogilvie/wavemill", "source_dataset": "graph_queries/blueprint_gap_alignment", "training_usage": "curriculum_gap"}}}, {"ruleId": "foundry_blueprint_gap", "level": "warning", "message": {"text": "Foundry mined blueprint gap alignment: timogilvie/wavemill"}, "properties": {"repobilityId": 404287, "scanner": "foundry_dataset", "fingerprint": "2ebbf1f4c15b695641782f17b4da066680a0ffefc5fc1c39cb75fbe2fa915f3f", "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": {"data_schema": 1, "weak blueprint fit": 2, "partial blueprint fit": 1, "verification_or_tests": 7, "human_feedback_general": 2, "data_schema_persistence": 2, "unlinked_human_feedback": 2, "issue_or_pull_request_thread": 1, "ambiguous_needs_more_evidence": 5, "blueprint_human_gap_alignment": 6, "comment_has_related_commit_context": 1, "thread_has_human_issue_and_fix_context": 2, "claimed_resolved_with_verification_signal": 1, "human_reported_issue_then_verified_fix_attempt": 1}, "source": "graph_query_export", "motif_id": "blueprint_gap_alignment", "outcomes": {"ambiguous_needs_more_evidence": 10, "claimed_resolved_with_verification_signal": 2}, "polarity": "mixed", "query_id": "blueprint_gap_alignment", "severity": "medium", "ci_labels": {}, "synthetic": false, "edge_count": 59, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 4, "thread_has_comment": 4, "alignment_uses_comment": 6, "alignment_uses_finding": 6, "chain_has_link_quality": 12, "comment_aligns_finding": 6, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 4, "comment_chain_links_commit": 9, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 4}, "node_count": 41, "node_types": {"repo": 1, "commit": 8, "thread": 1, "comment": 4, "alignment": 6, "fix_outcome": 1, "issue_chain": 1, "link_quality": 12, "comment_chain": 4, "blueprint_finding": 3}, "query_type": "motif_query", "thread_key": "timogilvie/wavemill#164", "issue_number": "164", "quality_tiers": {"unresolved": 2, "assumption_check": 6, "weak_supervision": 4}, "repo_full_name": "timogilvie/wavemill", "training_usage": "curriculum_gap", "source_motif_id": "graph-pattern-motif-thread-3e9f36270a0cb4f4", "graph_gold_label": "supported_by_verification_signal", "changed_file_labels": {}}, "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: timogilvie/wavemill\nThread: timogilvie/wavemill#164\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: timogilvie/wavemill\nThread: timogilvie/wavemill#164\nGraph gold label: supported_by_verification_signal\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: timogilvie/wavemill#164\nRepo: timogilvie/wavemill\nIssue/PR number: 164\nGraph consistency label: supported_by_verification_signal\nNodes: 41\nEdges: 59\nNode types: {'link_quality': 12, 'commit': 8, 'alignment': 6, 'comment': 4, 'comment_chain': 4, 'blueprint_finding': 3, 'thread': 1, 'repo': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'chain_has_link_quality': 12, 'comment_chain_links_commit': 9, 'alignment_uses_comment': 6, 'alignment_uses_finding': 6, 'comment_aligns_finding': 6, 'thread_has_comment': 4, 'thread_has_comment_chain': 4, 'comment_has_chain': 4, 'issue_chain_has_comment_chain': 4, 'repo_has_thread': 1, 'thread_has_issue_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'verification_or_tests': 7, 'blueprint_human_gap_alignment': 6, 'ambiguous_needs_more_evidence': 5, 'data_schema_persistence': 2, 'human_feedback_general': 2, 'unlinked_human_feedback': 2, 'thread_has_human_issue_and_fix_context': 2, 'weak blueprint fit': 2, 'issue_or_pull_request_thread': 1, 'comment_has_related_commit_context': 1, 'human_reported_issue_then_verified_fix_attempt': 1, 'data_schema': 1, 'claimed_resolved_with_verification_signal': 1, 'partial blueprint fit': 1}\nOutcomes: {'ambiguous_needs_more_evidence': 10, 'claimed_resolved_with_verification_signal': 2}\nQuality tiers: {'assumption_check': 6, 'weak_supervision': 4, 'unresolved': 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/timogilvie/wavemill", "source_id": "graph-query-motif_query-d9076d7d6f5a1376", "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": "timogilvie/wavemill", "source_dataset": "graph_queries/blueprint_gap_alignment", "training_usage": "curriculum_gap"}}}, {"ruleId": "foundry_blueprint_gap", "level": "warning", "message": {"text": "Foundry mined blueprint gap alignment: timogilvie/wavemill"}, "properties": {"repobilityId": 404286, "scanner": "foundry_dataset", "fingerprint": "43bd2c38e31e4aca54c9f012408e7ec193a98315dc46c80066174552c9f7d82b", "category": "tech_debt", "severity": "medium", "confidence": 0.7, "triageState": "open", "verdict": "needs_review", "isResolved": false, "reason": "Imported from mined Foundry/Fable5 evidence with real GitHub/source provenance. Review source_id before acting.", "evidence": {"meta": {"kind": "graph_query_record", "title": "Human feedback aligned with blueprint or architecture gaps", "intent": "Curriculum-gap examples connecting issue threads to helicopter-view gaps.", "labels": {"test_ci_gap": 1, "weak blueprint fit": 2, "partial blueprint fit": 1, "verification_or_tests": 5, "issue_or_pull_request_thread": 1, "ambiguous_needs_more_evidence": 3, "blueprint_human_gap_alignment": 3, "comment_has_related_commit_context": 1, "thread_has_human_issue_and_fix_context": 2}, "source": "graph_query_export", "motif_id": "blueprint_gap_alignment", "outcomes": {"ambiguous_needs_more_evidence": 6}, "polarity": "mixed", "query_id": "blueprint_gap_alignment", "severity": "medium", "ci_labels": {}, "synthetic": false, "edge_count": 28, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 1, "thread_has_comment": 1, "alignment_uses_comment": 3, "alignment_uses_finding": 3, "chain_has_link_quality": 6, "comment_aligns_finding": 3, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 1, "comment_chain_links_commit": 5, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 1}, "node_count": 23, "node_types": {"repo": 1, "commit": 5, "thread": 1, "comment": 1, "alignment": 3, "fix_outcome": 1, "issue_chain": 1, "link_quality": 6, "comment_chain": 1, "blueprint_finding": 3}, "query_type": "motif_query", "thread_key": "timogilvie/wavemill#152", "issue_number": "152", "quality_tiers": {"assumption_check": 3, "weak_supervision": 3}, "repo_full_name": "timogilvie/wavemill", "training_usage": "curriculum_gap", "source_motif_id": "graph-pattern-motif-thread-60faabb8fc6c0225", "graph_gold_label": "weak_supervision_needs_review", "changed_file_labels": {}}, "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: timogilvie/wavemill\nThread: timogilvie/wavemill#152\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: timogilvie/wavemill\nThread: timogilvie/wavemill#152\nGraph gold label: weak_supervision_needs_review\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: timogilvie/wavemill#152\nRepo: timogilvie/wavemill\nIssue/PR number: 152\nGraph consistency label: weak_supervision_needs_review\nNodes: 23\nEdges: 28\nNode types: {'link_quality': 6, 'commit': 5, 'alignment': 3, 'blueprint_finding': 3, 'thread': 1, 'repo': 1, 'comment': 1, 'comment_chain': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'chain_has_link_quality': 6, 'comment_chain_links_commit': 5, 'alignment_uses_comment': 3, 'alignment_uses_finding': 3, 'comment_aligns_finding': 3, 'repo_has_thread': 1, 'thread_has_comment': 1, 'thread_has_comment_chain': 1, 'comment_has_chain': 1, 'thread_has_issue_chain': 1, 'issue_chain_has_comment_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'verification_or_tests': 5, 'ambiguous_needs_more_evidence': 3, 'blueprint_human_gap_alignment': 3, 'thread_has_human_issue_and_fix_context': 2, 'weak blueprint fit': 2, 'issue_or_pull_request_thread': 1, 'test_ci_gap': 1, 'comment_has_related_commit_context': 1, 'partial blueprint fit': 1}\nOutcomes: {'ambiguous_needs_more_evidence': 6}\nQuality tiers: {'weak_supervision': 3, 'assumption_check': 3}\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/timogilvie/wavemill", "source_id": "graph-query-motif_query-02060c052fe2f25b", "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": "timogilvie/wavemill", "source_dataset": "graph_queries/blueprint_gap_alignment", "training_usage": "curriculum_gap"}}}, {"ruleId": "foundry_blueprint_gap", "level": "warning", "message": {"text": "Foundry mined blueprint gap alignment: timogilvie/wavemill"}, "properties": {"repobilityId": 404285, "scanner": "foundry_dataset", "fingerprint": "9280aa63d05849ef222218879dfbfc5bb52ba8f9bee6c83c42a3f99c2057d199", "category": "tech_debt", "severity": "medium", "confidence": 0.7, "triageState": "open", "verdict": "needs_review", "isResolved": false, "reason": "Imported from mined Foundry/Fable5 evidence with real GitHub/source provenance. Review source_id before acting.", "evidence": {"meta": {"kind": "graph_query_record", "title": "Human feedback aligned with blueprint or architecture gaps", "intent": "Curriculum-gap examples connecting issue threads to helicopter-view gaps.", "labels": {"test_ci_gap": 1, "weak blueprint fit": 2, "partial blueprint fit": 1, "verification_or_tests": 5, "issue_or_pull_request_thread": 1, "ambiguous_needs_more_evidence": 3, "blueprint_human_gap_alignment": 3, "comment_has_related_commit_context": 1, "thread_has_human_issue_and_fix_context": 2}, "source": "graph_query_export", "motif_id": "blueprint_gap_alignment", "outcomes": {"ambiguous_needs_more_evidence": 6}, "polarity": "mixed", "query_id": "blueprint_gap_alignment", "severity": "medium", "ci_labels": {}, "synthetic": false, "edge_count": 28, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 1, "thread_has_comment": 1, "alignment_uses_comment": 3, "alignment_uses_finding": 3, "chain_has_link_quality": 6, "comment_aligns_finding": 3, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 1, "comment_chain_links_commit": 5, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 1}, "node_count": 23, "node_types": {"repo": 1, "commit": 5, "thread": 1, "comment": 1, "alignment": 3, "fix_outcome": 1, "issue_chain": 1, "link_quality": 6, "comment_chain": 1, "blueprint_finding": 3}, "query_type": "motif_query", "thread_key": "timogilvie/wavemill#141", "issue_number": "141", "quality_tiers": {"assumption_check": 3, "weak_supervision": 3}, "repo_full_name": "timogilvie/wavemill", "training_usage": "curriculum_gap", "source_motif_id": "graph-pattern-motif-thread-66c6d0430191b686", "graph_gold_label": "weak_supervision_needs_review", "changed_file_labels": {}}, "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: timogilvie/wavemill\nThread: timogilvie/wavemill#141\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: timogilvie/wavemill\nThread: timogilvie/wavemill#141\nGraph gold label: weak_supervision_needs_review\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: timogilvie/wavemill#141\nRepo: timogilvie/wavemill\nIssue/PR number: 141\nGraph consistency label: weak_supervision_needs_review\nNodes: 23\nEdges: 28\nNode types: {'link_quality': 6, 'commit': 5, 'alignment': 3, 'blueprint_finding': 3, 'thread': 1, 'repo': 1, 'comment': 1, 'comment_chain': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'chain_has_link_quality': 6, 'comment_chain_links_commit': 5, 'alignment_uses_comment': 3, 'alignment_uses_finding': 3, 'comment_aligns_finding': 3, 'repo_has_thread': 1, 'thread_has_comment': 1, 'thread_has_comment_chain': 1, 'comment_has_chain': 1, 'thread_has_issue_chain': 1, 'issue_chain_has_comment_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'verification_or_tests': 5, 'ambiguous_needs_more_evidence': 3, 'blueprint_human_gap_alignment': 3, 'thread_has_human_issue_and_fix_context': 2, 'weak blueprint fit': 2, 'issue_or_pull_request_thread': 1, 'test_ci_gap': 1, 'comment_has_related_commit_context': 1, 'partial blueprint fit': 1}\nOutcomes: {'ambiguous_needs_more_evidence': 6}\nQuality tiers: {'weak_supervision': 3, 'assumption_check': 3}\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/timogilvie/wavemill", "source_id": "graph-query-motif_query-45f387b4b189ff76", "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": "timogilvie/wavemill", "source_dataset": "graph_queries/blueprint_gap_alignment", "training_usage": "curriculum_gap"}}}, {"ruleId": "foundry_blueprint_gap", "level": "warning", "message": {"text": "Foundry mined blueprint gap alignment: timogilvie/wavemill"}, "properties": {"repobilityId": 404284, "scanner": "foundry_dataset", "fingerprint": "6cced225767e3a69688544df41397720bd8b28771d00eb26040d1833a39f27f7", "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": 1, "ui_workflow_gap": 1, "weak blueprint fit": 2, "partial blueprint fit": 1, "verification_or_tests": 4, "issue_or_pull_request_thread": 1, "blueprint_human_gap_alignment": 3, "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": 28, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 1, "thread_has_comment": 1, "alignment_uses_comment": 3, "alignment_uses_finding": 3, "chain_has_link_quality": 6, "comment_aligns_finding": 3, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 1, "comment_chain_links_commit": 5, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 1}, "node_count": 23, "node_types": {"repo": 1, "commit": 5, "thread": 1, "comment": 1, "alignment": 3, "fix_outcome": 1, "issue_chain": 1, "link_quality": 6, "comment_chain": 1, "blueprint_finding": 3}, "query_type": "motif_query", "thread_key": "timogilvie/wavemill#134", "issue_number": "134", "quality_tiers": {"assumption_check": 3, "weak_supervision": 3}, "repo_full_name": "timogilvie/wavemill", "training_usage": "curriculum_gap", "source_motif_id": "graph-pattern-motif-thread-e504f61fa4e0fa30", "graph_gold_label": "supported_by_verification_signal", "changed_file_labels": {}}, "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: timogilvie/wavemill\nThread: timogilvie/wavemill#134\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: timogilvie/wavemill\nThread: timogilvie/wavemill#134\nGraph gold label: supported_by_verification_signal\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: timogilvie/wavemill#134\nRepo: timogilvie/wavemill\nIssue/PR number: 134\nGraph consistency label: supported_by_verification_signal\nNodes: 23\nEdges: 28\nNode types: {'link_quality': 6, 'commit': 5, 'alignment': 3, 'blueprint_finding': 3, 'thread': 1, 'repo': 1, 'comment': 1, 'comment_chain': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'chain_has_link_quality': 6, 'comment_chain_links_commit': 5, 'alignment_uses_comment': 3, 'alignment_uses_finding': 3, 'comment_aligns_finding': 3, 'repo_has_thread': 1, 'thread_has_comment': 1, 'thread_has_comment_chain': 1, 'comment_has_chain': 1, 'thread_has_issue_chain': 1, 'issue_chain_has_comment_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'verification_or_tests': 4, 'claimed_resolved_with_verification_signal': 3, 'blueprint_human_gap_alignment': 3, 'thread_has_human_issue_and_fix_context': 2, 'weak blueprint fit': 2, 'issue_or_pull_request_thread': 1, 'ui_workflow_gap': 1, 'human_reported_issue_then_verified_fix_attempt': 1, 'bug_fix': 1, 'partial blueprint fit': 1}\nOutcomes: {'claimed_resolved_with_verification_signal': 6}\nQuality tiers: {'weak_supervision': 3, 'assumption_check': 3}\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/timogilvie/wavemill", "source_id": "graph-query-motif_query-fbbec749880d3aff", "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": "timogilvie/wavemill", "source_dataset": "graph_queries/blueprint_gap_alignment", "training_usage": "curriculum_gap"}}}, {"ruleId": "foundry_blueprint_gap", "level": "warning", "message": {"text": "Foundry mined blueprint gap alignment: timogilvie/wavemill"}, "properties": {"repobilityId": 404283, "scanner": "foundry_dataset", "fingerprint": "07bc509befb7f98a0ace16cacf7257634d0e6084494e120eff95d3ff52290b7b", "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": 1, "test_ci_gap": 1, "weak blueprint fit": 2, "partial blueprint fit": 1, "verification_or_tests": 4, "issue_or_pull_request_thread": 1, "blueprint_human_gap_alignment": 3, "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": 28, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 1, "thread_has_comment": 1, "alignment_uses_comment": 3, "alignment_uses_finding": 3, "chain_has_link_quality": 6, "comment_aligns_finding": 3, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 1, "comment_chain_links_commit": 5, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 1}, "node_count": 23, "node_types": {"repo": 1, "commit": 5, "thread": 1, "comment": 1, "alignment": 3, "fix_outcome": 1, "issue_chain": 1, "link_quality": 6, "comment_chain": 1, "blueprint_finding": 3}, "query_type": "motif_query", "thread_key": "timogilvie/wavemill#121", "issue_number": "121", "quality_tiers": {"assumption_check": 3, "weak_supervision": 3}, "repo_full_name": "timogilvie/wavemill", "training_usage": "curriculum_gap", "source_motif_id": "graph-pattern-motif-thread-3cba646885dbb458", "graph_gold_label": "supported_by_verification_signal", "changed_file_labels": {}}, "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: timogilvie/wavemill\nThread: timogilvie/wavemill#121\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: timogilvie/wavemill\nThread: timogilvie/wavemill#121\nGraph gold label: supported_by_verification_signal\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: timogilvie/wavemill#121\nRepo: timogilvie/wavemill\nIssue/PR number: 121\nGraph consistency label: supported_by_verification_signal\nNodes: 23\nEdges: 28\nNode types: {'link_quality': 6, 'commit': 5, 'alignment': 3, 'blueprint_finding': 3, 'thread': 1, 'repo': 1, 'comment': 1, 'comment_chain': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'chain_has_link_quality': 6, 'comment_chain_links_commit': 5, 'alignment_uses_comment': 3, 'alignment_uses_finding': 3, 'comment_aligns_finding': 3, 'repo_has_thread': 1, 'thread_has_comment': 1, 'thread_has_comment_chain': 1, 'comment_has_chain': 1, 'thread_has_issue_chain': 1, 'issue_chain_has_comment_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'verification_or_tests': 4, 'claimed_resolved_with_verification_signal': 3, 'blueprint_human_gap_alignment': 3, 'thread_has_human_issue_and_fix_context': 2, 'weak blueprint fit': 2, 'issue_or_pull_request_thread': 1, 'test_ci_gap': 1, 'human_reported_issue_then_verified_fix_attempt': 1, 'bug_fix': 1, 'partial blueprint fit': 1}\nOutcomes: {'claimed_resolved_with_verification_signal': 6}\nQuality tiers: {'weak_supervision': 3, 'assumption_check': 3}\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/timogilvie/wavemill", "source_id": "graph-query-motif_query-97df4c528566598e", "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": "timogilvie/wavemill", "source_dataset": "graph_queries/blueprint_gap_alignment", "training_usage": "curriculum_gap"}}}, {"ruleId": "foundry_blueprint_gap", "level": "warning", "message": {"text": "Foundry mined blueprint gap alignment: timogilvie/wavemill"}, "properties": {"repobilityId": 404282, "scanner": "foundry_dataset", "fingerprint": "0a819db0944361994fa6ff03e3341d9a55f4e77b025afa0b51cd155dd80a1569", "category": "tech_debt", "severity": "medium", "confidence": 0.7, "triageState": "open", "verdict": "needs_review", "isResolved": false, "reason": "Imported from mined Foundry/Fable5 evidence with real GitHub/source provenance. Review source_id before acting.", "evidence": {"meta": {"kind": "graph_query_record", "title": "Human feedback aligned with blueprint or architecture gaps", "intent": "Curriculum-gap examples connecting issue threads to helicopter-view gaps.", "labels": {"test_ci_gap": 1, "weak blueprint fit": 2, "partial blueprint fit": 1, "verification_or_tests": 5, "issue_or_pull_request_thread": 1, "ambiguous_needs_more_evidence": 3, "blueprint_human_gap_alignment": 3, "comment_has_related_commit_context": 1, "thread_has_human_issue_and_fix_context": 2}, "source": "graph_query_export", "motif_id": "blueprint_gap_alignment", "outcomes": {"ambiguous_needs_more_evidence": 6}, "polarity": "mixed", "query_id": "blueprint_gap_alignment", "severity": "medium", "ci_labels": {}, "synthetic": false, "edge_count": 28, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 1, "thread_has_comment": 1, "alignment_uses_comment": 3, "alignment_uses_finding": 3, "chain_has_link_quality": 6, "comment_aligns_finding": 3, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 1, "comment_chain_links_commit": 5, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 1}, "node_count": 23, "node_types": {"repo": 1, "commit": 5, "thread": 1, "comment": 1, "alignment": 3, "fix_outcome": 1, "issue_chain": 1, "link_quality": 6, "comment_chain": 1, "blueprint_finding": 3}, "query_type": "motif_query", "thread_key": "timogilvie/wavemill#120", "issue_number": "120", "quality_tiers": {"assumption_check": 3, "weak_supervision": 3}, "repo_full_name": "timogilvie/wavemill", "training_usage": "curriculum_gap", "source_motif_id": "graph-pattern-motif-thread-812bd8d077e46f43", "graph_gold_label": "weak_supervision_needs_review", "changed_file_labels": {}}, "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: timogilvie/wavemill\nThread: timogilvie/wavemill#120\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: timogilvie/wavemill\nThread: timogilvie/wavemill#120\nGraph gold label: weak_supervision_needs_review\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: timogilvie/wavemill#120\nRepo: timogilvie/wavemill\nIssue/PR number: 120\nGraph consistency label: weak_supervision_needs_review\nNodes: 23\nEdges: 28\nNode types: {'link_quality': 6, 'commit': 5, 'alignment': 3, 'blueprint_finding': 3, 'thread': 1, 'repo': 1, 'comment': 1, 'comment_chain': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'chain_has_link_quality': 6, 'comment_chain_links_commit': 5, 'alignment_uses_comment': 3, 'alignment_uses_finding': 3, 'comment_aligns_finding': 3, 'repo_has_thread': 1, 'thread_has_comment': 1, 'thread_has_comment_chain': 1, 'comment_has_chain': 1, 'thread_has_issue_chain': 1, 'issue_chain_has_comment_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'verification_or_tests': 5, 'ambiguous_needs_more_evidence': 3, 'blueprint_human_gap_alignment': 3, 'thread_has_human_issue_and_fix_context': 2, 'weak blueprint fit': 2, 'issue_or_pull_request_thread': 1, 'test_ci_gap': 1, 'comment_has_related_commit_context': 1, 'partial blueprint fit': 1}\nOutcomes: {'ambiguous_needs_more_evidence': 6}\nQuality tiers: {'weak_supervision': 3, 'assumption_check': 3}\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/timogilvie/wavemill", "source_id": "graph-query-motif_query-39056bc23a4724d4", "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": "timogilvie/wavemill", "source_dataset": "graph_queries/blueprint_gap_alignment", "training_usage": "curriculum_gap"}}}, {"ruleId": "foundry_blueprint_gap", "level": "warning", "message": {"text": "Foundry mined blueprint gap alignment: timogilvie/wavemill"}, "properties": {"repobilityId": 404281, "scanner": "foundry_dataset", "fingerprint": "3a6ec28b224d20e47cc4b94695c3260e7fadcbd3e3f847916e544aae858d129e", "category": "tech_debt", "severity": "medium", "confidence": 0.7, "triageState": "open", "verdict": "needs_review", "isResolved": false, "reason": "Imported from mined Foundry/Fable5 evidence with real GitHub/source provenance. Review source_id before acting.", "evidence": {"meta": {"kind": "graph_query_record", "title": "Human feedback aligned with blueprint or architecture gaps", "intent": "Curriculum-gap examples connecting issue threads to helicopter-view gaps.", "labels": {"test_ci_gap": 1, "weak blueprint fit": 2, "partial blueprint fit": 1, "verification_or_tests": 5, "issue_or_pull_request_thread": 1, "ambiguous_needs_more_evidence": 3, "blueprint_human_gap_alignment": 3, "comment_has_related_commit_context": 1, "thread_has_human_issue_and_fix_context": 2}, "source": "graph_query_export", "motif_id": "blueprint_gap_alignment", "outcomes": {"ambiguous_needs_more_evidence": 6}, "polarity": "mixed", "query_id": "blueprint_gap_alignment", "severity": "medium", "ci_labels": {}, "synthetic": false, "edge_count": 28, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 1, "thread_has_comment": 1, "alignment_uses_comment": 3, "alignment_uses_finding": 3, "chain_has_link_quality": 6, "comment_aligns_finding": 3, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 1, "comment_chain_links_commit": 5, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 1}, "node_count": 23, "node_types": {"repo": 1, "commit": 5, "thread": 1, "comment": 1, "alignment": 3, "fix_outcome": 1, "issue_chain": 1, "link_quality": 6, "comment_chain": 1, "blueprint_finding": 3}, "query_type": "motif_query", "thread_key": "timogilvie/wavemill#118", "issue_number": "118", "quality_tiers": {"assumption_check": 3, "weak_supervision": 3}, "repo_full_name": "timogilvie/wavemill", "training_usage": "curriculum_gap", "source_motif_id": "graph-pattern-motif-thread-047970bb598db48c", "graph_gold_label": "weak_supervision_needs_review", "changed_file_labels": {}}, "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: timogilvie/wavemill\nThread: timogilvie/wavemill#118\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: timogilvie/wavemill\nThread: timogilvie/wavemill#118\nGraph gold label: weak_supervision_needs_review\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: timogilvie/wavemill#118\nRepo: timogilvie/wavemill\nIssue/PR number: 118\nGraph consistency label: weak_supervision_needs_review\nNodes: 23\nEdges: 28\nNode types: {'link_quality': 6, 'commit': 5, 'alignment': 3, 'blueprint_finding': 3, 'thread': 1, 'repo': 1, 'comment': 1, 'comment_chain': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'chain_has_link_quality': 6, 'comment_chain_links_commit': 5, 'alignment_uses_comment': 3, 'alignment_uses_finding': 3, 'comment_aligns_finding': 3, 'repo_has_thread': 1, 'thread_has_comment': 1, 'thread_has_comment_chain': 1, 'comment_has_chain': 1, 'thread_has_issue_chain': 1, 'issue_chain_has_comment_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'verification_or_tests': 5, 'ambiguous_needs_more_evidence': 3, 'blueprint_human_gap_alignment': 3, 'thread_has_human_issue_and_fix_context': 2, 'weak blueprint fit': 2, 'issue_or_pull_request_thread': 1, 'test_ci_gap': 1, 'comment_has_related_commit_context': 1, 'partial blueprint fit': 1}\nOutcomes: {'ambiguous_needs_more_evidence': 6}\nQuality tiers: {'weak_supervision': 3, 'assumption_check': 3}\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/timogilvie/wavemill", "source_id": "graph-query-motif_query-bb87cbe3ca42e277", "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": "timogilvie/wavemill", "source_dataset": "graph_queries/blueprint_gap_alignment", "training_usage": "curriculum_gap"}}}, {"ruleId": "foundry_assumption_check", "level": "warning", "message": {"text": "Foundry mined assumption checks: timogilvie/wavemill"}, "properties": {"repobilityId": 382901, "scanner": "foundry_dataset", "fingerprint": "89fc54752858bce642ab96ce2f59f352f303f92e00447e3535ffc9b9b10c89fb", "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": "timogilvie/wavemill#98", "human_labels": ["test_ci_gap"], "issue_number": "98", "thread_label": "thread_has_human_issue_and_fix_context", "outcome_label": "ambiguous_needs_more_evidence", "source_backed": true, "max_confidence": 0.58, "repo_full_name": "timogilvie/wavemill", "training_usage": "weak_supervision", "confidence_tier": "weak_supervision", "source_chain_id": "evidence-chain-issue_chain-634576f46f5d301f", "helicopter_views": {"graphs": 2, "schemas": 2}, "artifact_families": {"docs": 1, "schemas": 1}, "source_chain_kind": "issue_chain", "changed_file_count": 0, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {}, "linked_commit_count": 5, "helicopter_view_count": 4, "source_artifact_count": 2, "classification_reasons": ["source_graph_has_real_artifacts", "source_graph_has_verification_artifacts", "repo_has_isolated_helicopter_views", "link_quality_weak_supervision", "high_risk_human_feedback_label"], "linked_ci_commit_count": 0, "verification_artifact_count": 1, "design_schema_api_artifact_count": 1}, "text": "Comment chain pattern product: assumption_checks\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#98\nOutcome: ambiguous_needs_more_evidence\nThread label: thread_has_human_issue_and_fix_context\nSource graph label: source_backed_multi_signal_graph\nReasons: source_graph_has_real_artifacts, source_graph_has_verification_artifacts, repo_has_isolated_helicopter_views, link_quality_weak_supervision, high_risk_human_feedback_label\nChain evidence:\nIssue/PR evidence chain: timogilvie/wavemill#98\nRepo: timogilvie/wavemill\nThread label: thread_has_human_issue_and_fix_context\nOutcome: ambiguous_needs_more_evidence\nComment count: 1\nLinked commit count: 5\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 0\nLabels: {'test_ci_gap': 1}\nPolarities: {'bad': 1}\nChanged file labels: {}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-b460cb2a5043b044\",\n    \"kind\": \"pull_request_body\",\n    \"label\": \"test_ci_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/timogilvie/wavemill/pull/98\",\n    \"text\": \"GitHub feedback: test_ci_gap\\nPolarity: bad\\nKind: pull_request_body\\nRepo: timogilvie/wavemill\\nAuthor: timogilvie (User)\\nURL: https://github.com/timogilvie/wavemill/pull/98\\nTitle: HOK-883: Add workflow cost diagnostics and quality reporting\\nBody:\\n## Summary\\n\\nAdds comprehensive diagnostic metadata to track why workflow costs are missing in eval records (10.3% of records), plus data quality reporting for aggregated evals.\\n\\n**Key finding**: The perceived \\\"costs going down\\\" was natural task complexity variation, not a bug in cost computation. The algorithm is working correctly when session data is available.\\n\\n## Changes\\n\\n### 1. Diagnostic Metadata (Phase 1)\\n- **New fields**: `workflowCostStatus` and `workflowCostDiagnostics` in `EvalRecord`\\n- **Status tracking**: 'success', 'no_sessions', 'no_branch', 'adapter_error', 'missing_worktree', 'skipped'\\n- **Return type**: `computeWorkflowCost()` now returns `WorkflowCostOutcome` with diagnostics instead of silent null\\n- **Export support**: Added `workflow_cost_status` column to CSV/JSONL exports\\n\\n### 2. Backfill Tool (Phase 2)\\n- **New tool**: `tools/backfill-workflow-cost-status.ts`\\n- Adds status metadata to existing eval records\\n- Attempts to\"\n  }\n]\nChanged files:\n[]\nLinked chain ids:\n[\"evidence-chain-comment_to_commit-3b325e91bb98a2a6\"]\nSource graph evidence:\nSource evidence repo graph summary\nRepo: timogilvie/wavemill\nGraph label: source_backed_multi_signal_graph\nNodes: 10\nEdges: 12\nNode types: {\"cooccurrence_profile\": 1, \"github_repo_summary\": 1, \"helicopter_repo_view\": 4, \"repo\": 1, \"source_artifact\": 2, \"source_bundle\": 1}\nEdge types: {\"artifact_needs_claim_verification\": 1, \"artifact_supports_verification\": 1, \"repo_has_cooccurrence_profile\": 1, \"repo_has_github_evidence_summary\": 1, \"repo_has_graphs_helicopter_view\": 2, \"repo_has_schemas_helicopter_view\": 2, \"repo_has_source_artifact\": 2, \"repo_has_source_bundle\": 1, \"source_bundle_uses_\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/timogilvie/wavemill", "source_id": "comment-chain-pattern-assumption_checks-0ea6fa7ce3932ca3", "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": "timogilvie/wavemill", "source_dataset": "comment_chain_patterns/assumption_checks", "training_usage": "weak_supervision"}}}, {"ruleId": "foundry_assumption_check", "level": "warning", "message": {"text": "Foundry mined assumption checks: timogilvie/wavemill"}, "properties": {"repobilityId": 382900, "scanner": "foundry_dataset", "fingerprint": "c475bc3fda1e4abbf4ba31a10a1a07b98eed4d2743818b20d4b0d319f2d23d77", "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": "timogilvie/wavemill#97", "human_labels": ["data_schema_persistence"], "issue_number": "97", "thread_label": "thread_has_human_issue_and_fix_context", "outcome_label": "ambiguous_needs_more_evidence", "source_backed": true, "max_confidence": 0.58, "repo_full_name": "timogilvie/wavemill", "training_usage": "weak_supervision", "confidence_tier": "weak_supervision", "source_chain_id": "evidence-chain-issue_chain-47dff1d9cbad441c", "helicopter_views": {"graphs": 2, "schemas": 2}, "artifact_families": {"docs": 1, "schemas": 1}, "source_chain_kind": "issue_chain", "changed_file_count": 0, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {}, "linked_commit_count": 5, "helicopter_view_count": 4, "source_artifact_count": 2, "classification_reasons": ["source_graph_has_real_artifacts", "source_graph_has_verification_artifacts", "repo_has_isolated_helicopter_views", "link_quality_weak_supervision", "high_risk_human_feedback_label"], "linked_ci_commit_count": 0, "verification_artifact_count": 1, "design_schema_api_artifact_count": 1}, "text": "Comment chain pattern product: assumption_checks\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#97\nOutcome: ambiguous_needs_more_evidence\nThread label: thread_has_human_issue_and_fix_context\nSource graph label: source_backed_multi_signal_graph\nReasons: source_graph_has_real_artifacts, source_graph_has_verification_artifacts, repo_has_isolated_helicopter_views, link_quality_weak_supervision, high_risk_human_feedback_label\nChain evidence:\nIssue/PR evidence chain: timogilvie/wavemill#97\nRepo: timogilvie/wavemill\nThread label: thread_has_human_issue_and_fix_context\nOutcome: ambiguous_needs_more_evidence\nComment count: 1\nLinked commit count: 5\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 0\nLabels: {'data_schema_persistence': 1}\nPolarities: {'bad': 1}\nChanged file labels: {}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-7ec9c2c144dfe08e\",\n    \"kind\": \"pull_request_body\",\n    \"label\": \"data_schema_persistence\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/timogilvie/wavemill/pull/97\",\n    \"text\": \"GitHub feedback: data_schema_persistence\\nPolarity: bad\\nKind: pull_request_body\\nRepo: timogilvie/wavemill\\nAuthor: timogilvie (User)\\nURL: https://github.com/timogilvie/wavemill/pull/97\\nTitle: HOK-884: Fix review tool JSON parsing failures\\nBody:\\n## Summary\\n\\nFixes the review tool's inconsistent JSON parsing failures by implementing a provider-agnostic, multi-layer defense against LLM conversational responses. The tool now reliably produces structured output even when context files (task packet, plan) are missing.\\n\\n**Key improvements:**\\n- \u2705 Works with any LLM provider (Claude, Codex, OpenAI, etc.)\\n- \u2705 Automatic retry with stricter prompts (~95% success rate)\\n- \u2705 Clear error messages with response previews\\n- \u2705 No breaking changes to existing API\\n\\n## Changes\\n\\n### `tools/prompts/review.md`\\n- Add explicit JSON schema at the top of the prompt\\n- Multiple reminders to return JSON-only output\\n- Final reminder before review request\\n- Clear examples of expected format\\n\\n### `shared/lib/review-engine.ts`\\n- **New `looksLikeJson()` function** - Pre-validates response format before parsing\\n- **New `runReviewWithRetry()` wrapper** - Implements 2-attempt strategy with automatic retry\\n- **Enhanced `parse\"\n  }\n]\nChanged files:\n[]\nLinked chain ids:\n[\"evidence-chain-comment_to_commit-68e45951806746f6\"]\nSource graph evidence:\nSource evidence repo graph summary\nRepo: timogilvie/wavemill\nGraph label: source_backed_multi_signal_graph\nNodes: 10\nEdges: 12\nNode types: {\"cooccurrence_profile\": 1, \"github_repo_summary\": 1, \"helicopter_repo_view\": 4, \"repo\": 1, \"source_artifact\": 2, \"source_bundle\": 1}\nEdge types: {\"artifact_needs_claim_verification\": 1, \"artifact_supports_verification\": 1, \"repo_has_cooccurrence_profile\": 1, \"repo_has_github_evidence_summary\": 1, \"repo_has_graphs_helicopter_view\": 2, \"repo_has_schemas_helicopter_view\": 2, \"repo_has_source_artifact\": 2, \"repo_has_source_bundle\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/timogilvie/wavemill", "source_id": "comment-chain-pattern-assumption_checks-18f40f59dd0fe083", "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": "timogilvie/wavemill", "source_dataset": "comment_chain_patterns/assumption_checks", "training_usage": "weak_supervision"}}}, {"ruleId": "foundry_assumption_check", "level": "warning", "message": {"text": "Foundry mined assumption checks: timogilvie/wavemill"}, "properties": {"repobilityId": 382899, "scanner": "foundry_dataset", "fingerprint": "baf754f358709a86b0be7c64d26c569a0ceaa8c62cd20f9c0cc87f3e49b6f3da", "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": "timogilvie/wavemill#89", "human_labels": ["test_ci_gap"], "issue_number": "89", "thread_label": "thread_has_human_issue_and_fix_context", "outcome_label": "ambiguous_needs_more_evidence", "source_backed": true, "max_confidence": 0.58, "repo_full_name": "timogilvie/wavemill", "training_usage": "weak_supervision", "confidence_tier": "weak_supervision", "source_chain_id": "evidence-chain-issue_chain-396f557317bdd822", "helicopter_views": {"graphs": 2, "schemas": 2}, "artifact_families": {"docs": 1, "schemas": 1}, "source_chain_kind": "issue_chain", "changed_file_count": 0, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {}, "linked_commit_count": 3, "helicopter_view_count": 4, "source_artifact_count": 2, "classification_reasons": ["source_graph_has_real_artifacts", "source_graph_has_verification_artifacts", "repo_has_isolated_helicopter_views", "link_quality_weak_supervision", "high_risk_human_feedback_label"], "linked_ci_commit_count": 0, "verification_artifact_count": 1, "design_schema_api_artifact_count": 1}, "text": "Comment chain pattern product: assumption_checks\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#89\nOutcome: ambiguous_needs_more_evidence\nThread label: thread_has_human_issue_and_fix_context\nSource graph label: source_backed_multi_signal_graph\nReasons: source_graph_has_real_artifacts, source_graph_has_verification_artifacts, repo_has_isolated_helicopter_views, link_quality_weak_supervision, high_risk_human_feedback_label\nChain evidence:\nIssue/PR evidence chain: timogilvie/wavemill#89\nRepo: timogilvie/wavemill\nThread label: thread_has_human_issue_and_fix_context\nOutcome: ambiguous_needs_more_evidence\nComment count: 1\nLinked commit count: 3\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 0\nLabels: {'test_ci_gap': 1}\nPolarities: {'bad': 1}\nChanged file labels: {}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-beb095e4c6944e93\",\n    \"kind\": \"pull_request_body\",\n    \"label\": \"test_ci_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/timogilvie/wavemill/pull/89\",\n    \"text\": \"GitHub feedback: test_ci_gap\\nPolarity: bad\\nKind: pull_request_body\\nRepo: timogilvie/wavemill\\nAuthor: timogilvie (User)\\nURL: https://github.com/timogilvie/wavemill/pull/89\\nTitle: HOK-876: Standardize @ts-nocheck - remove from 16 tool files\\nBody:\\n## Summary\\n\\nRemove `@ts-nocheck` directive from 16 tool files in the `tools/` directory and add proper TypeScript type annotations. This improves type safety and code quality across the toolchain.\\n\\n- **Phase 1**: 7 simple files (28-60 LOC) - basic CLI tools\\n- **Phase 2**: 5 medium files (120-200 LOC) - tools with complex args parsing\\n- **Phase 3**: 4 complex files (200-700 LOC) - already had comprehensive type annotations\\n\\nAll files now have:\\n- Explicit return types on all functions\\n- Typed parameters (especially `process.argv` usage)\\n- Type guards for error handling (`error instanceof Error`)\\n- Interface definitions for complex data structures\\n\\n## Changes\\n\\n### Files Modified (16 total)\\n\\n**Phase 1 - Simple files:**\\n- `list-backlog-json.ts` (28 LOC)\\n- `get-issue-state.ts` (31 LOC)\\n- `get-issue-json.ts` (33 LOC)\\n- `set-issue-state.ts` (33 LOC)\\n- `update-issue.ts` (49 LOC)\\n- `get-issue.ts` (57 LOC)\\n- `add-issue-label.ts` (59 LOC)\\n\\n**Phase 2 - M\"\n  }\n]\nChanged files:\n[]\nLinked chain ids:\n[\"evidence-chain-comment_to_commit-7334ff2692ad8850\"]\nSource graph evidence:\nSource evidence repo graph summary\nRepo: timogilvie/wavemill\nGraph label: source_backed_multi_signal_graph\nNodes: 10\nEdges: 12\nNode types: {\"cooccurrence_profile\": 1, \"github_repo_summary\": 1, \"helicopter_repo_view\": 4, \"repo\": 1, \"source_artifact\": 2, \"source_bundle\": 1}\nEdge types: {\"artifact_needs_claim_verification\": 1, \"artifact_supports_verification\": 1, \"repo_has_cooccurrence_profile\": 1, \"repo_has_github_evidence_summary\": 1, \"repo_has_graphs_helicopter_view\": 2, \"repo_has_schemas_helicopter_view\": 2, \"repo_has_source_artifact\": 2, \"repo_has_source_bundle\": 1, \"source_bund\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/timogilvie/wavemill", "source_id": "comment-chain-pattern-assumption_checks-2f86c32c890eaf5d", "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": "timogilvie/wavemill", "source_dataset": "comment_chain_patterns/assumption_checks", "training_usage": "weak_supervision"}}}, {"ruleId": "foundry_assumption_check", "level": "warning", "message": {"text": "Foundry mined assumption checks: timogilvie/wavemill"}, "properties": {"repobilityId": 382898, "scanner": "foundry_dataset", "fingerprint": "14a599c275de8af589b05b25637bc19692f54685ce3209aa66add1141a46e75d", "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": "timogilvie/wavemill#88", "human_labels": ["deployment_env_gap"], "issue_number": "88", "thread_label": "thread_has_human_issue_and_fix_context", "outcome_label": "ambiguous_needs_more_evidence", "source_backed": true, "max_confidence": 0.58, "repo_full_name": "timogilvie/wavemill", "training_usage": "weak_supervision", "confidence_tier": "weak_supervision", "source_chain_id": "evidence-chain-issue_chain-05106d6bc91d7216", "helicopter_views": {"graphs": 2, "schemas": 2}, "artifact_families": {"docs": 1, "schemas": 1}, "source_chain_kind": "issue_chain", "changed_file_count": 0, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {}, "linked_commit_count": 5, "helicopter_view_count": 4, "source_artifact_count": 2, "classification_reasons": ["source_graph_has_real_artifacts", "source_graph_has_verification_artifacts", "repo_has_isolated_helicopter_views", "link_quality_weak_supervision", "high_risk_human_feedback_label"], "linked_ci_commit_count": 0, "verification_artifact_count": 1, "design_schema_api_artifact_count": 1}, "text": "Comment chain pattern product: assumption_checks\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#88\nOutcome: ambiguous_needs_more_evidence\nThread label: thread_has_human_issue_and_fix_context\nSource graph label: source_backed_multi_signal_graph\nReasons: source_graph_has_real_artifacts, source_graph_has_verification_artifacts, repo_has_isolated_helicopter_views, link_quality_weak_supervision, high_risk_human_feedback_label\nChain evidence:\nIssue/PR evidence chain: timogilvie/wavemill#88\nRepo: timogilvie/wavemill\nThread label: thread_has_human_issue_and_fix_context\nOutcome: ambiguous_needs_more_evidence\nComment count: 1\nLinked commit count: 5\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 0\nLabels: {'deployment_env_gap': 1}\nPolarities: {'bad': 1}\nChanged file labels: {}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-0071ffd007e6fcbd\",\n    \"kind\": \"pull_request_body\",\n    \"label\": \"deployment_env_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/timogilvie/wavemill/pull/88\",\n    \"text\": \"GitHub feedback: deployment_env_gap\\nPolarity: bad\\nKind: pull_request_body\\nRepo: timogilvie/wavemill\\nAuthor: timogilvie (User)\\nURL: https://github.com/timogilvie/wavemill/pull/88\\nTitle: HOK-878: Standardize import conventions\\nBody:\\n## Summary\\n\\nStandardizes import conventions across all TypeScript and JavaScript files to improve code consistency and maintainability.\\n\\n- Standardized built-in module imports to use `node:` prefix (24 files)\\n- Standardized local import extensions: `.ts` for TypeScript, `.js` for JavaScript (36 files)\\n- Standardized shebang lines to `#!/usr/bin/env -S npx tsx` for all TypeScript executables (8 files)\\n- Centralized dotenv configuration into `shared/lib/env.ts` (11 files)\\n\\n## Changes\\n\\n### 1. Built-in Module Imports\\nAll built-in Node.js modules now use the `node:` prefix, following Node.js best practices:\\n- `from 'fs'` \u2192 `from 'node:fs'`\\n- `from 'path'` \u2192 `from 'node:path'`\\n- `from 'child_process'` \u2192 `from 'node:child_process'`\\n\\n**Benefits**: Explicit distinction between built-in and third-party modules, better IDE support\\n\\n### 2. Local Import Extensions\\nImports now explicitly use the correct file extension:\\n- TypeScript files: `.ts` extension\\n- JavaScript f\"\n  }\n]\nChanged files:\n[]\nLinked chain ids:\n[\"evidence-chain-comment_to_commit-fe7df3020e20e36d\"]\nSource graph evidence:\nSource evidence repo graph summary\nRepo: timogilvie/wavemill\nGraph label: source_backed_multi_signal_graph\nNodes: 10\nEdges: 12\nNode types: {\"cooccurrence_profile\": 1, \"github_repo_summary\": 1, \"helicopter_repo_view\": 4, \"repo\": 1, \"source_artifact\": 2, \"source_bundle\": 1}\nEdge types: {\"artifact_needs_claim_verification\": 1, \"artifact_supports_verification\": 1, \"repo_has_cooccurrence_profile\": 1, \"repo_has_github_evidence_summary\": 1, \"repo_has_graphs_helicopter_view\": 2, \"repo_has_schemas_helicopter_view\": 2, \"repo_has_source_artifact\": 2, \"repo_has_source_bundle\": 1, \"so\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/timogilvie/wavemill", "source_id": "comment-chain-pattern-assumption_checks-9b0324ae9f03ea65", "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": "timogilvie/wavemill", "source_dataset": "comment_chain_patterns/assumption_checks", "training_usage": "weak_supervision"}}}, {"ruleId": "foundry_assumption_check", "level": "warning", "message": {"text": "Foundry mined assumption checks: timogilvie/wavemill"}, "properties": {"repobilityId": 382897, "scanner": "foundry_dataset", "fingerprint": "beac02b9fda2c93ccde9c6f1be685c98a0f1188184afe906e3f23accf1f1b0c9", "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": "timogilvie/wavemill#749", "human_labels": ["api_integration_gap", "api_or_backend", "dependency_or_build", "docs_or_claims", "schema_or_data", "source_or_other", "test_or_ci"], "issue_number": "749", "thread_label": "thread_has_human_issue_and_fix_context", "outcome_label": "ambiguous_needs_more_evidence", "source_backed": true, "max_confidence": 0.708, "repo_full_name": "timogilvie/wavemill", "training_usage": "weak_supervision", "confidence_tier": "weak_supervision", "source_chain_id": "evidence-chain-issue_chain-765dbece9804c5d1", "helicopter_views": {"graphs": 2, "schemas": 2}, "artifact_families": {"docs": 1, "schemas": 1}, "source_chain_kind": "issue_chain", "changed_file_count": 64, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {"test_or_ci": 22, "api_or_backend": 10, "docs_or_claims": 2, "schema_or_data": 2, "source_or_other": 27, "dependency_or_build": 1}, "linked_commit_count": 1, "helicopter_view_count": 4, "source_artifact_count": 2, "classification_reasons": ["source_graph_has_real_artifacts", "source_graph_has_verification_artifacts", "repo_has_isolated_helicopter_views", "link_quality_weak_supervision", "high_risk_human_feedback_label"], "linked_ci_commit_count": 0, "verification_artifact_count": 1, "design_schema_api_artifact_count": 1}, "text": "Comment chain pattern product: assumption_checks\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#749\nOutcome: ambiguous_needs_more_evidence\nThread label: thread_has_human_issue_and_fix_context\nSource graph label: source_backed_multi_signal_graph\nReasons: source_graph_has_real_artifacts, source_graph_has_verification_artifacts, repo_has_isolated_helicopter_views, link_quality_weak_supervision, high_risk_human_feedback_label\nChain evidence:\nIssue/PR evidence chain: timogilvie/wavemill#749\nRepo: timogilvie/wavemill\nThread label: thread_has_human_issue_and_fix_context\nOutcome: ambiguous_needs_more_evidence\nComment count: 1\nLinked commit count: 1\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 64\nLabels: {'api_integration_gap': 1}\nPolarities: {'bad': 1}\nChanged file labels: {'source_or_other': 27, 'schema_or_data': 2, 'docs_or_claims': 2, 'dependency_or_build': 1, 'test_or_ci': 22, 'api_or_backend': 10}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-4bc9f87aad69e63f\",\n    \"kind\": \"pull_request_body\",\n    \"label\": \"api_integration_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/timogilvie/wavemill/pull/749\",\n    \"text\": \"GitHub feedback: api_integration_gap\\nPolarity: bad\\nKind: pull_request_body\\nRepo: timogilvie/wavemill\\nAuthor: timogilvie (User)\\nURL: https://github.com/timogilvie/wavemill/pull/749\\nTitle: Merge main into auto/integration\\nBody:\\nReconciles origin/main into auto/integration so Wavemill promote can proceed after branch divergence.\\\\n\\\\nVerification:\\\\n- node --test shared/lib/model-registry.test.ts shared/lib/eval-corpus-migrator.test.ts shared/lib/ready-stage.test.ts shared/lib/ready-watchdog.test.ts\\\\n- bash tests/check-shell.sh\"\n  }\n]\nChanged files:\n[\n  {\n    \"id\": \"github-pr-file-file-ac8c957599194586\",\n    \"filename\": \".wavemill-config.json\",\n    \"label\": \"source_or_other\",\n    \"status\": \"modified\",\n    \"additions\": 47,\n    \"deletions\": 10,\n    \"changes\": 57,\n    \"blob_url\": \"https://github.com/timogilvie/wavemill/blob/6f647f485878bd46aec8445668daa585eaa64dde/.wavemill-config.json\"\n  },\n  {\n    \"id\": \"github-pr-file-file-72b41b5ebf2e910f\",\n    \"filename\": \"docs/codex-migration-plan.md\",\n    \"label\": \"schema_or_data\",\n    \"status\": \"added\",\n    \"additions\": 164,\n    \"deletions\": 0,\n    \"changes\": 164,\n    \"blob_url\": \"https://github.com/timogilvie/wavemill/blob/6f647f485878bd46aec8445668daa585eaa64dde/docs%2Fcodex-migration-plan.md\"\n  },\n  {\n    \"id\": \"github-pr-file-file-c42535b3110873ca\",\n    \"filename\": \"docs/config-files.md\",\n    \"label\": \"docs_or_claims\",\n    \"status\": \"modified\",\n    \"additions\": 89,\n    \"deletions\": 0,\n    \"changes\": 89,\n    \"blob_url\": \"https://github.com/timogilvie/wavemill/blob/6f647f485878bd46aec8445668daa585eaa64dde/docs%2Fconfig-files.md\"\n  },\n  {\n    \"id\": \"github-pr-file-file-0b297acacfcb968a\",\n    \"filename\": \"package.json\",\n    \"label\": \"dependency_or_build\",\n    \"status\": \"modified\",\n    \"additions\": 1,\n    \"deletions\": 1,\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/timogilvie/wavemill", "source_id": "comment-chain-pattern-assumption_checks-02136dc60f59165d", "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": "timogilvie/wavemill", "source_dataset": "comment_chain_patterns/assumption_checks", "training_usage": "weak_supervision"}}}, {"ruleId": "foundry_assumption_check", "level": "warning", "message": {"text": "Foundry mined assumption checks: timogilvie/wavemill"}, "properties": {"repobilityId": 382896, "scanner": "foundry_dataset", "fingerprint": "3bf08c569c3134589d614ad759a09ee3c5ad5784a184285f16c9973c9842b8cd", "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": "timogilvie/wavemill#748", "human_labels": ["api_integration_gap", "api_or_backend", "source_or_other", "test_or_ci"], "issue_number": "748", "thread_label": "thread_has_human_issue_and_fix_context", "outcome_label": "ambiguous_needs_more_evidence", "source_backed": true, "max_confidence": 0.65, "repo_full_name": "timogilvie/wavemill", "training_usage": "weak_supervision", "confidence_tier": "weak_supervision", "source_chain_id": "evidence-chain-issue_chain-2d15be8dd8397379", "helicopter_views": {"graphs": 2, "schemas": 2}, "artifact_families": {"docs": 1, "schemas": 1}, "source_chain_kind": "issue_chain", "changed_file_count": 7, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {"test_or_ci": 3, "api_or_backend": 3, "source_or_other": 1}, "linked_commit_count": 2, "helicopter_view_count": 4, "source_artifact_count": 2, "classification_reasons": ["source_graph_has_real_artifacts", "source_graph_has_verification_artifacts", "repo_has_isolated_helicopter_views", "link_quality_weak_supervision", "high_risk_human_feedback_label"], "linked_ci_commit_count": 0, "verification_artifact_count": 1, "design_schema_api_artifact_count": 1}, "text": "Comment chain pattern product: assumption_checks\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#748\nOutcome: ambiguous_needs_more_evidence\nThread label: thread_has_human_issue_and_fix_context\nSource graph label: source_backed_multi_signal_graph\nReasons: source_graph_has_real_artifacts, source_graph_has_verification_artifacts, repo_has_isolated_helicopter_views, link_quality_weak_supervision, high_risk_human_feedback_label\nChain evidence:\nIssue/PR evidence chain: timogilvie/wavemill#748\nRepo: timogilvie/wavemill\nThread label: thread_has_human_issue_and_fix_context\nOutcome: ambiguous_needs_more_evidence\nComment count: 1\nLinked commit count: 2\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 7\nLabels: {'api_integration_gap': 1}\nPolarities: {'bad': 1}\nChanged file labels: {'source_or_other': 1, 'test_or_ci': 3, 'api_or_backend': 3}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-d72912dd98a14c14\",\n    \"kind\": \"pull_request_body\",\n    \"label\": \"api_integration_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/timogilvie/wavemill/pull/748\",\n    \"text\": \"GitHub feedback: api_integration_gap\\nPolarity: bad\\nKind: pull_request_body\\nRepo: timogilvie/wavemill\\nAuthor: timogilvie (User)\\nURL: https://github.com/timogilvie/wavemill/pull/748\\nTitle: HOK-2219_c: Extend Hokusai audit with v2 scenarios and conformance checks\\nBody:\\n## Summary\\n\\n- Extend the Hokusai router audit so it can report against the v2 composite benchmark: scenario-level shares (production_pool, challenger_present, dominant_model_removed, low_budget, sparse_cell), candidate-pool evidence coverage by role/task/domain/complexity, and a v2 conformance summary.\\n- Group audit output by the normalized Model 30 request fields (`request.taskType`, `request.complexity`, `request.domain`) in addition to the explicit `descriptor.*` fields, so consumers can see when routed fields differ from descriptor signals.\\n- Hard-fail when current candidates have zero corpus evidence and warn when evidence is below the configured threshold.\\n- Default the CLI to `--benchmark-version v2`; pass `--benchmark-version v1` to fall back to the original report.\\n\\n## Changes\\n\\n- `shared/lib/hokusai-router-audit.ts` \u2014 v2 scenario taxonomy (`V2_SCENARIOS`), `applyScenarioContext` with concrete `challenger_presen\"\n  }\n]\nChanged files:\n[\n  {\n    \"id\": \"github-pr-file-file-5cb2852766db723d\",\n    \"filename\": \"shared/lib/challenge-scheduler.ts\",\n    \"label\": \"source_or_other\",\n    \"status\": \"modified\",\n    \"additions\": 11,\n    \"deletions\": 0,\n    \"changes\": 11,\n    \"blob_url\": \"https://github.com/timogilvie/wavemill/blob/a0e2104bf5ef763afb2814d6ee6fb3b907ba7239/shared%2Flib%2Fchallenge-scheduler.ts\"\n  },\n  {\n    \"id\": \"github-pr-file-file-e3b8e32fd2465f04\",\n    \"filename\": \"shared/lib/hokusai-router-audit.test.ts\",\n    \"label\": \"test_or_ci\",\n    \"status\": \"added\",\n    \"additions\": 409,\n    \"deletions\": 0,\n    \"changes\": 409,\n    \"blob_url\": \"https://git\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/timogilvie/wavemill", "source_id": "comment-chain-pattern-assumption_checks-938ef1ae6e1a5d45", "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": "timogilvie/wavemill", "source_dataset": "comment_chain_patterns/assumption_checks", "training_usage": "weak_supervision"}}}, {"ruleId": "foundry_assumption_check", "level": "warning", "message": {"text": "Foundry mined assumption checks: timogilvie/wavemill"}, "properties": {"repobilityId": 382895, "scanner": "foundry_dataset", "fingerprint": "04d35b55c3331d9a0fd55ba4b2bb727f31e21e0f360ae481a682cad4824354a7", "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": "timogilvie/wavemill#747", "human_labels": ["dependency_or_build", "docs_or_claims", "source_or_other", "test_ci_gap", "test_or_ci"], "issue_number": "747", "thread_label": "thread_has_human_issue_and_fix_context", "outcome_label": "ambiguous_needs_more_evidence", "source_backed": true, "max_confidence": 0.795, "repo_full_name": "timogilvie/wavemill", "training_usage": "weak_supervision", "confidence_tier": "weak_supervision", "source_chain_id": "evidence-chain-issue_chain-681f3762646eb9c1", "helicopter_views": {"graphs": 2, "schemas": 2}, "artifact_families": {"docs": 1, "schemas": 1}, "source_chain_kind": "issue_chain", "changed_file_count": 6, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {"test_or_ci": 1, "docs_or_claims": 2, "source_or_other": 2, "dependency_or_build": 1}, "linked_commit_count": 3, "helicopter_view_count": 4, "source_artifact_count": 2, "classification_reasons": ["source_graph_has_real_artifacts", "source_graph_has_verification_artifacts", "repo_has_isolated_helicopter_views", "link_quality_weak_supervision", "high_risk_human_feedback_label"], "linked_ci_commit_count": 0, "verification_artifact_count": 1, "design_schema_api_artifact_count": 1}, "text": "Comment chain pattern product: assumption_checks\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#747\nOutcome: ambiguous_needs_more_evidence\nThread label: thread_has_human_issue_and_fix_context\nSource graph label: source_backed_multi_signal_graph\nReasons: source_graph_has_real_artifacts, source_graph_has_verification_artifacts, repo_has_isolated_helicopter_views, link_quality_weak_supervision, high_risk_human_feedback_label\nChain evidence:\nIssue/PR evidence chain: timogilvie/wavemill#747\nRepo: timogilvie/wavemill\nThread label: thread_has_human_issue_and_fix_context\nOutcome: ambiguous_needs_more_evidence\nComment count: 1\nLinked commit count: 3\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 6\nLabels: {'test_ci_gap': 1}\nPolarities: {'bad': 1}\nChanged file labels: {'docs_or_claims': 2, 'dependency_or_build': 1, 'test_or_ci': 1, 'source_or_other': 2}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-0ca9b01700c15711\",\n    \"kind\": \"pull_request_body\",\n    \"label\": \"test_ci_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/timogilvie/wavemill/pull/747\",\n    \"text\": \"GitHub feedback: test_ci_gap\\nPolarity: bad\\nKind: pull_request_body\\nRepo: timogilvie/wavemill\\nAuthor: timogilvie (User)\\nURL: https://github.com/timogilvie/wavemill/pull/747\\nTitle: HOK-2219: Extend Hokusai audit for v2 scenarios and conformance checks\\nBody:\\n## Summary\\n\\n- Adds a comprehensive `hokusai-audit` module (`shared/lib/hokusai-audit.ts`) that reports candidate-pool coverage by role/task/domain/complexity, groups output by Model 30 request fields vs descriptor fields, emits per-scenario shares (production, challenger-present, dominant-model-removed, low-budget, sparse-cell), and produces a conformance summary against the Hokusai v2 schema.\\n- Wires the new audit logic into `hokusai-manage.ts` via an `audit` subcommand with configurable thresholds (`--coverage-threshold`, `--max-invalid-rate`, `--threshold-mode`, `--low-budget-threshold`, `--sparse-cell-min-evidence`).\\n- Hard-fails or warns when candidate-pool evidence coverage falls below the configured threshold, and surfaces zero-evidence current candidates explicitly in the output.\\n- Fixes the v2 conformance checker to treat `null` scenario fields the same as absent ones (previously a JSON-serialized `null` falsely failed co\"\n  }\n]\nChanged files:\n[\n  {\n    \"id\": \"github-pr-file-file-8f8c622159deae41\",\n    \"filename\": \"docs/hokusai-model-spec.md\",\n    \"label\": \"docs_or_claims\",\n    \"status\": \"modified\",\n    \"additions\": 2,\n    \"deletions\": 2,\n    \"changes\": 4,\n    \"blob_url\": \"https://github.com/timogilvie/wavemill/blob/bf86ad54741070b8921e56c36bb9d62ba58d39d6/docs%2Fhokusai-model-spec.md\"\n  },\n  {\n    \"id\": \"github-pr-file-file-087a347873e07781\",\n    \"filename\": \"docs/routing-and-hokusai.md\",\n    \"label\": \"docs_or_claims\",\n    \"status\": \"modified\",\n    \"additions\": 15,\n    \"deletions\": 0,\n    \"changes\": 15,\n    \"blob_url\": \"https://github.com/timogilvie/w\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/timogilvie/wavemill", "source_id": "comment-chain-pattern-assumption_checks-0fa950b7bbf4b4d3", "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": "timogilvie/wavemill", "source_dataset": "comment_chain_patterns/assumption_checks", "training_usage": "weak_supervision"}}}, {"ruleId": "foundry_assumption_check", "level": "warning", "message": {"text": "Foundry mined assumption checks: timogilvie/wavemill"}, "properties": {"repobilityId": 382894, "scanner": "foundry_dataset", "fingerprint": "e6bfd3c18b20cd0c63255faec832c9be83cb2f675635d70bf7db1c70084e6877", "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": "timogilvie/wavemill#746", "human_labels": ["security_auth_secret", "source_or_other", "test_or_ci"], "issue_number": "746", "thread_label": "thread_has_human_issue_and_fix_context", "outcome_label": "ambiguous_needs_more_evidence", "source_backed": true, "max_confidence": 0.756, "repo_full_name": "timogilvie/wavemill", "training_usage": "weak_supervision", "confidence_tier": "weak_supervision", "source_chain_id": "evidence-chain-issue_chain-5dcf4878f0ab8fff", "helicopter_views": {"graphs": 2, "schemas": 2}, "artifact_families": {"docs": 1, "schemas": 1}, "source_chain_kind": "issue_chain", "changed_file_count": 2, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {"test_or_ci": 1, "source_or_other": 1}, "linked_commit_count": 1, "helicopter_view_count": 4, "source_artifact_count": 2, "classification_reasons": ["source_graph_has_real_artifacts", "source_graph_has_verification_artifacts", "repo_has_isolated_helicopter_views", "link_quality_weak_supervision", "high_risk_human_feedback_label"], "linked_ci_commit_count": 0, "verification_artifact_count": 1, "design_schema_api_artifact_count": 1}, "text": "Comment chain pattern product: assumption_checks\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#746\nOutcome: ambiguous_needs_more_evidence\nThread label: thread_has_human_issue_and_fix_context\nSource graph label: source_backed_multi_signal_graph\nReasons: source_graph_has_real_artifacts, source_graph_has_verification_artifacts, repo_has_isolated_helicopter_views, link_quality_weak_supervision, high_risk_human_feedback_label\nChain evidence:\nIssue/PR evidence chain: timogilvie/wavemill#746\nRepo: timogilvie/wavemill\nThread label: thread_has_human_issue_and_fix_context\nOutcome: ambiguous_needs_more_evidence\nComment count: 1\nLinked commit count: 1\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 2\nLabels: {'security_auth_secret': 1}\nPolarities: {'bad': 1}\nChanged file labels: {'test_or_ci': 1, 'source_or_other': 1}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-6c4035a9465d8590\",\n    \"kind\": \"pull_request_body\",\n    \"label\": \"security_auth_secret\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/timogilvie/wavemill/pull/746\",\n    \"text\": \"GitHub feedback: security_auth_secret\\nPolarity: bad\\nKind: pull_request_body\\nRepo: timogilvie/wavemill\\nAuthor: timogilvie (User)\\nURL: https://github.com/timogilvie/wavemill/pull/746\\nTitle: HOK-2236: Handle retryable non-quota LLM fallbacks\\nBody:\\n## Summary\\n\\n- Fixed the LLM CLI fallback ladder to advance on retryable non-quota errors (transient, timeout, 5xx) instead of aborting immediately\\n- Added `retryable` dimension to error classification to distinguish fatal errors (auth, malformed request) from recoverable ones\\n- Fatal errors still fail fast; recoverable errors advance through the ladder before surfacing a combined error\\n- Updated fallback event logging to distinguish quota vs non-quota advancement\\n\\n## Changes\\n\\n- **shared/lib/llm-cli.ts**\\n  - Added `retryable: boolean` field to `ClassifiedLLMError` interface\\n  - Updated error classification to mark different error kinds as retryable or fatal\\n  - Modified fallback loop to check `!classified.retryable` instead of `classified.kind !== 'quota'`\\n  - Only call `markExhausted()` and `onQuotaFallback()` for actual quota errors\\n  - Added combined error message when all candidates fail with mixed non-quota errors\\n  - Updated fallback lo\"\n  }\n]\nChanged files:\n[\n  {\n    \"id\": \"github-pr-file-file-7d0aeaebe3e23c46\",\n    \"filename\": \"shared/lib/llm-cli.test.ts\",\n    \"label\": \"test_or_ci\",\n    \"status\": \"modified\",\n    \"additions\": 114,\n    \"deletions\": 4,\n    \"changes\": 118,\n    \"blob_url\": \"https://github.com/timogilvie/wavemill/blob/9fc46bde632f47471dcb3a250872cfa541fd5f0e/shared%2Flib%2Fllm-cli.test.ts\"\n  },\n  {\n    \"id\": \"github-pr-file-file-07810890743a7792\",\n    \"filename\": \"shared/lib/llm-cli.ts\",\n    \"label\": \"source_or_other\",\n    \"status\": \"modified\",\n    \"additions\": 37,\n    \"deletions\": 21,\n    \"changes\": 58,\n    \"blob_url\": \"https://github.com/timogilvie/wavemill/blob/9fc46bde\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/timogilvie/wavemill", "source_id": "comment-chain-pattern-assumption_checks-04c69c6f3ec1b718", "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": "timogilvie/wavemill", "source_dataset": "comment_chain_patterns/assumption_checks", "training_usage": "weak_supervision"}}}, {"ruleId": "foundry_assumption_check", "level": "warning", "message": {"text": "Foundry mined assumption checks: timogilvie/wavemill"}, "properties": {"repobilityId": 382893, "scanner": "foundry_dataset", "fingerprint": "29653b03824272819e2bbe7785058a4f7c73dc5140f0c1e452dbb3f882ed841f", "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": "timogilvie/wavemill#744", "human_labels": ["agent_instruction_gap", "source_or_other", "test_or_ci"], "issue_number": "744", "thread_label": "thread_has_human_issue_and_fix_context", "outcome_label": "ambiguous_needs_more_evidence", "source_backed": true, "max_confidence": 0.725, "repo_full_name": "timogilvie/wavemill", "training_usage": "weak_supervision", "confidence_tier": "weak_supervision", "source_chain_id": "evidence-chain-issue_chain-b4ce1b6e41a7c855", "helicopter_views": {"graphs": 2, "schemas": 2}, "artifact_families": {"docs": 1, "schemas": 1}, "source_chain_kind": "issue_chain", "changed_file_count": 7, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {"test_or_ci": 2, "source_or_other": 5}, "linked_commit_count": 1, "helicopter_view_count": 4, "source_artifact_count": 2, "classification_reasons": ["source_graph_has_real_artifacts", "source_graph_has_verification_artifacts", "repo_has_isolated_helicopter_views", "link_quality_weak_supervision"], "linked_ci_commit_count": 0, "verification_artifact_count": 1, "design_schema_api_artifact_count": 1}, "text": "Comment chain pattern product: assumption_checks\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#744\nOutcome: ambiguous_needs_more_evidence\nThread label: thread_has_human_issue_and_fix_context\nSource graph label: source_backed_multi_signal_graph\nReasons: source_graph_has_real_artifacts, source_graph_has_verification_artifacts, repo_has_isolated_helicopter_views, link_quality_weak_supervision\nChain evidence:\nIssue/PR evidence chain: timogilvie/wavemill#744\nRepo: timogilvie/wavemill\nThread label: thread_has_human_issue_and_fix_context\nOutcome: ambiguous_needs_more_evidence\nComment count: 1\nLinked commit count: 1\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 7\nLabels: {'agent_instruction_gap': 1}\nPolarities: {'bad': 1}\nChanged file labels: {'source_or_other': 5, 'test_or_ci': 2}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-a09e37d2a07676a2\",\n    \"kind\": \"pull_request_body\",\n    \"label\": \"agent_instruction_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/timogilvie/wavemill/pull/744\",\n    \"text\": \"GitHub feedback: agent_instruction_gap\\nPolarity: bad\\nKind: pull_request_body\\nRepo: timogilvie/wavemill\\nAuthor: timogilvie (User)\\nURL: https://github.com/timogilvie/wavemill/pull/744\\nTitle: Enable model diversity defaults\\nBody:\\n## Summary\\n- bump config version to 1.4.1 and make new installs/config sync enable model-diversity defaults\\n- enable challenge recommendation/stage weighting, router exploration, priors/UCB, recency boost, and coverage targets by default\\n- prioritize new-model and low-data-stage challenge recommendations over low-confidence so exploration recommendations use the higher recommendation rate\\n- make the config upgrade prompt fall back to the canonical config version if the TS checker cannot emit JSON\\n\\n## Verification\\n- node --test shared/lib/challenge-scheduler.test.ts shared/lib/config-sync.test.ts tools/check-config-version.test.ts\\n- bash tests/config-loading.test.sh\\n- bash tests/config-version-prompt.test.sh\\n- npm run typecheck\\n- checked five local Hokusai repo configs report current version 1.4.1 after local updates\\n\\nNote: local Hokusai repo config file updates were applied in those repos and are not part of this Wavemill PR.\"\n  }\n]\nChanged files:\n[\n  {\n    \"id\": \"github-pr-file-file-b78635eb3e570451\",\n    \"filename\": \".wavemill-config.json\",\n    \"label\": \"source_or_other\",\n    \"status\": \"modified\",\n    \"additions\": 31,\n    \"deletions\": 1,\n    \"changes\": 32,\n    \"blob_url\": \"https://github.com/timogilvie/wavemill/blob/eac8a1c5fa22302ea2d59d9cfaba122a990bf339/.wavemill-config.json\"\n  },\n  {\n    \"id\": \"github-pr-file-file-fa34544ec133d2b7\",\n    \"filename\": \"shared/lib/challenge-scheduler.test.ts\",\n    \"label\": \"test_or_ci\",\n    \"status\": \"modified\",\n    \"additions\": 2,\n    \"deletions\": 2,\n    \"changes\": 4,\n    \"blob_url\": \"https://github.com/timogilvie/wavemill/blob/eac8a1c5fa22302ea2d59d9cfaba122a990bf339/shared%2Flib%2Fchallenge-scheduler.\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/timogilvie/wavemill", "source_id": "comment-chain-pattern-assumption_checks-5c0d26d4011280e9", "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": "timogilvie/wavemill", "source_dataset": "comment_chain_patterns/assumption_checks", "training_usage": "weak_supervision"}}}, {"ruleId": "foundry_assumption_check", "level": "warning", "message": {"text": "Foundry mined assumption checks: timogilvie/wavemill"}, "properties": {"repobilityId": 382892, "scanner": "foundry_dataset", "fingerprint": "e5d18c103ac651f9f6a275d1e4654601f60cb7b0107eb9000c02fb04ca10c530", "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": "timogilvie/wavemill#743", "human_labels": ["agent_instruction_gap", "source_or_other", "test_or_ci"], "issue_number": "743", "thread_label": "thread_has_human_issue_and_fix_context", "outcome_label": "claimed_resolved_unverified", "source_backed": true, "max_confidence": 0.877, "repo_full_name": "timogilvie/wavemill", "training_usage": "gold_candidate", "confidence_tier": "high_confidence", "source_chain_id": "evidence-chain-issue_chain-5d3871675ce3cdcc", "helicopter_views": {"graphs": 2, "schemas": 2}, "artifact_families": {"docs": 1, "schemas": 1}, "source_chain_kind": "issue_chain", "changed_file_count": 3, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {"test_or_ci": 1, "source_or_other": 2}, "linked_commit_count": 1, "helicopter_view_count": 4, "source_artifact_count": 2, "classification_reasons": ["source_graph_has_real_artifacts", "source_graph_has_verification_artifacts", "repo_has_isolated_helicopter_views", "link_quality_high_confidence"], "linked_ci_commit_count": 0, "verification_artifact_count": 1, "design_schema_api_artifact_count": 1}, "text": "Comment chain pattern product: assumption_checks\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#743\nOutcome: claimed_resolved_unverified\nThread label: thread_has_human_issue_and_fix_context\nSource graph label: source_backed_multi_signal_graph\nReasons: source_graph_has_real_artifacts, source_graph_has_verification_artifacts, repo_has_isolated_helicopter_views, link_quality_high_confidence\nChain evidence:\nIssue/PR evidence chain: timogilvie/wavemill#743\nRepo: timogilvie/wavemill\nThread label: thread_has_human_issue_and_fix_context\nOutcome: claimed_resolved_unverified\nComment count: 1\nLinked commit count: 1\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 3\nLabels: {'agent_instruction_gap': 1}\nPolarities: {'bad': 1}\nChanged file labels: {'test_or_ci': 1, 'source_or_other': 2}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-d24ca8d2c5504d13\",\n    \"kind\": \"pull_request_body\",\n    \"label\": \"agent_instruction_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/timogilvie/wavemill/pull/743\",\n    \"text\": \"GitHub feedback: agent_instruction_gap\\nPolarity: bad\\nKind: pull_request_body\\nRepo: timogilvie/wavemill\\nAuthor: timogilvie (User)\\nURL: https://github.com/timogilvie/wavemill/pull/743\\nTitle: Make ready-watchdog merge-queue-aware to stop parked-PR churn\\nBody:\\n## Problem\\n\\nUnder load (many PRs in the merge/ready queue), PRs that had already passed ready checks churned: every ~10 minutes the dashboard logged `ready watchdog: <issue> stuck (auto-recovered) \u2014 Local ready state has been idle for 10m while PR #X is clean and green`, re-running full ready validation on a PR that was simply waiting its turn to merge.\\n\\n## Root cause \u2014 watchdog vs. merge-lane\\n\\nThe monitor's main-advance logic is fine: when main advances and a PR isn't the selected merge candidate, it's cheaply parked as `queueState: \\\"ready-stale\\\"` and waits. **But `classifyReadyTask` in `ready-watchdog.ts` never looked at `queueState`** (even though it's in the snapshot). So a parked, clean+green PR idle \u2265 the 10m threshold was classified `stuck` and **auto-recovered** \u2014 which resets the ready clock and re-arms the same check every ~threshold minutes. The watchdog was actively undoing the merge-queue's cheap parking.\\n\\n**Evidence\"\n  }\n]\nChanged files:\n[\n  {\n    \"id\": \"github-pr-file-file-ca596974e704736c\",\n    \"filename\": \"shared/lib/ready-watchdog.test.ts\",\n    \"label\": \"test_or_ci\",\n    \"status\": \"modified\",\n    \"additions\": 45,\n    \"deletions\": 0,\n    \"changes\": 45,\n    \"blob_url\": \"https://github.com/timogilvie/wavemill/blob/10855047177360c714bd58f898fbb21936563dc0/shared%2Flib%2Fready-watchdog.test.ts\"\n  },\n  {\n    \"id\": \"github-pr-file-file-2e00691c82929101\",\n    \"filename\": \"shared/lib/ready-watchdog.ts\",\n    \"label\": \"source_or_other\",\n    \"status\": \"modified\",\n    \"additions\": 33,\n    \"deletions\": 0,\n    \"changes\": 33,\n    \"blob_url\": \"https://github.com/timogilvie/wavemill/blob/10855047177360c714bd58f898fbb2\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/timogilvie/wavemill", "source_id": "comment-chain-pattern-assumption_checks-8b54b767272dd966", "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": "timogilvie/wavemill", "source_dataset": "comment_chain_patterns/assumption_checks", "training_usage": "gold_candidate"}}}, {"ruleId": "foundry_assumption_check", "level": "warning", "message": {"text": "Foundry mined assumption checks: timogilvie/wavemill"}, "properties": {"repobilityId": 382891, "scanner": "foundry_dataset", "fingerprint": "1d9a274c8e7f7602a9a3651ad397d69f51d8d8041d824d0e4d330788f7ff9f78", "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": "timogilvie/wavemill#742", "human_labels": ["agent_instruction_gap", "dependency_or_build", "source_or_other", "test_or_ci"], "issue_number": "742", "thread_label": "thread_has_human_issue_and_fix_context", "outcome_label": "claimed_resolved_unverified", "source_backed": true, "max_confidence": 0.895, "repo_full_name": "timogilvie/wavemill", "training_usage": "gold_candidate", "confidence_tier": "high_confidence", "source_chain_id": "evidence-chain-issue_chain-6933dd3d9efbbc3e", "helicopter_views": {"graphs": 2, "schemas": 2}, "artifact_families": {"docs": 1, "schemas": 1}, "source_chain_kind": "issue_chain", "changed_file_count": 5, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {"test_or_ci": 1, "source_or_other": 3, "dependency_or_build": 1}, "linked_commit_count": 2, "helicopter_view_count": 4, "source_artifact_count": 2, "classification_reasons": ["source_graph_has_real_artifacts", "source_graph_has_verification_artifacts", "repo_has_isolated_helicopter_views", "link_quality_high_confidence"], "linked_ci_commit_count": 0, "verification_artifact_count": 1, "design_schema_api_artifact_count": 1}, "text": "Comment chain pattern product: assumption_checks\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#742\nOutcome: claimed_resolved_unverified\nThread label: thread_has_human_issue_and_fix_context\nSource graph label: source_backed_multi_signal_graph\nReasons: source_graph_has_real_artifacts, source_graph_has_verification_artifacts, repo_has_isolated_helicopter_views, link_quality_high_confidence\nChain evidence:\nIssue/PR evidence chain: timogilvie/wavemill#742\nRepo: timogilvie/wavemill\nThread label: thread_has_human_issue_and_fix_context\nOutcome: claimed_resolved_unverified\nComment count: 1\nLinked commit count: 2\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 5\nLabels: {'agent_instruction_gap': 1}\nPolarities: {'bad': 1}\nChanged file labels: {'dependency_or_build': 1, 'test_or_ci': 1, 'source_or_other': 3}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-b6a27f0f2b3d9238\",\n    \"kind\": \"pull_request_body\",\n    \"label\": \"agent_instruction_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/timogilvie/wavemill/pull/742\",\n    \"text\": \"GitHub feedback: agent_instruction_gap\\nPolarity: bad\\nKind: pull_request_body\\nRepo: timogilvie/wavemill\\nAuthor: timogilvie (User)\\nURL: https://github.com/timogilvie/wavemill/pull/742\\nTitle: Fix challenger self-repairing as its own primary, stalling challenges before eval\\nBody:\\n## Problem\\n\\nA challenge pair stalls **before evaluation**: both sides build PRs and pass eval, but the comparison fails with `Missing eval records for challenge pair <id>` and the primary PR loops ready-checks forever (auto-merge is gated on the never-completing comparison). Observed to happen more under load \u2014 multiple challenge sessions / many PRs in the merge+ready queue.\\n\\n## Root cause\\n\\nThe post-expansion **\\\"Challenge participants refreshed\\\"** block in `monitor_issue_state` (`wavemill-mill.sh`) ran in the coding-launch path for *every* challenge task, including the **challenger**. When the challenger ran it, it called `resolve-challenge-task --issue <challenger_key>` and then `save_task_state <challenger_key> \u2026 <challenger_key> primary \u2026`, overwriting its own correct `challengePairId=<primary>`/`challengeRole=challenger` with `challengePairId=<challenger_key>`/`challengeRole=primary`.\\n\\nCascade: eval reads \"\n  }\n]\nChanged files:\n[\n  {\n    \"id\": \"github-pr-file-file-5949be5d8a1d584b\",\n    \"filename\": \"package.json\",\n    \"label\": \"dependency_or_build\",\n    \"status\": \"modified\",\n    \"additions\": 1,\n    \"deletions\": 1,\n    \"changes\": 2,\n    \"blob_url\": \"https://github.com/timogilvie/wavemill/blob/2b67c7446d1ea83dd53543525b78aa73a57a3794/package.json\"\n  },\n  {\n    \"id\": \"github-pr-file-file-7aa7c30359b0e305\",\n    \"filename\": \"shared/lib/challenge-pairing-repair.test.ts\",\n    \"label\": \"test_or_ci\",\n    \"status\": \"added\",\n    \"additions\": 131,\n    \"deletions\": 0,\n    \"changes\": 131,\n    \"blob_url\": \"https://github.com/timogilvie/wavemill/blob/2b67c7446d1ea83dd53543525b78aa73a5\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/timogilvie/wavemill", "source_id": "comment-chain-pattern-assumption_checks-93ffecbb29abd3b8", "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": "timogilvie/wavemill", "source_dataset": "comment_chain_patterns/assumption_checks", "training_usage": "gold_candidate"}}}, {"ruleId": "foundry_assumption_check", "level": "warning", "message": {"text": "Foundry mined assumption checks: timogilvie/wavemill"}, "properties": {"repobilityId": 382890, "scanner": "foundry_dataset", "fingerprint": "83a8ee3d993c041ff44dca70ef72e6c699140f9b28339498e7f7c4542845e132", "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": "timogilvie/wavemill#740", "human_labels": ["source_or_other", "test_ci_gap", "test_or_ci"], "issue_number": "740", "thread_label": "thread_has_human_issue_and_fix_context", "outcome_label": "ambiguous_needs_more_evidence", "source_backed": true, "max_confidence": 0.65, "repo_full_name": "timogilvie/wavemill", "training_usage": "weak_supervision", "confidence_tier": "weak_supervision", "source_chain_id": "evidence-chain-issue_chain-d0772366262e60f2", "helicopter_views": {"graphs": 2, "schemas": 2}, "artifact_families": {"docs": 1, "schemas": 1}, "source_chain_kind": "issue_chain", "changed_file_count": 2, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {"test_or_ci": 1, "source_or_other": 1}, "linked_commit_count": 4, "helicopter_view_count": 4, "source_artifact_count": 2, "classification_reasons": ["source_graph_has_real_artifacts", "source_graph_has_verification_artifacts", "repo_has_isolated_helicopter_views", "link_quality_weak_supervision", "high_risk_human_feedback_label"], "linked_ci_commit_count": 0, "verification_artifact_count": 1, "design_schema_api_artifact_count": 1}, "text": "Comment chain pattern product: assumption_checks\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#740\nOutcome: ambiguous_needs_more_evidence\nThread label: thread_has_human_issue_and_fix_context\nSource graph label: source_backed_multi_signal_graph\nReasons: source_graph_has_real_artifacts, source_graph_has_verification_artifacts, repo_has_isolated_helicopter_views, link_quality_weak_supervision, high_risk_human_feedback_label\nChain evidence:\nIssue/PR evidence chain: timogilvie/wavemill#740\nRepo: timogilvie/wavemill\nThread label: thread_has_human_issue_and_fix_context\nOutcome: ambiguous_needs_more_evidence\nComment count: 1\nLinked commit count: 4\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 2\nLabels: {'test_ci_gap': 1}\nPolarities: {'bad': 1}\nChanged file labels: {'test_or_ci': 1, 'source_or_other': 1}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-247610962c69767c\",\n    \"kind\": \"pull_request_body\",\n    \"label\": \"test_ci_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/timogilvie/wavemill/pull/740\",\n    \"text\": \"GitHub feedback: test_ci_gap\\nPolarity: bad\\nKind: pull_request_body\\nRepo: timogilvie/wavemill\\nAuthor: timogilvie (User)\\nURL: https://github.com/timogilvie/wavemill/pull/740\\nTitle: Filter disabled models from llm-cli fallback ladder\\nBody:\\n## Problem\\n\\nIssue expansion was failing at the Claude CLI step (twice, with retries) and falling back to manually-assembled task packets during mill mode (observed on HOK-2218, HOK-2212/2175 on 2026-06-15). The recovery logs showed `claude CLI exited with code 1` with **empty stderr**.\\n\\nRoot cause: the expansion path uses `taskType: 'planning'`, which triggers the fallback ladder in `llm-cli.ts`. The planning ladder is `[claude-fable-5, gpt-5.5, claude-opus-4-8, \u2026]` \u2014 **fable-first**. `resolveCandidateModels` filtered candidates by provider-compatibility and quota-exhaustion, but **never applied the disabled-models lever**, so `claude-fable-5` survived as the first candidate.\\n\\n`claude-fable-5` was disabled in #725 (access restricted upstream) \u2014 the `claude` CLI exits code 1 with empty stderr for it. Because that is a **non-quota** error, `callLLMWithFallback` aborts the entire ladder instead of advancing to the next (working) candidate `claude-opus-\"\n  }\n]\nChanged files:\n[\n  {\n    \"id\": \"github-pr-file-file-1a6be423483b8aa1\",\n    \"filename\": \"shared/lib/llm-cli.test.ts\",\n    \"label\": \"test_or_ci\",\n    \"status\": \"modified\",\n    \"additions\": 28,\n    \"deletions\": 3,\n    \"changes\": 31,\n    \"blob_url\": \"https://github.com/timogilvie/wavemill/blob/3c84e821ec3ef71dca12c4476e7867d2c6f60c21/shared%2Flib%2Fllm-cli.test.ts\"\n  },\n  {\n    \"id\": \"github-pr-file-file-f1a28a5fd2339432\",\n    \"filename\": \"shared/lib/llm-cli.ts\",\n    \"label\": \"source_or_other\",\n    \"status\": \"modified\",\n    \"additions\": 7,\n    \"deletions\": 2,\n    \"changes\": 9,\n    \"blob_url\": \"https://github.com/timogilvie/wavemill/blob/3c84e821ec3ef71dca12c4476e7867d2c6f60c21\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/timogilvie/wavemill", "source_id": "comment-chain-pattern-assumption_checks-20e57074aea8cb7a", "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": "timogilvie/wavemill", "source_dataset": "comment_chain_patterns/assumption_checks", "training_usage": "weak_supervision"}}}, {"ruleId": "foundry_assumption_check", "level": "warning", "message": {"text": "Foundry mined assumption checks: timogilvie/wavemill"}, "properties": {"repobilityId": 382889, "scanner": "foundry_dataset", "fingerprint": "58291af687e754ce250912dea3f92cbdfc922b8a14efd2d4716112deba417868", "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": "timogilvie/wavemill#739", "human_labels": ["api_or_backend", "dependency_or_build", "schema_or_data", "source_or_other", "test_ci_gap", "test_or_ci"], "issue_number": "739", "thread_label": "thread_has_human_issue_and_fix_context", "outcome_label": "ambiguous_needs_more_evidence", "source_backed": true, "max_confidence": 0.65, "repo_full_name": "timogilvie/wavemill", "training_usage": "weak_supervision", "confidence_tier": "weak_supervision", "source_chain_id": "evidence-chain-issue_chain-6c5120433b6331f7", "helicopter_views": {"graphs": 2, "schemas": 2}, "artifact_families": {"docs": 1, "schemas": 1}, "source_chain_kind": "issue_chain", "changed_file_count": 24, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {"test_or_ci": 7, "api_or_backend": 7, "schema_or_data": 2, "source_or_other": 7, "dependency_or_build": 1}, "linked_commit_count": 5, "helicopter_view_count": 4, "source_artifact_count": 2, "classification_reasons": ["source_graph_has_real_artifacts", "source_graph_has_verification_artifacts", "repo_has_isolated_helicopter_views", "link_quality_weak_supervision", "high_risk_human_feedback_label"], "linked_ci_commit_count": 0, "verification_artifact_count": 1, "design_schema_api_artifact_count": 1}, "text": "Comment chain pattern product: assumption_checks\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#739\nOutcome: ambiguous_needs_more_evidence\nThread label: thread_has_human_issue_and_fix_context\nSource graph label: source_backed_multi_signal_graph\nReasons: source_graph_has_real_artifacts, source_graph_has_verification_artifacts, repo_has_isolated_helicopter_views, link_quality_weak_supervision, high_risk_human_feedback_label\nChain evidence:\nIssue/PR evidence chain: timogilvie/wavemill#739\nRepo: timogilvie/wavemill\nThread label: thread_has_human_issue_and_fix_context\nOutcome: ambiguous_needs_more_evidence\nComment count: 1\nLinked commit count: 5\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 24\nLabels: {'test_ci_gap': 1}\nPolarities: {'bad': 1}\nChanged file labels: {'dependency_or_build': 1, 'source_or_other': 7, 'test_or_ci': 7, 'schema_or_data': 2, 'api_or_backend': 7}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-a01f2712add4f317\",\n    \"kind\": \"pull_request_body\",\n    \"label\": \"test_ci_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/timogilvie/wavemill/pull/739\",\n    \"text\": \"GitHub feedback: test_ci_gap\\nPolarity: bad\\nKind: pull_request_body\\nRepo: timogilvie/wavemill\\nAuthor: timogilvie (User)\\nURL: https://github.com/timogilvie/wavemill/pull/739\\nTitle: HOK-2231: Support launch-priority coding models through OpenRouter\\nBody:\\n## Summary\\n\\nImplements Wavemill support for Model 30 launch-priority coding models through OpenRouter API. This enables routing tasks to low-cost challenger families (Qwen, DeepSeek, Kimi) and frontier anchors, with consistent model ID normalization and evidence collection.\\n\\n- Fetch and normalize launch-priority model catalog from OpenRouter\\n- Add OpenRouter provider support for model invocation (agent routing, environment configuration)\\n- Extend model registry and routing policies for launch-priority candidates\\n- Build Hokusai contribution row export for direct evidence and zero-evidence gap visibility\\n\\n## Changes\\n\\n**Key Files Modified:**\\n- `shared/lib/agent-adapters.sh` - Route gemini-2.5-* and gemini-2.0-* to claude-openrouter\\n- `shared/lib/openrouter-provider.ts` - OpenRouter provider configuration and model filtering\\n- `shared/lib/openrouter-catalog.ts` - Fetch and normalize model catalog from OpenRouter API\\n- `shared/lib/model-r\"\n  }\n]\nChanged files:\n[\n  {\n    \"id\": \"github-pr-file-file-c0223e26df4200a0\",\n    \"filename\": \"package.json\",\n    \"label\": \"dependency_or_build\",\n    \"status\": \"modified\",\n    \"additions\": 1,\n    \"deletions\": 1,\n    \"changes\": 2,\n    \"blob_url\": \"https://github.com/timogilvie/wavemill/blob/b6fa7fe91f074831e17c6bd96c95a37f7749108a/package.json\"\n  },\n  {\n    \"id\": \"github-pr-file-file-91fa5ed74c0fed7a\",\n    \"filename\": \"shared/lib/agent-adapters.sh\",\n    \"label\": \"source_or_other\",\n    \"status\": \"modified\",\n    \"additions\": 150,\n    \"deletions\": 0,\n    \"changes\": 150,\n    \"blob_url\": \"https://github.com/t\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/timogilvie/wavemill", "source_id": "comment-chain-pattern-assumption_checks-25c816f617807d01", "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": "timogilvie/wavemill", "source_dataset": "comment_chain_patterns/assumption_checks", "training_usage": "weak_supervision"}}}, {"ruleId": "foundry_assumption_check", "level": "warning", "message": {"text": "Foundry mined assumption checks: timogilvie/wavemill"}, "properties": {"repobilityId": 382888, "scanner": "foundry_dataset", "fingerprint": "23f8ddc6605783c3ab5162b0c6569c636a6f6b5c77d06309d5233c3c70bab9a7", "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": "timogilvie/wavemill#738", "human_labels": ["api_or_backend", "dependency_or_build", "schema_or_data", "source_or_other", "test_ci_gap", "test_or_ci"], "issue_number": "738", "thread_label": "thread_has_human_issue_and_fix_context", "outcome_label": "ambiguous_needs_more_evidence", "source_backed": true, "max_confidence": 0.65, "repo_full_name": "timogilvie/wavemill", "training_usage": "weak_supervision", "confidence_tier": "weak_supervision", "source_chain_id": "evidence-chain-issue_chain-7ccf25d3b3206654", "helicopter_views": {"graphs": 2, "schemas": 2}, "artifact_families": {"docs": 1, "schemas": 1}, "source_chain_kind": "issue_chain", "changed_file_count": 26, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {"test_or_ci": 14, "api_or_backend": 4, "schema_or_data": 1, "source_or_other": 6, "dependency_or_build": 1}, "linked_commit_count": 5, "helicopter_view_count": 4, "source_artifact_count": 2, "classification_reasons": ["source_graph_has_real_artifacts", "source_graph_has_verification_artifacts", "repo_has_isolated_helicopter_views", "link_quality_weak_supervision", "high_risk_human_feedback_label"], "linked_ci_commit_count": 0, "verification_artifact_count": 1, "design_schema_api_artifact_count": 1}, "text": "Comment chain pattern product: assumption_checks\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#738\nOutcome: ambiguous_needs_more_evidence\nThread label: thread_has_human_issue_and_fix_context\nSource graph label: source_backed_multi_signal_graph\nReasons: source_graph_has_real_artifacts, source_graph_has_verification_artifacts, repo_has_isolated_helicopter_views, link_quality_weak_supervision, high_risk_human_feedback_label\nChain evidence:\nIssue/PR evidence chain: timogilvie/wavemill#738\nRepo: timogilvie/wavemill\nThread label: thread_has_human_issue_and_fix_context\nOutcome: ambiguous_needs_more_evidence\nComment count: 1\nLinked commit count: 5\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 26\nLabels: {'test_ci_gap': 1}\nPolarities: {'bad': 1}\nChanged file labels: {'dependency_or_build': 1, 'source_or_other': 6, 'test_or_ci': 14, 'api_or_backend': 4, 'schema_or_data': 1}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-570ab437fc14f962\",\n    \"kind\": \"pull_request_body\",\n    \"label\": \"test_ci_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/timogilvie/wavemill/pull/738\",\n    \"text\": \"GitHub feedback: test_ci_gap\\nPolarity: bad\\nKind: pull_request_body\\nRepo: timogilvie/wavemill\\nAuthor: timogilvie (User)\\nURL: https://github.com/timogilvie/wavemill/pull/738\\nTitle: HOK-2231_c: Support launch-priority OpenRouter models in Wavemill\\nBody:\\n## Summary\\n\\n- **Ingested and normalized the launch-priority model catalog from OpenRouter**, with support for frontier anchors (GPT-5, Claude) and low-cost challengers (Qwen, DeepSeek, Kimi)\\n- **Implemented OpenRouter provider runtime support** for invoking launch-priority models with stage-specific routing and configurable API keys\\n- **Enhanced Hokusai contribution schema and router audit** to capture direct evidence for launch-priority models and track zero-evidence coverage gaps\\n- **Integrated launch-priority models into the candidate pool and model registry**, enabling intentional sampling and evidence collection for underexercised alternatives\\n\\n## Changes\\n\\n### Core Infrastructure\\n- **\\\\`shared/lib/openrouter-catalog.ts\\\\`** \u2014 Load and normalize launch-priority model catalog from OpenRouter API; handle model aliasing (e.g., \\\\`openai/gpt-5.4\\\\` \u2192 \\\\`gpt-5.4\\\\`)\\n- **\\\\`shared/lib/openrouter-provider.ts\\\\`** \u2014 Provider configuration and reso\"\n  }\n]\nChanged files:\n[\n  {\n    \"id\": \"github-pr-file-file-1aa2223b0f00d9e7\",\n    \"filename\": \"package.json\",\n    \"label\": \"dependency_or_build\",\n    \"status\": \"modified\",\n    \"additions\": 1,\n    \"deletions\": 1,\n    \"changes\": 2,\n    \"blob_url\": \"https://github.com/timogilvie/wavemill/blob/384d26e72d99cc335ffa88ec9adbdb16d8be5f6c/package.json\"\n  },\n  {\n    \"id\": \"github-pr-file-file-487b72cf38a990b9\",\n    \"filename\": \"shared/lib/agent-adapters.sh\",\n    \"label\": \"source_or_other\",\n    \"status\": \"modified\",\n    \"additions\": 266,\n    \"deletions\": 2,\n    \"changes\": 268,\n    \"blob_url\": \"https://github.\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/timogilvie/wavemill", "source_id": "comment-chain-pattern-assumption_checks-be470cebce78a142", "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": "timogilvie/wavemill", "source_dataset": "comment_chain_patterns/assumption_checks", "training_usage": "weak_supervision"}}}, {"ruleId": "foundry_assumption_check", "level": "warning", "message": {"text": "Foundry mined assumption checks: timogilvie/wavemill"}, "properties": {"repobilityId": 382887, "scanner": "foundry_dataset", "fingerprint": "9d6ddda194def0c4d637a5cf85a45bc218f55281290d13ba4e7715de7a65ce7e", "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": "timogilvie/wavemill#737", "human_labels": ["data_schema_persistence", "schema_or_data", "source_or_other", "test_or_ci"], "issue_number": "737", "thread_label": "thread_has_human_issue_and_fix_context", "outcome_label": "ambiguous_needs_more_evidence", "source_backed": true, "max_confidence": 0.65, "repo_full_name": "timogilvie/wavemill", "training_usage": "weak_supervision", "confidence_tier": "weak_supervision", "source_chain_id": "evidence-chain-issue_chain-c463f949f3821147", "helicopter_views": {"graphs": 2, "schemas": 2}, "artifact_families": {"docs": 1, "schemas": 1}, "source_chain_kind": "issue_chain", "changed_file_count": 6, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {"test_or_ci": 1, "schema_or_data": 1, "source_or_other": 4}, "linked_commit_count": 5, "helicopter_view_count": 4, "source_artifact_count": 2, "classification_reasons": ["source_graph_has_real_artifacts", "source_graph_has_verification_artifacts", "repo_has_isolated_helicopter_views", "link_quality_weak_supervision", "high_risk_human_feedback_label"], "linked_ci_commit_count": 0, "verification_artifact_count": 1, "design_schema_api_artifact_count": 1}, "text": "Comment chain pattern product: assumption_checks\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#737\nOutcome: ambiguous_needs_more_evidence\nThread label: thread_has_human_issue_and_fix_context\nSource graph label: source_backed_multi_signal_graph\nReasons: source_graph_has_real_artifacts, source_graph_has_verification_artifacts, repo_has_isolated_helicopter_views, link_quality_weak_supervision, high_risk_human_feedback_label\nChain evidence:\nIssue/PR evidence chain: timogilvie/wavemill#737\nRepo: timogilvie/wavemill\nThread label: thread_has_human_issue_and_fix_context\nOutcome: ambiguous_needs_more_evidence\nComment count: 1\nLinked commit count: 5\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 6\nLabels: {'data_schema_persistence': 1}\nPolarities: {'bad': 1}\nChanged file labels: {'source_or_other': 4, 'test_or_ci': 1, 'schema_or_data': 1}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-9a0513e896b436a8\",\n    \"kind\": \"pull_request_body\",\n    \"label\": \"data_schema_persistence\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/timogilvie/wavemill/pull/737\",\n    \"text\": \"GitHub feedback: data_schema_persistence\\nPolarity: bad\\nKind: pull_request_body\\nRepo: timogilvie/wavemill\\nAuthor: timogilvie (User)\\nURL: https://github.com/timogilvie/wavemill/pull/737\\nTitle: HOK-2228: Default routing/registry policy to Codex\\nBody:\\n## Summary\\n\\n- Adds Codex GPT-5.x models to the `availableModels.planner` list in `config-sync.ts` and flips `defaultModel` \u2192 `gpt-5.5` and `defaultAgent` \u2192 `codex`, so the planning layer routes to Codex by default\\n- Updates the Layer-2 validation model from hardcoded `claude-haiku-4-5-20251001` to `gpt-4.5-mini` (a Codex-compatible validation model), removing the Claude bias in the sync validator\\n- Audits `model-registry.ts` to promote Codex models as first-class entries in per-task fallback ladders; `gpt-5.3-codex` remains `disabled:true` (intentional: it is not yet in production availability)\\n- These three knobs are the canonical levers that bias agent selection; flipping them propagates through Phases 1\u20132 without per-call edits\\n\\n## Changes\\n\\n- `shared/lib/config-sync.ts` \u2014 planner model list and defaults updated to prefer Codex; Layer-2 validation model updated\\n- `shared/lib/model-registry.ts` \u2014 Codex models audited for fallback ladder \"\n  }\n]\nChanged files:\n[\n  {\n    \"id\": \"github-pr-file-file-f0a770d1451ca7c9\",\n    \"filename\": \"shared/lib/config-sync.ts\",\n    \"label\": \"source_or_other\",\n    \"status\": \"modified\",\n    \"additions\": 4,\n    \"deletions\": 4,\n    \"changes\": 8,\n    \"blob_url\": \"https://github.com/timogilvie/wavemill/blob/a36861f88cb1cf2ede6614e1f34e2365c2dc5bc0/shared%2Flib%2Fconfig-sync.ts\"\n  },\n  {\n    \"id\": \"github-pr-file-file-f7173732698e9b4b\",\n    \"filename\": \"shared/lib/config.ts\",\n    \"label\": \"source_or_other\",\n    \"status\": \"modified\",\n    \"additions\": 1,\n    \"deletions\": 1,\n    \"changes\": 2,\n    \"blob_url\": \"https://github.com/timogilvie/wavem\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/timogilvie/wavemill", "source_id": "comment-chain-pattern-assumption_checks-96baea2691e3b9a1", "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": "timogilvie/wavemill", "source_dataset": "comment_chain_patterns/assumption_checks", "training_usage": "weak_supervision"}}}, {"ruleId": "foundry_assumption_check", "level": "warning", "message": {"text": "Foundry mined assumption checks: timogilvie/wavemill"}, "properties": {"repobilityId": 382886, "scanner": "foundry_dataset", "fingerprint": "459b4979226c349b285e5176710e55d1df4ea4faa0a4b4544d58845e0e1d0d72", "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": "timogilvie/wavemill#736", "human_labels": ["api_or_backend", "dependency_or_build", "schema_or_data", "test_ci_gap", "test_or_ci"], "issue_number": "736", "thread_label": "thread_has_human_issue_and_fix_context", "outcome_label": "ambiguous_needs_more_evidence", "source_backed": true, "max_confidence": 0.65, "repo_full_name": "timogilvie/wavemill", "training_usage": "weak_supervision", "confidence_tier": "weak_supervision", "source_chain_id": "evidence-chain-issue_chain-7e93b05a3483877f", "helicopter_views": {"graphs": 2, "schemas": 2}, "artifact_families": {"docs": 1, "schemas": 1}, "source_chain_kind": "issue_chain", "changed_file_count": 8, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {"test_or_ci": 3, "api_or_backend": 2, "schema_or_data": 2, "dependency_or_build": 1}, "linked_commit_count": 5, "helicopter_view_count": 4, "source_artifact_count": 2, "classification_reasons": ["source_graph_has_real_artifacts", "source_graph_has_verification_artifacts", "repo_has_isolated_helicopter_views", "link_quality_weak_supervision", "high_risk_human_feedback_label"], "linked_ci_commit_count": 0, "verification_artifact_count": 1, "design_schema_api_artifact_count": 1}, "text": "Comment chain pattern product: assumption_checks\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#736\nOutcome: ambiguous_needs_more_evidence\nThread label: thread_has_human_issue_and_fix_context\nSource graph label: source_backed_multi_signal_graph\nReasons: source_graph_has_real_artifacts, source_graph_has_verification_artifacts, repo_has_isolated_helicopter_views, link_quality_weak_supervision, high_risk_human_feedback_label\nChain evidence:\nIssue/PR evidence chain: timogilvie/wavemill#736\nRepo: timogilvie/wavemill\nThread label: thread_has_human_issue_and_fix_context\nOutcome: ambiguous_needs_more_evidence\nComment count: 1\nLinked commit count: 5\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 8\nLabels: {'test_ci_gap': 1}\nPolarities: {'bad': 1}\nChanged file labels: {'dependency_or_build': 1, 'schema_or_data': 2, 'test_or_ci': 3, 'api_or_backend': 2}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-df809d28bd68d976\",\n    \"kind\": \"pull_request_body\",\n    \"label\": \"test_ci_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/timogilvie/wavemill/pull/736\",\n    \"text\": \"GitHub feedback: test_ci_gap\\nPolarity: bad\\nKind: pull_request_body\\nRepo: timogilvie/wavemill\\nAuthor: timogilvie (User)\\nURL: https://github.com/timogilvie/wavemill/pull/736\\nTitle: HOK-2232: Ingest and normalize OpenRouter launch-priority model catalog\\nBody:\\n## Summary\\n\\nImplements catalog sync infrastructure to fetch, normalize, and validate the OpenRouter launch-priority model list. Creates a deterministic snapshot artifact with explicit blocker detection for missing/deprecated/unavailable models.\\n\\n- Fetches OpenRouter model metadata from https://openrouter.ai/api/v1/models\\n- Normalizes provider ID, Wavemill serving alias, family, context length, pricing, role eligibility, status, and priority tier\\n- Detects and reports missing/deprecated/unavailable models as explicit blockers instead of silently dropping them\\n- Persists deterministic snapshot for audit trail and reference\\n\\n## Changes\\n\\n**New modules:**\\n- `shared/lib/openrouter-catalog.ts` \u2014 Catalog normalization and blocker detection logic\\n- `shared/lib/hokusai-contribution-schema.ts:*V2` \u2014 TechnicalTaskRouterContributionRowV2 schema, builder, queue, and validation\\n- `tools/sync-openrouter-catalog.ts` \u2014 CLI tool to fetch and sync c\"\n  }\n]\nChanged files:\n[\n  {\n    \"id\": \"github-pr-file-file-bd2cab7f3186737c\",\n    \"filename\": \"package.json\",\n    \"label\": \"dependency_or_build\",\n    \"status\": \"modified\",\n    \"additions\": 1,\n    \"deletions\": 1,\n    \"changes\": 2,\n    \"blob_url\": \"https://github.com/timogilvie/wavemill/blob/907f26a02d0b18779115ed9724580b69fd253205/package.json\"\n  },\n  {\n    \"id\": \"github-pr-file-file-2c52ae6f9876d564\",\n    \"filename\": \"shared/lib/hokusai-contribution-schema.json\",\n    \"label\": \"schema_or_data\",\n    \"status\": \"modified\",\n    \"additions\": 2,\n    \"deletions\": 2,\n    \"changes\": 4,\n    \"blob_url\": \"https://github.com/timogilvie/wave\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/timogilvie/wavemill", "source_id": "comment-chain-pattern-assumption_checks-15c4bdff1d29602b", "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": "timogilvie/wavemill", "source_dataset": "comment_chain_patterns/assumption_checks", "training_usage": "weak_supervision"}}}, {"ruleId": "foundry_assumption_check", "level": "warning", "message": {"text": "Foundry mined assumption checks: timogilvie/wavemill"}, "properties": {"repobilityId": 382885, "scanner": "foundry_dataset", "fingerprint": "966f9307a1a82e6eec00b98d8f69d99771adfc70cb9b7ba26ed250647f4dcc49", "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": "timogilvie/wavemill#734", "human_labels": ["api_integration_gap", "api_or_backend", "dependency_or_build", "test_or_ci"], "issue_number": "734", "thread_label": "thread_has_human_issue_and_fix_context", "outcome_label": "ambiguous_needs_more_evidence", "source_backed": true, "max_confidence": 0.65, "repo_full_name": "timogilvie/wavemill", "training_usage": "weak_supervision", "confidence_tier": "weak_supervision", "source_chain_id": "evidence-chain-issue_chain-8bd0d6b6889234cc", "helicopter_views": {"graphs": 2, "schemas": 2}, "artifact_families": {"docs": 1, "schemas": 1}, "source_chain_kind": "issue_chain", "changed_file_count": 4, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {"test_or_ci": 1, "api_or_backend": 2, "dependency_or_build": 1}, "linked_commit_count": 5, "helicopter_view_count": 4, "source_artifact_count": 2, "classification_reasons": ["source_graph_has_real_artifacts", "source_graph_has_verification_artifacts", "repo_has_isolated_helicopter_views", "link_quality_weak_supervision", "high_risk_human_feedback_label"], "linked_ci_commit_count": 0, "verification_artifact_count": 1, "design_schema_api_artifact_count": 1}, "text": "Comment chain pattern product: assumption_checks\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#734\nOutcome: ambiguous_needs_more_evidence\nThread label: thread_has_human_issue_and_fix_context\nSource graph label: source_backed_multi_signal_graph\nReasons: source_graph_has_real_artifacts, source_graph_has_verification_artifacts, repo_has_isolated_helicopter_views, link_quality_weak_supervision, high_risk_human_feedback_label\nChain evidence:\nIssue/PR evidence chain: timogilvie/wavemill#734\nRepo: timogilvie/wavemill\nThread label: thread_has_human_issue_and_fix_context\nOutcome: ambiguous_needs_more_evidence\nComment count: 1\nLinked commit count: 5\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 4\nLabels: {'api_integration_gap': 1}\nPolarities: {'bad': 1}\nChanged file labels: {'dependency_or_build': 1, 'test_or_ci': 1, 'api_or_backend': 2}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-534fa2119b014142\",\n    \"kind\": \"pull_request_body\",\n    \"label\": \"api_integration_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/timogilvie/wavemill/pull/734\",\n    \"text\": \"GitHub feedback: api_integration_gap\\nPolarity: bad\\nKind: pull_request_body\\nRepo: timogilvie/wavemill\\nAuthor: timogilvie (User)\\nURL: https://github.com/timogilvie/wavemill/pull/734\\nTitle: HOK-2212: Group Hokusai router audit by request-normalized fields\\nBody:\\n## Summary\\n\\n- Updated Hokusai router audit to group recommendations by actual request payload fields (`request.inputs.task.task_type` and `request.inputs.context`) instead of descriptor-derived values\\n- Added descriptor-derived grouping as a secondary/debug view for comparison\\n- Fixed blocker where `_descriptor` suffix wasn't being stripped during descriptor group value matching\\n- Improved sensitivity probe testing by preserving unredacted descriptions for synthetic probes\\n\\n## Changes\\n\\n- **shared/lib/hokusai-router-audit.ts**: \\n  - Added request-normalized grouping with `requestGroupValue()` function\\n  - Kept descriptor-derived grouping with `descriptorGroupValue()` \\n  - Fixed critical bug: strip `_descriptor` suffix before key comparisons\\n  - Preserve unredacted descriptions for synthetic sensitivity probes (don't apply redaction to sensitivity-* evaluations)\\n  - Updated `buildGroupBreakdowns()` to generate both request and de\"\n  }\n]\nChanged files:\n[\n  {\n    \"id\": \"github-pr-file-file-400feb886183bb49\",\n    \"filename\": \"package.json\",\n    \"label\": \"dependency_or_build\",\n    \"status\": \"modified\",\n    \"additions\": 1,\n    \"deletions\": 1,\n    \"changes\": 2,\n    \"blob_url\": \"https://github.com/timogilvie/wavemill/blob/54186f085179c1ad9bc0f9f05bb73213f6d18fe2/package.json\"\n  },\n  {\n    \"id\": \"github-pr-file-file-27eba569b2e96688\",\n    \"filename\": \"shared/lib/hokusai-router-audit.test.ts\",\n    \"label\": \"test_or_ci\",\n    \"status\": \"added\",\n    \"additions\": 282,\n    \"deletions\": 0,\n    \"changes\": 282,\n    \"blob_url\": \"https://github.com/timogilvie/wavemill/blob/54\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/timogilvie/wavemill", "source_id": "comment-chain-pattern-assumption_checks-e63025902c57ae23", "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": "timogilvie/wavemill", "source_dataset": "comment_chain_patterns/assumption_checks", "training_usage": "weak_supervision"}}}, {"ruleId": "foundry_assumption_check", "level": "warning", "message": {"text": "Foundry mined assumption checks: timogilvie/wavemill"}, "properties": {"repobilityId": 382884, "scanner": "foundry_dataset", "fingerprint": "84190e8209dc15d30755ea760a85ad8b44f621e0c0cf785c37930c94b28b98a9", "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": "timogilvie/wavemill#733", "human_labels": ["test_ci_gap"], "issue_number": "733", "thread_label": "thread_has_human_issue_and_fix_context", "outcome_label": "ambiguous_needs_more_evidence", "source_backed": true, "max_confidence": 0.65, "repo_full_name": "timogilvie/wavemill", "training_usage": "weak_supervision", "confidence_tier": "weak_supervision", "source_chain_id": "evidence-chain-issue_chain-52353a6635216197", "helicopter_views": {"graphs": 2, "schemas": 2}, "artifact_families": {"docs": 1, "schemas": 1}, "source_chain_kind": "issue_chain", "changed_file_count": 0, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {}, "linked_commit_count": 5, "helicopter_view_count": 4, "source_artifact_count": 2, "classification_reasons": ["source_graph_has_real_artifacts", "source_graph_has_verification_artifacts", "repo_has_isolated_helicopter_views", "link_quality_weak_supervision", "high_risk_human_feedback_label"], "linked_ci_commit_count": 0, "verification_artifact_count": 1, "design_schema_api_artifact_count": 1}, "text": "Comment chain pattern product: assumption_checks\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#733\nOutcome: ambiguous_needs_more_evidence\nThread label: thread_has_human_issue_and_fix_context\nSource graph label: source_backed_multi_signal_graph\nReasons: source_graph_has_real_artifacts, source_graph_has_verification_artifacts, repo_has_isolated_helicopter_views, link_quality_weak_supervision, high_risk_human_feedback_label\nChain evidence:\nIssue/PR evidence chain: timogilvie/wavemill#733\nRepo: timogilvie/wavemill\nThread label: thread_has_human_issue_and_fix_context\nOutcome: ambiguous_needs_more_evidence\nComment count: 1\nLinked commit count: 5\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 0\nLabels: {'test_ci_gap': 1}\nPolarities: {'bad': 1}\nChanged file labels: {}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-01e903011fd085ee\",\n    \"kind\": \"pull_request_body\",\n    \"label\": \"test_ci_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/timogilvie/wavemill/pull/733\",\n    \"text\": \"GitHub feedback: test_ci_gap\\nPolarity: bad\\nKind: pull_request_body\\nRepo: timogilvie/wavemill\\nAuthor: timogilvie (User)\\nURL: https://github.com/timogilvie/wavemill/pull/733\\nTitle: HOK-2187: Harden eval rubric against unverified predicted failures and silent CI gate bypasses\\nBody:\\n## Summary\\n\\n- **Capped unverified predicted failure claims** at \u00b10.1 score impact: any claim that code \\\"fails its own tests\\\" now requires a reproduction transcript or failing-test output before it can be the decisive scoring factor \u2014 without evidence it is capped as a hypothesis.\\n- **Added vacuous safety gate check**: CI/conformance gates where the headline assertion is silently bypassable (via `continue-on-error`, off-by-one sibling path, unfalsifiable env flag, or warn-and-pass branch) are capped at 0.6 score; reviewers must now explicitly audit for \\\"skip-as-pass\\\" branches.\\n- **Reoriented conformance gate scoring** to prioritize whether the gate would actually go red on the failure class it exists for (e.g. EIP-712 domain/typehash drift), rather than surface checklist completeness.\\n- **Fixed template skeleton default** for `determinative_boundary` to use neutral `no_interventions` value so the worked exam\"\n  }\n]\nChanged files:\n[]\nLinked chain ids:\n[\"evidence-chain-comment_to_commit-e6ea88310bda952f\"]\nSource graph evidence:\nSource evidence repo graph summary\nRepo: timogilvie/wavemill\nGraph label: source_backed_multi_signal_graph\nNodes: 10\nEdges: 12\nNode types: {\"cooccurrence_profile\": 1, \"github_repo_summary\": 1, \"helicopter_repo_view\": 4, \"repo\": 1, \"source_artifact\": 2, \"source_bundle\": 1}\nEdge types: {\"artifact_needs_claim_verification\": 1, \"artifact_supports_verification\": 1, \"repo_has_cooccurrence_profile\": 1, \"repo_has_github_evidence_summary\": 1, \"repo_has_graphs_helicopter_view\": 2, \"repo_has_schemas_helicopter_view\": 2, \"repo_has_source_artifact\": 2, \"repo_has_source_bundle\": 1, \"source_bundle_uses_cooccur\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/timogilvie/wavemill", "source_id": "comment-chain-pattern-assumption_checks-7cccff2e601e2503", "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": "timogilvie/wavemill", "source_dataset": "comment_chain_patterns/assumption_checks", "training_usage": "weak_supervision"}}}, {"ruleId": "foundry_assumption_check", "level": "warning", "message": {"text": "Foundry mined assumption checks: timogilvie/wavemill"}, "properties": {"repobilityId": 382883, "scanner": "foundry_dataset", "fingerprint": "db279a90d75e44cb74f7c839ac29b96f1069913efa810223a310063be00d5b56", "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": "timogilvie/wavemill#732", "human_labels": ["docs_or_claims", "schema_or_data", "source_or_other", "test_ci_gap", "test_or_ci"], "issue_number": "732", "thread_label": "thread_has_human_issue_and_fix_context", "outcome_label": "ambiguous_needs_more_evidence", "source_backed": true, "max_confidence": 0.65, "repo_full_name": "timogilvie/wavemill", "training_usage": "weak_supervision", "confidence_tier": "weak_supervision", "source_chain_id": "evidence-chain-issue_chain-de622bb6a3803d84", "helicopter_views": {"graphs": 2, "schemas": 2}, "artifact_families": {"docs": 1, "schemas": 1}, "source_chain_kind": "issue_chain", "changed_file_count": 9, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {"test_or_ci": 3, "docs_or_claims": 2, "schema_or_data": 2, "source_or_other": 2}, "linked_commit_count": 5, "helicopter_view_count": 4, "source_artifact_count": 2, "classification_reasons": ["source_graph_has_real_artifacts", "source_graph_has_verification_artifacts", "repo_has_isolated_helicopter_views", "link_quality_weak_supervision", "high_risk_human_feedback_label"], "linked_ci_commit_count": 0, "verification_artifact_count": 1, "design_schema_api_artifact_count": 1}, "text": "Comment chain pattern product: assumption_checks\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#732\nOutcome: ambiguous_needs_more_evidence\nThread label: thread_has_human_issue_and_fix_context\nSource graph label: source_backed_multi_signal_graph\nReasons: source_graph_has_real_artifacts, source_graph_has_verification_artifacts, repo_has_isolated_helicopter_views, link_quality_weak_supervision, high_risk_human_feedback_label\nChain evidence:\nIssue/PR evidence chain: timogilvie/wavemill#732\nRepo: timogilvie/wavemill\nThread label: thread_has_human_issue_and_fix_context\nOutcome: ambiguous_needs_more_evidence\nComment count: 1\nLinked commit count: 5\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 9\nLabels: {'test_ci_gap': 1}\nPolarities: {'bad': 1}\nChanged file labels: {'docs_or_claims': 2, 'test_or_ci': 3, 'source_or_other': 2, 'schema_or_data': 2}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-11b96cfbe6dc7c0e\",\n    \"kind\": \"pull_request_body\",\n    \"label\": \"test_ci_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/timogilvie/wavemill/pull/732\",\n    \"text\": \"GitHub feedback: test_ci_gap\\nPolarity: bad\\nKind: pull_request_body\\nRepo: timogilvie/wavemill\\nAuthor: timogilvie (User)\\nURL: https://github.com/timogilvie/wavemill/pull/732\\nTitle: HOK-2218: Add v2 contribution row schema for technical task router\\nBody:\\n## Summary\\n\\n- Added v2 contribution row schema alongside existing v1 success-under-budget rows to support `technical_task_router.benchmark_score/v2` metric\\n- Extended contribution builder with rich metadata: role-specific model selections, available model pools, budget/cost/time/outcome labels, and sparse-cell metadata\\n- Implemented JSON schema validation for v2 rows with comprehensive test coverage for standard and challenger models (Qwen/DeepSeek)\\n- Preserved v1 export path and all existing tests for backward compatibility during Hokusai pipeline cutover\\n\\n## Changes\\n\\n**Core Files Modified:**\\n- `shared/lib/hokusai-contribution-schema.ts` \u2014 Added v2 row type definitions, validation logic, and schema generation\\n- `shared/lib/hokusai-contribution-schema.json` \u2014 New JSON schema for v2 rows with model pool metadata\\n- `shared/lib/hokusai-contribution-builder.ts` \u2014 Extended to generate v2-compatible rows with role-specific model metadata\\n- \"\n  }\n]\nChanged files:\n[\n  {\n    \"id\": \"github-pr-file-file-fa103ea86f3873ad\",\n    \"filename\": \"docs/hokusai-model-spec.md\",\n    \"label\": \"docs_or_claims\",\n    \"status\": \"modified\",\n    \"additions\": 3,\n    \"deletions\": 1,\n    \"changes\": 4,\n    \"blob_url\": \"https://github.com/timogilvie/wavemill/blob/022bf6cfb53c9dc48b3873074786e8a7572ca832/docs%2Fhokusai-model-spec.md\"\n  },\n  {\n    \"id\": \"github-pr-file-file-774ea74ef320b88e\",\n    \"filename\": \"docs/routing-and-hokusai.md\",\n    \"label\": \"docs_or_claims\",\n    \"status\": \"modified\",\n    \"additions\": 1,\n    \"deletions\": 0,\n    \"changes\": 1,\n    \"blob_url\": \"https://github.com/timogilvie/\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/timogilvie/wavemill", "source_id": "comment-chain-pattern-assumption_checks-4d302f1761adb9fc", "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": "timogilvie/wavemill", "source_dataset": "comment_chain_patterns/assumption_checks", "training_usage": "weak_supervision"}}}, {"ruleId": "foundry_assumption_check", "level": "warning", "message": {"text": "Foundry mined assumption checks: timogilvie/wavemill"}, "properties": {"repobilityId": 382882, "scanner": "foundry_dataset", "fingerprint": "87ca959add2cd52b381d46d2da5899c442442e5fe9ae1458919e2a74620a4227", "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": "timogilvie/wavemill#731", "human_labels": ["data_schema_persistence", "schema_or_data", "source_or_other", "test_or_ci"], "issue_number": "731", "thread_label": "thread_has_human_issue_and_fix_context", "outcome_label": "ambiguous_needs_more_evidence", "source_backed": true, "max_confidence": 0.65, "repo_full_name": "timogilvie/wavemill", "training_usage": "weak_supervision", "confidence_tier": "weak_supervision", "source_chain_id": "evidence-chain-issue_chain-27329527e7a1dcc0", "helicopter_views": {"graphs": 2, "schemas": 2}, "artifact_families": {"docs": 1, "schemas": 1}, "source_chain_kind": "issue_chain", "changed_file_count": 8, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {"test_or_ci": 4, "schema_or_data": 2, "source_or_other": 2}, "linked_commit_count": 5, "helicopter_view_count": 4, "source_artifact_count": 2, "classification_reasons": ["source_graph_has_real_artifacts", "source_graph_has_verification_artifacts", "repo_has_isolated_helicopter_views", "link_quality_weak_supervision", "high_risk_human_feedback_label"], "linked_ci_commit_count": 0, "verification_artifact_count": 1, "design_schema_api_artifact_count": 1}, "text": "Comment chain pattern product: assumption_checks\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#731\nOutcome: ambiguous_needs_more_evidence\nThread label: thread_has_human_issue_and_fix_context\nSource graph label: source_backed_multi_signal_graph\nReasons: source_graph_has_real_artifacts, source_graph_has_verification_artifacts, repo_has_isolated_helicopter_views, link_quality_weak_supervision, high_risk_human_feedback_label\nChain evidence:\nIssue/PR evidence chain: timogilvie/wavemill#731\nRepo: timogilvie/wavemill\nThread label: thread_has_human_issue_and_fix_context\nOutcome: ambiguous_needs_more_evidence\nComment count: 1\nLinked commit count: 5\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 8\nLabels: {'data_schema_persistence': 1}\nPolarities: {'bad': 1}\nChanged file labels: {'test_or_ci': 4, 'source_or_other': 2, 'schema_or_data': 2}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-3f18fb2101566763\",\n    \"kind\": \"pull_request_body\",\n    \"label\": \"data_schema_persistence\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/timogilvie/wavemill/pull/731\",\n    \"text\": \"GitHub feedback: data_schema_persistence\\nPolarity: bad\\nKind: pull_request_body\\nRepo: timogilvie/wavemill\\nAuthor: timogilvie (User)\\nURL: https://github.com/timogilvie/wavemill/pull/731\\nTitle: HOK-2218_c: Add v2 contribution row export for technical_task_router.benchmark_score\\nBody:\\n## Summary\\n\\n- Adds `TechnicalTaskRouterContributionRowV2` schema and type guard alongside the existing v1 success-under-budget row, preserving full backward compatibility\\n- Adds `buildTechnicalTaskRouterContributionRowV2()` builder that populates role-specific selected/allowed models, budget/cost/time/outcome labels, candidate-pool scenario metadata, and sparse-cell metadata\\n- Exports v2 rows from `hokusai-queue.ts` when a row matches the v2 spec ID, keeping the v1 export path active in parallel\\n- Fixes scenario enum type guard to use `typeof` string check (was using `!Array.isArray`, which allowed array values to bypass enum validation)\\n\\n## Changes\\n\\n- `shared/lib/hokusai-contribution-schema.ts` \u2014 v2 type definitions (`BenchmarkScenario`, `TechnicalTaskRouterContributionRowV2`), type guard, constants, and JSON schema integration\\n- `shared/lib/hokusai-contribution-schema.json` \u2014 v2 JSON schema added alongs\"\n  }\n]\nChanged files:\n[\n  {\n    \"id\": \"github-pr-file-file-2723a57cdf8a8e50\",\n    \"filename\": \"shared/lib/hokusai-contribution-builder.test.ts\",\n    \"label\": \"test_or_ci\",\n    \"status\": \"modified\",\n    \"additions\": 238,\n    \"deletions\": 1,\n    \"changes\": 239,\n    \"blob_url\": \"https://github.com/timogilvie/wavemill/blob/d10c70ae2b38112ff0a05433ec4e6be02f7e1efa/shared%2Flib%2Fhokusai-contribution-builder.test.ts\"\n  },\n  {\n    \"id\": \"github-pr-file-file-02d5c715b97bb490\",\n    \"filename\": \"shared/lib/hokusai-contribution-builder.ts\",\n    \"label\": \"source_or_other\",\n    \"status\": \"modified\",\n    \"additions\": 92,\n    \"deletions\": 1,\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/timogilvie/wavemill", "source_id": "comment-chain-pattern-assumption_checks-b444499c5bfb91d6", "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": "timogilvie/wavemill", "source_dataset": "comment_chain_patterns/assumption_checks", "training_usage": "weak_supervision"}}}, {"ruleId": "foundry_assumption_check", "level": "warning", "message": {"text": "Foundry mined assumption checks: timogilvie/wavemill"}, "properties": {"repobilityId": 382881, "scanner": "foundry_dataset", "fingerprint": "cf0db14f4b3070c70cfe15593cb97fbe62bdcae0a2660f06bbaeee5da07c9007", "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": "timogilvie/wavemill#730", "human_labels": ["api_integration_gap"], "issue_number": "730", "thread_label": "thread_has_human_issue_and_fix_context", "outcome_label": "ambiguous_needs_more_evidence", "source_backed": true, "max_confidence": 0.9, "repo_full_name": "timogilvie/wavemill", "training_usage": "gold_candidate", "confidence_tier": "high_confidence", "source_chain_id": "evidence-chain-issue_chain-a425a88b7ba47d1e", "helicopter_views": {"graphs": 2, "schemas": 2}, "artifact_families": {"docs": 1, "schemas": 1}, "source_chain_kind": "issue_chain", "changed_file_count": 0, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {}, "linked_commit_count": 5, "helicopter_view_count": 4, "source_artifact_count": 2, "classification_reasons": ["source_graph_has_real_artifacts", "source_graph_has_verification_artifacts", "repo_has_isolated_helicopter_views", "link_quality_high_confidence", "high_risk_human_feedback_label"], "linked_ci_commit_count": 0, "verification_artifact_count": 1, "design_schema_api_artifact_count": 1}, "text": "Comment chain pattern product: assumption_checks\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#730\nOutcome: ambiguous_needs_more_evidence\nThread label: thread_has_human_issue_and_fix_context\nSource graph label: source_backed_multi_signal_graph\nReasons: source_graph_has_real_artifacts, source_graph_has_verification_artifacts, repo_has_isolated_helicopter_views, link_quality_high_confidence, high_risk_human_feedback_label\nChain evidence:\nIssue/PR evidence chain: timogilvie/wavemill#730\nRepo: timogilvie/wavemill\nThread label: thread_has_human_issue_and_fix_context\nOutcome: ambiguous_needs_more_evidence\nComment count: 1\nLinked commit count: 5\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 0\nLabels: {'api_integration_gap': 1}\nPolarities: {'bad': 1}\nChanged file labels: {}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-15a5c0e8c2c78e1e\",\n    \"kind\": \"pull_request_body\",\n    \"label\": \"api_integration_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/timogilvie/wavemill/pull/730\",\n    \"text\": \"GitHub feedback: api_integration_gap\\nPolarity: bad\\nKind: pull_request_body\\nRepo: timogilvie/wavemill\\nAuthor: timogilvie (User)\\nURL: https://github.com/timogilvie/wavemill/pull/730\\nTitle: Add Hokusai router audit tool\\nBody:\\n## Summary\\n\\nAdds a `hokusai-router-audit` tool that replays a stratified sample of the eval corpus through the live Hokusai Model 30 router and reports on routing quality.\\n\\n- **`shared/lib/hokusai-router-audit.ts`** \u2014 business logic: stratified sampling, request building, and analysis (recommendation spread, validity violations, determinism/sensitivity, calibration, per-group breakdowns, and hindsight regret via KNN).\\n- **`tools/hokusai-router-audit.ts`** \u2014 thin CLI wrapper (per repo convention) with `--dry-run`, `--sample`, `--concurrency`, redaction toggles, and JSON output.\\n- **`shared/lib/hokusai-router-audit.test.ts`** \u2014 unit coverage for the analysis helpers.\\n- **`package.json`** \u2014 registers the new test in the `test:node-test` runner.\\n\\nExits non-zero when hard-failure dominance thresholds are exceeded, so it can gate routing regressions.\\n\\n## Test plan\\n\\n- `npx tsx --test shared/lib/hokusai-router-audit.test.ts` \u2014 9 subtests pass\\n- `npx tsx tools/hokusai-rou\"\n  }\n]\nChanged files:\n[]\nLinked chain ids:\n[\"evidence-chain-comment_to_commit-e5a8003131456e34\"]\nSource graph evidence:\nSource evidence repo graph summary\nRepo: timogilvie/wavemill\nGraph label: source_backed_multi_signal_graph\nNodes: 10\nEdges: 12\nNode types: {\"cooccurrence_profile\": 1, \"github_repo_summary\": 1, \"helicopter_repo_view\": 4, \"repo\": 1, \"source_artifact\": 2, \"source_bundle\": 1}\nEdge types: {\"artifact_needs_claim_verification\": 1, \"artifact_supports_verification\": 1, \"repo_has_cooccurrence_profile\": 1, \"repo_has_github_evidence_summary\": 1, \"repo_has_graphs_helicopter_view\": 2, \"repo_has_schemas_helicopter_view\": 2, \"repo_has_source_artifact\": 2, \"repo_has_source_bundle\": 1, \"source\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/timogilvie/wavemill", "source_id": "comment-chain-pattern-assumption_checks-6189aa68df338839", "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": "timogilvie/wavemill", "source_dataset": "comment_chain_patterns/assumption_checks", "training_usage": "gold_candidate"}}}, {"ruleId": "foundry_assumption_check", "level": "warning", "message": {"text": "Foundry mined assumption checks: timogilvie/wavemill"}, "properties": {"repobilityId": 382880, "scanner": "foundry_dataset", "fingerprint": "2f49fe0ed1965279ecdbc1eabcf7b2d2535cf7c3ccf98b99f6e99c34f146144f", "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": "timogilvie/wavemill#729", "human_labels": ["security_auth_secret"], "issue_number": "729", "thread_label": "thread_has_human_issue_and_fix_context", "outcome_label": "ambiguous_needs_more_evidence", "source_backed": true, "max_confidence": 0.8, "repo_full_name": "timogilvie/wavemill", "training_usage": "gold_candidate", "confidence_tier": "high_confidence", "source_chain_id": "evidence-chain-issue_chain-5746babf3f778499", "helicopter_views": {"graphs": 2, "schemas": 2}, "artifact_families": {"docs": 1, "schemas": 1}, "source_chain_kind": "issue_chain", "changed_file_count": 0, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {}, "linked_commit_count": 1, "helicopter_view_count": 4, "source_artifact_count": 2, "classification_reasons": ["source_graph_has_real_artifacts", "source_graph_has_verification_artifacts", "repo_has_isolated_helicopter_views", "link_quality_high_confidence", "high_risk_human_feedback_label"], "linked_ci_commit_count": 0, "verification_artifact_count": 1, "design_schema_api_artifact_count": 1}, "text": "Comment chain pattern product: assumption_checks\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#729\nOutcome: ambiguous_needs_more_evidence\nThread label: thread_has_human_issue_and_fix_context\nSource graph label: source_backed_multi_signal_graph\nReasons: source_graph_has_real_artifacts, source_graph_has_verification_artifacts, repo_has_isolated_helicopter_views, link_quality_high_confidence, high_risk_human_feedback_label\nChain evidence:\nIssue/PR evidence chain: timogilvie/wavemill#729\nRepo: timogilvie/wavemill\nThread label: thread_has_human_issue_and_fix_context\nOutcome: ambiguous_needs_more_evidence\nComment count: 1\nLinked commit count: 1\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 0\nLabels: {'security_auth_secret': 1}\nPolarities: {'bad': 1}\nChanged file labels: {}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-1b7c841e82f22a51\",\n    \"kind\": \"pull_request_body\",\n    \"label\": \"security_auth_secret\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/timogilvie/wavemill/pull/729\",\n    \"text\": \"GitHub feedback: security_auth_secret\\nPolarity: bad\\nKind: pull_request_body\\nRepo: timogilvie/wavemill\\nAuthor: timogilvie (User)\\nURL: https://github.com/timogilvie/wavemill/pull/729\\nTitle: Flip mill-mode autonomous defaults to Codex (HOK-2227)\\nBody:\\n## Summary\\n\\nPhase 2 of reducing headless Claude usage (parent: HOK-2224; follows #727, #728). The autonomous **mill-mode** launcher already supports Codex (`codex exec`, codex status hook, agent resolved from the model prefix) \u2014 this flips the hardcoded `claude` defaults so a mill run with no explicit per-stage models now defaults to Codex.\\n\\n## Model mapping \u2014 tier-matched\\n\\nPreserves today's shape (sonnet-class plan/review, opus-class code):\\n\\n| Stage | Before | After |\\n|---|---|---|\\n| planner | `claude-sonnet-4-6` | `gpt-5.4` |\\n| coder | `claude-opus-4-7` | `gpt-5.5` |\\n| reviewer | `claude-sonnet-4-6` | `gpt-5.4` |\\n\\n## Changes\\n\\n- **`wavemill-startup-runner.sh`** \u2014 per-stage default fallbacks flipped (every `${planner_model:-\u2026}` / `${coder_model:-\u2026}` / `${reviewer_model:-\u2026}` occurrence across the bootstrap and launch paths).\\n- **`agent-adapters.sh`** \u2014 `agent_resolve_from_model` fallback `${AGENT_CMD:-claude}` \u2192 `${AGENT_CMD:-codex}`; leg\"\n  }\n]\nChanged files:\n[]\nLinked chain ids:\n[\"evidence-chain-comment_to_commit-b11a4f2ffc1a81e2\"]\nSource graph evidence:\nSource evidence repo graph summary\nRepo: timogilvie/wavemill\nGraph label: source_backed_multi_signal_graph\nNodes: 10\nEdges: 12\nNode types: {\"cooccurrence_profile\": 1, \"github_repo_summary\": 1, \"helicopter_repo_view\": 4, \"repo\": 1, \"source_artifact\": 2, \"source_bundle\": 1}\nEdge types: {\"artifact_needs_claim_verification\": 1, \"artifact_supports_verification\": 1, \"repo_has_cooccurrence_profile\": 1, \"repo_has_github_evidence_summary\": 1, \"repo_has_graphs_helicopter_view\": 2, \"repo_has_schemas_helicopter_view\": 2, \"repo_has_source_artifact\": 2, \"repo_has_source_bundle\": 1, \"s\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/timogilvie/wavemill", "source_id": "comment-chain-pattern-assumption_checks-a550fc496b4735e3", "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": "timogilvie/wavemill", "source_dataset": "comment_chain_patterns/assumption_checks", "training_usage": "gold_candidate"}}}, {"ruleId": "foundry_assumption_check", "level": "warning", "message": {"text": "Foundry mined assumption checks: timogilvie/wavemill"}, "properties": {"repobilityId": 382879, "scanner": "foundry_dataset", "fingerprint": "e88bd6298eb83bee1277795ecfa75c2cf254338ead8f9913f14f486164000827", "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": "timogilvie/wavemill#727", "human_labels": ["security_auth_secret"], "issue_number": "727", "thread_label": "thread_has_human_issue_and_fix_context", "outcome_label": "ambiguous_needs_more_evidence", "source_backed": true, "max_confidence": 0.8, "repo_full_name": "timogilvie/wavemill", "training_usage": "gold_candidate", "confidence_tier": "high_confidence", "source_chain_id": "evidence-chain-issue_chain-0fefcc40fef08951", "helicopter_views": {"graphs": 2, "schemas": 2}, "artifact_families": {"docs": 1, "schemas": 1}, "source_chain_kind": "issue_chain", "changed_file_count": 0, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {}, "linked_commit_count": 1, "helicopter_view_count": 4, "source_artifact_count": 2, "classification_reasons": ["source_graph_has_real_artifacts", "source_graph_has_verification_artifacts", "repo_has_isolated_helicopter_views", "link_quality_high_confidence", "high_risk_human_feedback_label"], "linked_ci_commit_count": 0, "verification_artifact_count": 1, "design_schema_api_artifact_count": 1}, "text": "Comment chain pattern product: assumption_checks\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#727\nOutcome: ambiguous_needs_more_evidence\nThread label: thread_has_human_issue_and_fix_context\nSource graph label: source_backed_multi_signal_graph\nReasons: source_graph_has_real_artifacts, source_graph_has_verification_artifacts, repo_has_isolated_helicopter_views, link_quality_high_confidence, high_risk_human_feedback_label\nChain evidence:\nIssue/PR evidence chain: timogilvie/wavemill#727\nRepo: timogilvie/wavemill\nThread label: thread_has_human_issue_and_fix_context\nOutcome: ambiguous_needs_more_evidence\nComment count: 1\nLinked commit count: 1\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 0\nLabels: {'security_auth_secret': 1}\nPolarities: {'bad': 1}\nChanged file labels: {}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-3d0321e7b92515aa\",\n    \"kind\": \"pull_request_body\",\n    \"label\": \"security_auth_secret\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/timogilvie/wavemill/pull/727\",\n    \"text\": \"GitHub feedback: security_auth_secret\\nPolarity: bad\\nKind: pull_request_body\\nRepo: timogilvie/wavemill\\nAuthor: timogilvie (User)\\nURL: https://github.com/timogilvie/wavemill/pull/727\\nTitle: Make the headless codex provider real in llm-cli (HOK-2225)\\nBody:\\n## Summary\\n\\nPhase 0 of reducing headless Claude usage (parent: HOK-2224). The `codex` provider in `shared/lib/llm-cli.ts` was advertised but **non-functional** \u2014 its CLI args (`--output-format json`) were invalid for the codex CLI, and `unwrapJsonEnvelope` only understood Claude's single-envelope shape. This makes the codex path actually work so the hot-path `callClaude()` consumers can be routed to Codex in Phase 1 (HOK-2226).\\n\\n## Changes (`shared/lib/llm-cli.ts`)\\n\\n- **Real CLI form** \u2014 `PROVIDER_CONFIGS.codex` now uses `codex exec --json --sandbox read-only`, with the prompt piped via stdin. Verified against codex-cli 0.139.0.\\n- **JSONL parser** \u2014 new `unwrapCodexJsonl()` parses codex's event stream: final text from `agent_message` `item.completed` events, token usage from `turn.completed`. `callLLMOnce` branches on provider (codex \u2192 JSONL, else \u2192 Claude/OpenAI envelope). `input_tokens` already includes cached input (not double-co\"\n  }\n]\nChanged files:\n[]\nLinked chain ids:\n[\"evidence-chain-comment_to_commit-08e9c9fde2e18e68\"]\nSource graph evidence:\nSource evidence repo graph summary\nRepo: timogilvie/wavemill\nGraph label: source_backed_multi_signal_graph\nNodes: 10\nEdges: 12\nNode types: {\"cooccurrence_profile\": 1, \"github_repo_summary\": 1, \"helicopter_repo_view\": 4, \"repo\": 1, \"source_artifact\": 2, \"source_bundle\": 1}\nEdge types: {\"artifact_needs_claim_verification\": 1, \"artifact_supports_verification\": 1, \"repo_has_cooccurrence_profile\": 1, \"repo_has_github_evidence_summary\": 1, \"repo_has_graphs_helicopter_view\": 2, \"repo_has_schemas_helicopter_view\": 2, \"repo_has_source_artifact\": 2, \"repo_has_source_bundle\": 1, \"source_bund\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/timogilvie/wavemill", "source_id": "comment-chain-pattern-assumption_checks-37381311b909784e", "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": "timogilvie/wavemill", "source_dataset": "comment_chain_patterns/assumption_checks", "training_usage": "gold_candidate"}}}, {"ruleId": "foundry_assumption_check", "level": "warning", "message": {"text": "Foundry mined assumption checks: timogilvie/wavemill"}, "properties": {"repobilityId": 382878, "scanner": "foundry_dataset", "fingerprint": "d68cf785e4ca70dc057d711d0628eab1e3d39e13294d530dc987d91d74b1b2a6", "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": "timogilvie/wavemill#726", "human_labels": ["security_auth_secret"], "issue_number": "726", "thread_label": "thread_has_human_issue_and_fix_context", "outcome_label": "ambiguous_needs_more_evidence", "source_backed": true, "max_confidence": 0.8, "repo_full_name": "timogilvie/wavemill", "training_usage": "gold_candidate", "confidence_tier": "high_confidence", "source_chain_id": "evidence-chain-issue_chain-a6b79bc78fc30df5", "helicopter_views": {"graphs": 2, "schemas": 2}, "artifact_families": {"docs": 1, "schemas": 1}, "source_chain_kind": "issue_chain", "changed_file_count": 0, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {}, "linked_commit_count": 1, "helicopter_view_count": 4, "source_artifact_count": 2, "classification_reasons": ["source_graph_has_real_artifacts", "source_graph_has_verification_artifacts", "repo_has_isolated_helicopter_views", "link_quality_high_confidence", "high_risk_human_feedback_label"], "linked_ci_commit_count": 0, "verification_artifact_count": 1, "design_schema_api_artifact_count": 1}, "text": "Comment chain pattern product: assumption_checks\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#726\nOutcome: ambiguous_needs_more_evidence\nThread label: thread_has_human_issue_and_fix_context\nSource graph label: source_backed_multi_signal_graph\nReasons: source_graph_has_real_artifacts, source_graph_has_verification_artifacts, repo_has_isolated_helicopter_views, link_quality_high_confidence, high_risk_human_feedback_label\nChain evidence:\nIssue/PR evidence chain: timogilvie/wavemill#726\nRepo: timogilvie/wavemill\nThread label: thread_has_human_issue_and_fix_context\nOutcome: ambiguous_needs_more_evidence\nComment count: 1\nLinked commit count: 1\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 0\nLabels: {'security_auth_secret': 1}\nPolarities: {'bad': 1}\nChanged file labels: {}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-f4abe791e53be3cc\",\n    \"kind\": \"pull_request_body\",\n    \"label\": \"security_auth_secret\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/timogilvie/wavemill/pull/726\",\n    \"text\": \"GitHub feedback: security_auth_secret\\nPolarity: bad\\nKind: pull_request_body\\nRepo: timogilvie/wavemill\\nAuthor: timogilvie (User)\\nURL: https://github.com/timogilvie/wavemill/pull/726\\nTitle: Fix expansion reroute artifact writing and Hokusai auth\\nBody:\\n## Summary\\n- add route-task --output so expanded route artifacts are written as strict JSON without stdout/stderr contamination\\n- render planning reroute commands with the base mill repo dir for router config/env/evals while writing artifacts in the task worktree\\n- add regression coverage for strict artifact output and base-repo reroute prompt rendering\\n\\n## Tests\\n- npx tsx --test tools/route-tasks.test.ts\\n- bash tests/check-shell.sh\"\n  }\n]\nChanged files:\n[]\nLinked chain ids:\n[\"evidence-chain-comment_to_commit-f95f77b39872dcfb\"]\nSource graph evidence:\nSource evidence repo graph summary\nRepo: timogilvie/wavemill\nGraph label: source_backed_multi_signal_graph\nNodes: 10\nEdges: 12\nNode types: {\"cooccurrence_profile\": 1, \"github_repo_summary\": 1, \"helicopter_repo_view\": 4, \"repo\": 1, \"source_artifact\": 2, \"source_bundle\": 1}\nEdge types: {\"artifact_needs_claim_verification\": 1, \"artifact_supports_verification\": 1, \"repo_has_cooccurrence_profile\": 1, \"repo_has_github_evidence_summary\": 1, \"repo_has_graphs_helicopter_view\": 2, \"repo_has_schemas_helicopter_view\": 2, \"repo_has_source_artifact\": 2, \"repo_has_source_bundle\": 1, \"source_bundle_uses_cooccurrence_profile\": 1}\nArtifact families: {\"docs\": 1, \"schemas\": 1}\nHelicopter views: {\"graphs\": 2, \"schemas\": 2}\nBundle labels: {\"source_backed_fake_real_verification_bundle\": 1}\nCo-occurrence labels: {\"fake_real_data_plus_verification_gap\": 1}", "source": "foundry_mined_dataset", "repo_url": "https://github.com/timogilvie/wavemill", "source_id": "comment-chain-pattern-assumption_checks-3b18116eacfae46c", "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": "timogilvie/wavemill", "source_dataset": "comment_chain_patterns/assumption_checks", "training_usage": "gold_candidate"}}}, {"ruleId": "foundry_assumption_check", "level": "warning", "message": {"text": "Foundry mined assumption checks: timogilvie/wavemill"}, "properties": {"repobilityId": 382877, "scanner": "foundry_dataset", "fingerprint": "0826609f70ca329fcdfeacdcdfdd731841befa54f6c80a2b5f1f2f1e86a496bf", "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": "timogilvie/wavemill#725", "human_labels": ["agent_instruction_gap"], "issue_number": "725", "thread_label": "thread_has_human_issue_and_fix_context", "outcome_label": "ambiguous_needs_more_evidence", "source_backed": true, "max_confidence": 0.8, "repo_full_name": "timogilvie/wavemill", "training_usage": "gold_candidate", "confidence_tier": "high_confidence", "source_chain_id": "evidence-chain-issue_chain-4c223c32f25b90cb", "helicopter_views": {"graphs": 2, "schemas": 2}, "artifact_families": {"docs": 1, "schemas": 1}, "source_chain_kind": "issue_chain", "changed_file_count": 0, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {}, "linked_commit_count": 2, "helicopter_view_count": 4, "source_artifact_count": 2, "classification_reasons": ["source_graph_has_real_artifacts", "source_graph_has_verification_artifacts", "repo_has_isolated_helicopter_views", "link_quality_high_confidence"], "linked_ci_commit_count": 0, "verification_artifact_count": 1, "design_schema_api_artifact_count": 1}, "text": "Comment chain pattern product: assumption_checks\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#725\nOutcome: ambiguous_needs_more_evidence\nThread label: thread_has_human_issue_and_fix_context\nSource graph label: source_backed_multi_signal_graph\nReasons: source_graph_has_real_artifacts, source_graph_has_verification_artifacts, repo_has_isolated_helicopter_views, link_quality_high_confidence\nChain evidence:\nIssue/PR evidence chain: timogilvie/wavemill#725\nRepo: timogilvie/wavemill\nThread label: thread_has_human_issue_and_fix_context\nOutcome: ambiguous_needs_more_evidence\nComment count: 1\nLinked commit count: 2\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 0\nLabels: {'agent_instruction_gap': 1}\nPolarities: {'bad': 1}\nChanged file labels: {}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-549baa776f93cdb5\",\n    \"kind\": \"pull_request_body\",\n    \"label\": \"agent_instruction_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/timogilvie/wavemill/pull/725\",\n    \"text\": \"GitHub feedback: agent_instruction_gap\\nPolarity: bad\\nKind: pull_request_body\\nRepo: timogilvie/wavemill\\nAuthor: timogilvie (User)\\nURL: https://github.com/timogilvie/wavemill/pull/725\\nTitle: Temporarily disable claude-fable-5 (access restricted upstream)\\nBody:\\nAccess to `claude-fable-5` is restricted upstream as of 2026-06-13. This stops the router from selecting it, cleanly and reversibly. Re-enabling is tracked in [HOK-2198](https://linear.app/hokusai/issue/HOK-2198).\\n\\n## Approach\\n\\nAdds `claude-fable-5` to the hardcoded `DISABLED_MODEL_IDS` set in `disabled-models.ts` \u2014 the **global** lever (shared code, so it covers every repo's mill runs, not just per-repo config) that matches the existing `gpt-5.3-codex` precedent. It gates Fable out of every selection path: the heuristic pool, the policy resolver, stage-aware routing (including the record-derived candidate path and priors seeding), the descriptor/stage pools, and the challenge scheduler.\\n\\n**The registry default is deliberately untouched.** It still lists `claude-fable-5` as the frontier model and ladder-first across planning/coding/review. This gates *availability*, not the catalog \u2014 so:\\n- Re-enabling is a **one-line deletion**\"\n  }\n]\nChanged files:\n[]\nLinked chain ids:\n[\"evidence-chain-comment_to_commit-8493431da922f9c8\"]\nSource graph evidence:\nSource evidence repo graph summary\nRepo: timogilvie/wavemill\nGraph label: source_backed_multi_signal_graph\nNodes: 10\nEdges: 12\nNode types: {\"cooccurrence_profile\": 1, \"github_repo_summary\": 1, \"helicopter_repo_view\": 4, \"repo\": 1, \"source_artifact\": 2, \"source_bundle\": 1}\nEdge types: {\"artifact_needs_claim_verification\": 1, \"artifact_supports_verification\": 1, \"repo_has_cooccurrence_profile\": 1, \"repo_has_github_evidence_summary\": 1, \"repo_has_graphs_helicopter_view\": 2, \"repo_has_schemas_helicopter_view\": 2, \"repo_has_source_artifact\": 2, \"repo_has_source_bundle\": 1, \"source_bundle_uses_cooccurrence_profile\":\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/timogilvie/wavemill", "source_id": "comment-chain-pattern-assumption_checks-e79f4593b65b4008", "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": "timogilvie/wavemill", "source_dataset": "comment_chain_patterns/assumption_checks", "training_usage": "gold_candidate"}}}, {"ruleId": "foundry_assumption_check", "level": "warning", "message": {"text": "Foundry mined assumption checks: timogilvie/wavemill"}, "properties": {"repobilityId": 382876, "scanner": "foundry_dataset", "fingerprint": "2567d0a9de15cb1f376f547b8e8927e462359dfccd235876ba21d0cae85a3073", "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": "timogilvie/wavemill#724", "human_labels": ["data_schema_persistence"], "issue_number": "724", "thread_label": "thread_has_human_issue_and_fix_context", "outcome_label": "ambiguous_needs_more_evidence", "source_backed": true, "max_confidence": 0.9, "repo_full_name": "timogilvie/wavemill", "training_usage": "gold_candidate", "confidence_tier": "high_confidence", "source_chain_id": "evidence-chain-issue_chain-071eb29707124662", "helicopter_views": {"graphs": 2, "schemas": 2}, "artifact_families": {"docs": 1, "schemas": 1}, "source_chain_kind": "issue_chain", "changed_file_count": 0, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {}, "linked_commit_count": 5, "helicopter_view_count": 4, "source_artifact_count": 2, "classification_reasons": ["source_graph_has_real_artifacts", "source_graph_has_verification_artifacts", "repo_has_isolated_helicopter_views", "link_quality_high_confidence", "high_risk_human_feedback_label"], "linked_ci_commit_count": 0, "verification_artifact_count": 1, "design_schema_api_artifact_count": 1}, "text": "Comment chain pattern product: assumption_checks\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#724\nOutcome: ambiguous_needs_more_evidence\nThread label: thread_has_human_issue_and_fix_context\nSource graph label: source_backed_multi_signal_graph\nReasons: source_graph_has_real_artifacts, source_graph_has_verification_artifacts, repo_has_isolated_helicopter_views, link_quality_high_confidence, high_risk_human_feedback_label\nChain evidence:\nIssue/PR evidence chain: timogilvie/wavemill#724\nRepo: timogilvie/wavemill\nThread label: thread_has_human_issue_and_fix_context\nOutcome: ambiguous_needs_more_evidence\nComment count: 1\nLinked commit count: 5\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 0\nLabels: {'data_schema_persistence': 1}\nPolarities: {'bad': 1}\nChanged file labels: {}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-0aa65c6ded8d00df\",\n    \"kind\": \"pull_request_body\",\n    \"label\": \"data_schema_persistence\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/timogilvie/wavemill/pull/724\",\n    \"text\": \"GitHub feedback: data_schema_persistence\\nPolarity: bad\\nKind: pull_request_body\\nRepo: timogilvie/wavemill\\nAuthor: timogilvie (User)\\nURL: https://github.com/timogilvie/wavemill/pull/724\\nTitle: Add recency metadata and a new-model exploration boost (HOK-2194)\\nBody:\\nImplements [HOK-2194](https://linear.app/hokusai/issue/HOK-2194) \u2014 the final item in the router-diversity series.\\n\\n## Why\\n\\n\\\"Prefer newer models to accumulate performance data\\\" was only encoded indirectly through hand-tuned `qualityScores`, which conflates \\\"we believe it's good\\\" with \\\"we want data on it\\\". This adds an explicit, time-decaying recency signal so a freshly released model gets a temporary exploration boost that fades as it earns real eval data.\\n\\n## What changed\\n\\n**Registry recency metadata:**\\n- `ModelCapabilities`/`ModelCapabilitiesOverride` gain `releasedAt` (ISO date), threaded through clone/merge/default paths and the config schema (pattern-validated, since Ajv doesn't ship the `date` format).\\n- Seeded for the recent frontier models: `claude-fable-5` 2026-06-10, `claude-opus-4-8` 2026-05-20, `gpt-5.5` 2026-05-01. (Approximate; override via `modelRegistry.models.<id>.releasedAt`.)\\n\\n**`router-exploration.ts`:**\\n\"\n  }\n]\nChanged files:\n[]\nLinked chain ids:\n[\"evidence-chain-comment_to_commit-210c625a018de741\"]\nSource graph evidence:\nSource evidence repo graph summary\nRepo: timogilvie/wavemill\nGraph label: source_backed_multi_signal_graph\nNodes: 10\nEdges: 12\nNode types: {\"cooccurrence_profile\": 1, \"github_repo_summary\": 1, \"helicopter_repo_view\": 4, \"repo\": 1, \"source_artifact\": 2, \"source_bundle\": 1}\nEdge types: {\"artifact_needs_claim_verification\": 1, \"artifact_supports_verification\": 1, \"repo_has_cooccurrence_profile\": 1, \"repo_has_github_evidence_summary\": 1, \"repo_has_graphs_helicopter_view\": 2, \"repo_has_schemas_helicopter_view\": 2, \"repo_has_source_artifact\": 2, \"repo_has_source_bundle\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/timogilvie/wavemill", "source_id": "comment-chain-pattern-assumption_checks-64e71f29dfc066a8", "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": "timogilvie/wavemill", "source_dataset": "comment_chain_patterns/assumption_checks", "training_usage": "gold_candidate"}}}, {"ruleId": "foundry_assumption_check", "level": "warning", "message": {"text": "Foundry mined assumption checks: timogilvie/wavemill"}, "properties": {"repobilityId": 382875, "scanner": "foundry_dataset", "fingerprint": "6457d4f510883286815657909f865c3593c8f561365ff01f1bc1f7f75df79723", "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": "timogilvie/wavemill#723", "human_labels": ["api_integration_gap"], "issue_number": "723", "thread_label": "thread_has_human_issue_and_fix_context", "outcome_label": "ambiguous_needs_more_evidence", "source_backed": true, "max_confidence": 0.9, "repo_full_name": "timogilvie/wavemill", "training_usage": "gold_candidate", "confidence_tier": "high_confidence", "source_chain_id": "evidence-chain-issue_chain-ff5e551c934476b9", "helicopter_views": {"graphs": 2, "schemas": 2}, "artifact_families": {"docs": 1, "schemas": 1}, "source_chain_kind": "issue_chain", "changed_file_count": 0, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {}, "linked_commit_count": 5, "helicopter_view_count": 4, "source_artifact_count": 2, "classification_reasons": ["source_graph_has_real_artifacts", "source_graph_has_verification_artifacts", "repo_has_isolated_helicopter_views", "link_quality_high_confidence", "high_risk_human_feedback_label"], "linked_ci_commit_count": 0, "verification_artifact_count": 1, "design_schema_api_artifact_count": 1}, "text": "Comment chain pattern product: assumption_checks\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#723\nOutcome: ambiguous_needs_more_evidence\nThread label: thread_has_human_issue_and_fix_context\nSource graph label: source_backed_multi_signal_graph\nReasons: source_graph_has_real_artifacts, source_graph_has_verification_artifacts, repo_has_isolated_helicopter_views, link_quality_high_confidence, high_risk_human_feedback_label\nChain evidence:\nIssue/PR evidence chain: timogilvie/wavemill#723\nRepo: timogilvie/wavemill\nThread label: thread_has_human_issue_and_fix_context\nOutcome: ambiguous_needs_more_evidence\nComment count: 1\nLinked commit count: 5\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 0\nLabels: {'api_integration_gap': 1}\nPolarities: {'bad': 1}\nChanged file labels: {}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-9ead2a1e5ac95b4d\",\n    \"kind\": \"pull_request_body\",\n    \"label\": \"api_integration_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/timogilvie/wavemill/pull/723\",\n    \"text\": \"GitHub feedback: api_integration_gap\\nPolarity: bad\\nKind: pull_request_body\\nRepo: timogilvie/wavemill\\nAuthor: timogilvie (User)\\nURL: https://github.com/timogilvie/wavemill/pull/723\\nTitle: Restrict KNN pool to records with per-stage attribution (HOK-2195)\\nBody:\\nImplements [HOK-2195](https://linear.app/hokusai/issue/HOK-2195) \u2014 the fix for the `heuristic-fallback 49/50` finding from the HOK-2193 diversity report.\\n\\n## Root cause (verified empirically against this repo's 711 records)\\n\\n1. **Similarity measured shared emptiness, not task likeness.** Query descriptors are built before the task runs (`files_touched: 0`, `languages: []`). 363 legacy records carry backfilled descriptors with the same empty signals, scoring 0.83\u20130.98 cosine against any fresh query, while all 348 records with real per-stage attribution (rich post-completion signals) score \u22640.66. The first usable record ranked **21st** \u2014 just outside the k=20 window.\\n2. **`findKNearest` ignores rankability**, so the entire neighbor window filled with records that `aggregateRoleRanking` (correctly, by design) skips.\\n3. Zero candidates per role \u2192 null selection \u2192 with no configured allowlists, `routeStageAware` returns null \u2192 sile\"\n  }\n]\nChanged files:\n[]\nLinked chain ids:\n[\"evidence-chain-comment_to_commit-cee6aa75a4ceec57\"]\nSource graph evidence:\nSource evidence repo graph summary\nRepo: timogilvie/wavemill\nGraph label: source_backed_multi_signal_graph\nNodes: 10\nEdges: 12\nNode types: {\"cooccurrence_profile\": 1, \"github_repo_summary\": 1, \"helicopter_repo_view\": 4, \"repo\": 1, \"source_artifact\": 2, \"source_bundle\": 1}\nEdge types: {\"artifact_needs_claim_verification\": 1, \"artifact_supports_verification\": 1, \"repo_has_cooccurrence_profile\": 1, \"repo_has_github_evidence_summary\": 1, \"repo_has_graphs_helicopter_view\": 2, \"repo_has_schemas_helicopter_view\": 2, \"repo_has_source_artifact\": 2, \"repo_has_source_bundle\": 1, \"source_bundle_\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/timogilvie/wavemill", "source_id": "comment-chain-pattern-assumption_checks-ad72c006f5f50a84", "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": "timogilvie/wavemill", "source_dataset": "comment_chain_patterns/assumption_checks", "training_usage": "gold_candidate"}}}, {"ruleId": "foundry_assumption_check", "level": "warning", "message": {"text": "Foundry mined assumption checks: timogilvie/wavemill"}, "properties": {"repobilityId": 382874, "scanner": "foundry_dataset", "fingerprint": "7ec9948aec376d10f35bc4ea653b7d9eaab33ab2876da656cb3f4f0292896c5a", "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": "timogilvie/wavemill#722", "human_labels": ["agent_instruction_gap"], "issue_number": "722", "thread_label": "thread_has_human_issue_and_fix_context", "outcome_label": "ambiguous_needs_more_evidence", "source_backed": true, "max_confidence": 0.8, "repo_full_name": "timogilvie/wavemill", "training_usage": "gold_candidate", "confidence_tier": "high_confidence", "source_chain_id": "evidence-chain-issue_chain-f302977a9050e0a4", "helicopter_views": {"graphs": 2, "schemas": 2}, "artifact_families": {"docs": 1, "schemas": 1}, "source_chain_kind": "issue_chain", "changed_file_count": 0, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {}, "linked_commit_count": 2, "helicopter_view_count": 4, "source_artifact_count": 2, "classification_reasons": ["source_graph_has_real_artifacts", "source_graph_has_verification_artifacts", "repo_has_isolated_helicopter_views", "link_quality_high_confidence"], "linked_ci_commit_count": 0, "verification_artifact_count": 1, "design_schema_api_artifact_count": 1}, "text": "Comment chain pattern product: assumption_checks\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#722\nOutcome: ambiguous_needs_more_evidence\nThread label: thread_has_human_issue_and_fix_context\nSource graph label: source_backed_multi_signal_graph\nReasons: source_graph_has_real_artifacts, source_graph_has_verification_artifacts, repo_has_isolated_helicopter_views, link_quality_high_confidence\nChain evidence:\nIssue/PR evidence chain: timogilvie/wavemill#722\nRepo: timogilvie/wavemill\nThread label: thread_has_human_issue_and_fix_context\nOutcome: ambiguous_needs_more_evidence\nComment count: 1\nLinked commit count: 2\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 0\nLabels: {'agent_instruction_gap': 1}\nPolarities: {'bad': 1}\nChanged file labels: {}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-91eba90fc8218705\",\n    \"kind\": \"pull_request_body\",\n    \"label\": \"agent_instruction_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/timogilvie/wavemill/pull/722\",\n    \"text\": \"GitHub feedback: agent_instruction_gap\\nPolarity: bad\\nKind: pull_request_body\\nRepo: timogilvie/wavemill\\nAuthor: timogilvie (User)\\nURL: https://github.com/timogilvie/wavemill/pull/722\\nTitle: Track per-model-per-stage coverage and add a diversity report (HOK-2193)\\nBody:\\nImplements [HOK-2193](https://linear.app/hokusai/issue/HOK-2193) \u2014 sixth of the router-diversity series.\\n\\n## Why\\n\\nRouting concentration was invisible and nothing drove coverage. `buildEvalSummary` counted `recordsByModel` and `recordsByStage` separately, so \\\"Fable 5 has 30 records but zero as reviewer\\\" couldn't be expressed \u2014 and the original monotony complaint (\\\"Opus plans, GPT-5.x codes, Claude reviews\\\") was only noticeable anecdotally.\\n\\n## What changed\\n\\n**Cross-product tracking (`challenge-scheduler.ts`):**\\n- `EvalSummary.recordsByModelStage` \u2014 model \u00d7 stage record counts attributed from `taskDescriptor.stages.*.model` (legacy records without per-stage attribution fall back to `modelId` for the implementation stage only). Optional in the type so hand-built summaries compile; `buildEvalSummary` always fills it.\\n- `checkNewModel` now targets the **least-covered (model, stage) cell** and includes the stage in the recom\"\n  }\n]\nChanged files:\n[]\nLinked chain ids:\n[\"evidence-chain-comment_to_commit-c94f11a84f8cb661\"]\nSource graph evidence:\nSource evidence repo graph summary\nRepo: timogilvie/wavemill\nGraph label: source_backed_multi_signal_graph\nNodes: 10\nEdges: 12\nNode types: {\"cooccurrence_profile\": 1, \"github_repo_summary\": 1, \"helicopter_repo_view\": 4, \"repo\": 1, \"source_artifact\": 2, \"source_bundle\": 1}\nEdge types: {\"artifact_needs_claim_verification\": 1, \"artifact_supports_verification\": 1, \"repo_has_cooccurrence_profile\": 1, \"repo_has_github_evidence_summary\": 1, \"repo_has_graphs_helicopter_view\": 2, \"repo_has_schemas_helicopter_view\": 2, \"repo_has_source_artifact\": 2, \"repo_has_source_bundle\": 1, \"source_bundle_uses_cooccurrence_pr\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/timogilvie/wavemill", "source_id": "comment-chain-pattern-assumption_checks-a34d422e7b892392", "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": "timogilvie/wavemill", "source_dataset": "comment_chain_patterns/assumption_checks", "training_usage": "gold_candidate"}}}, {"ruleId": "foundry_assumption_check", "level": "warning", "message": {"text": "Foundry mined assumption checks: timogilvie/wavemill"}, "properties": {"repobilityId": 382873, "scanner": "foundry_dataset", "fingerprint": "b0341a9a2719bb4d15e718a9aeafd33edef93a54f06e3a23d6162d7c5a2796f7", "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": "timogilvie/wavemill#718", "human_labels": ["test_ci_gap"], "issue_number": "718", "thread_label": "thread_has_human_issue_and_fix_context", "outcome_label": "ambiguous_needs_more_evidence", "source_backed": true, "max_confidence": 0.9, "repo_full_name": "timogilvie/wavemill", "training_usage": "gold_candidate", "confidence_tier": "high_confidence", "source_chain_id": "evidence-chain-issue_chain-69472df7741c1701", "helicopter_views": {"graphs": 2, "schemas": 2}, "artifact_families": {"docs": 1, "schemas": 1}, "source_chain_kind": "issue_chain", "changed_file_count": 0, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {}, "linked_commit_count": 5, "helicopter_view_count": 4, "source_artifact_count": 2, "classification_reasons": ["source_graph_has_real_artifacts", "source_graph_has_verification_artifacts", "repo_has_isolated_helicopter_views", "link_quality_high_confidence", "high_risk_human_feedback_label"], "linked_ci_commit_count": 0, "verification_artifact_count": 1, "design_schema_api_artifact_count": 1}, "text": "Comment chain pattern product: assumption_checks\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#718\nOutcome: ambiguous_needs_more_evidence\nThread label: thread_has_human_issue_and_fix_context\nSource graph label: source_backed_multi_signal_graph\nReasons: source_graph_has_real_artifacts, source_graph_has_verification_artifacts, repo_has_isolated_helicopter_views, link_quality_high_confidence, high_risk_human_feedback_label\nChain evidence:\nIssue/PR evidence chain: timogilvie/wavemill#718\nRepo: timogilvie/wavemill\nThread label: thread_has_human_issue_and_fix_context\nOutcome: ambiguous_needs_more_evidence\nComment count: 1\nLinked commit count: 5\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 0\nLabels: {'test_ci_gap': 1}\nPolarities: {'bad': 1}\nChanged file labels: {}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-3bc8229ce57a7051\",\n    \"kind\": \"pull_request_body\",\n    \"label\": \"test_ci_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/timogilvie/wavemill/pull/718\",\n    \"text\": \"GitHub feedback: test_ci_gap\\nPolarity: bad\\nKind: pull_request_body\\nRepo: timogilvie/wavemill\\nAuthor: timogilvie (User)\\nURL: https://github.com/timogilvie/wavemill/pull/718\\nTitle: Wire challengeRecommendation into challenge launch decisions (HOK-2189)\\nBody:\\nImplements [HOK-2189](https://linear.app/hokusai/issue/HOK-2189) \u2014 second of the router-diversity series.\\n\\n## Why\\n\\nThe challenge scheduler (`challenge-scheduler.ts`) already produces exactly the exploration signals we want \u2014 `new-model`, `low-data-stage`, and `low-confidence` recommendations that pick the least-tested model as challenger \u2014 but the recommendation was **advisory only**: it was attached to routing decisions and printed, and nothing launched from it. The actual launcher (`tools/resolve-challenge-task.ts`) rolled `Math.random() < challenge.rate` against a uniform pool, so the models we most need data on got no preferential exploration.\\n\\n## What changed\\n\\n**`challenge-mode.ts` (new business logic):**\\n- `extractChallengeRecommendation(artifacts)` \u2014 reads the scheduler recommendation from persisted route artifacts (expanded preferred over bootstrap; recommendations already flow into artifacts via `expectedMetrics`)\\n- `dec\"\n  }\n]\nChanged files:\n[]\nLinked chain ids:\n[\"evidence-chain-comment_to_commit-862c2ff69f479c29\"]\nSource graph evidence:\nSource evidence repo graph summary\nRepo: timogilvie/wavemill\nGraph label: source_backed_multi_signal_graph\nNodes: 10\nEdges: 12\nNode types: {\"cooccurrence_profile\": 1, \"github_repo_summary\": 1, \"helicopter_repo_view\": 4, \"repo\": 1, \"source_artifact\": 2, \"source_bundle\": 1}\nEdge types: {\"artifact_needs_claim_verification\": 1, \"artifact_supports_verification\": 1, \"repo_has_cooccurrence_profile\": 1, \"repo_has_github_evidence_summary\": 1, \"repo_has_graphs_helicopter_view\": 2, \"repo_has_schemas_helicopter_view\": 2, \"repo_has_source_artifact\": 2, \"repo_has_source_bundle\": 1, \"source_bundle_uses_cooccur\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/timogilvie/wavemill", "source_id": "comment-chain-pattern-assumption_checks-916cc38b62d2848a", "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": "timogilvie/wavemill", "source_dataset": "comment_chain_patterns/assumption_checks", "training_usage": "gold_candidate"}}}, {"ruleId": "foundry_assumption_check", "level": "warning", "message": {"text": "Foundry mined assumption checks: timogilvie/wavemill"}, "properties": {"repobilityId": 382872, "scanner": "foundry_dataset", "fingerprint": "2f4f14f61c1746c4dce2ae3fc5d4ce0d538deafe83af7a01b79da631927a99f4", "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": "timogilvie/wavemill#717", "human_labels": ["test_ci_gap"], "issue_number": "717", "thread_label": "thread_has_human_issue_and_fix_context", "outcome_label": "ambiguous_needs_more_evidence", "source_backed": true, "max_confidence": 0.9, "repo_full_name": "timogilvie/wavemill", "training_usage": "gold_candidate", "confidence_tier": "high_confidence", "source_chain_id": "evidence-chain-issue_chain-006f956c67b16a57", "helicopter_views": {"graphs": 2, "schemas": 2}, "artifact_families": {"docs": 1, "schemas": 1}, "source_chain_kind": "issue_chain", "changed_file_count": 0, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {}, "linked_commit_count": 5, "helicopter_view_count": 4, "source_artifact_count": 2, "classification_reasons": ["source_graph_has_real_artifacts", "source_graph_has_verification_artifacts", "repo_has_isolated_helicopter_views", "link_quality_high_confidence", "high_risk_human_feedback_label"], "linked_ci_commit_count": 0, "verification_artifact_count": 1, "design_schema_api_artifact_count": 1}, "text": "Comment chain pattern product: assumption_checks\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#717\nOutcome: ambiguous_needs_more_evidence\nThread label: thread_has_human_issue_and_fix_context\nSource graph label: source_backed_multi_signal_graph\nReasons: source_graph_has_real_artifacts, source_graph_has_verification_artifacts, repo_has_isolated_helicopter_views, link_quality_high_confidence, high_risk_human_feedback_label\nChain evidence:\nIssue/PR evidence chain: timogilvie/wavemill#717\nRepo: timogilvie/wavemill\nThread label: thread_has_human_issue_and_fix_context\nOutcome: ambiguous_needs_more_evidence\nComment count: 1\nLinked commit count: 5\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 0\nLabels: {'test_ci_gap': 1}\nPolarities: {'bad': 1}\nChanged file labels: {}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-c2ed448bebbfe33a\",\n    \"kind\": \"pull_request_body\",\n    \"label\": \"test_ci_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/timogilvie/wavemill/pull/717\",\n    \"text\": \"GitHub feedback: test_ci_gap\\nPolarity: bad\\nKind: pull_request_body\\nRepo: timogilvie/wavemill\\nAuthor: timogilvie (User)\\nURL: https://github.com/timogilvie/wavemill/pull/717\\nTitle: Derive workflow-router model ladders from the model registry (HOK-2188)\\nBody:\\nImplements [HOK-2188](https://linear.app/hokusai/issue/HOK-2188) \u2014 first of the router-diversity series.\\n\\n## Why\\n\\n`workflow-router.ts` had four sets of hardcoded model preference lists that predated newer models and silently excluded them from heuristic routing: `DEFAULT_MODEL_POOL`, the `pickAvailableModel` stage ladders in `routeWorkflow()`, the `downgradeModelsForBudget()` tiers, and the `applyDifficultyFloor()` upgrade lists (plus a hardcoded haiku fallback in `getCheapestOption()`). They duplicated \u2014 inconsistently \u2014 the ladders that already exist in `model-registry.ts`, so adding a model to the registry (e.g. `claude-fable-5` in #715) did not propagate to heuristic routing. This is a major reason routing kept collapsing to the same model trio.\\n\\n## What changed\\n\\n- **`registryModelPool()`** builds the base pool from all enabled registry models, honoring `modelRegistry` config overrides \u2014 replaces `DEFAULT_MODEL_POOL`\\n- **`lad\"\n  }\n]\nChanged files:\n[]\nLinked chain ids:\n[\"evidence-chain-comment_to_commit-3dc3b9a166c5cf76\"]\nSource graph evidence:\nSource evidence repo graph summary\nRepo: timogilvie/wavemill\nGraph label: source_backed_multi_signal_graph\nNodes: 10\nEdges: 12\nNode types: {\"cooccurrence_profile\": 1, \"github_repo_summary\": 1, \"helicopter_repo_view\": 4, \"repo\": 1, \"source_artifact\": 2, \"source_bundle\": 1}\nEdge types: {\"artifact_needs_claim_verification\": 1, \"artifact_supports_verification\": 1, \"repo_has_cooccurrence_profile\": 1, \"repo_has_github_evidence_summary\": 1, \"repo_has_graphs_helicopter_view\": 2, \"repo_has_schemas_helicopter_view\": 2, \"repo_has_source_artifact\": 2, \"repo_has_source_bundle\": 1, \"source_bundle_uses_cooccurr\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/timogilvie/wavemill", "source_id": "comment-chain-pattern-assumption_checks-5fcc0452e631740f", "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": "timogilvie/wavemill", "source_dataset": "comment_chain_patterns/assumption_checks", "training_usage": "gold_candidate"}}}, {"ruleId": "foundry_assumption_check", "level": "warning", "message": {"text": "Foundry mined assumption checks: timogilvie/wavemill"}, "properties": {"repobilityId": 382871, "scanner": "foundry_dataset", "fingerprint": "648716f1bc08f4babd685ee5d2c21ec9472304dcf5534f5a088145d4fcf0defe", "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": "timogilvie/wavemill#715", "human_labels": ["agent_instruction_gap"], "issue_number": "715", "thread_label": "thread_has_human_issue_and_fix_context", "outcome_label": "ambiguous_needs_more_evidence", "source_backed": true, "max_confidence": 0.8, "repo_full_name": "timogilvie/wavemill", "training_usage": "gold_candidate", "confidence_tier": "high_confidence", "source_chain_id": "evidence-chain-issue_chain-18632eae471f00bf", "helicopter_views": {"graphs": 2, "schemas": 2}, "artifact_families": {"docs": 1, "schemas": 1}, "source_chain_kind": "issue_chain", "changed_file_count": 0, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {}, "linked_commit_count": 2, "helicopter_view_count": 4, "source_artifact_count": 2, "classification_reasons": ["source_graph_has_real_artifacts", "source_graph_has_verification_artifacts", "repo_has_isolated_helicopter_views", "link_quality_high_confidence"], "linked_ci_commit_count": 0, "verification_artifact_count": 1, "design_schema_api_artifact_count": 1}, "text": "Comment chain pattern product: assumption_checks\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#715\nOutcome: ambiguous_needs_more_evidence\nThread label: thread_has_human_issue_and_fix_context\nSource graph label: source_backed_multi_signal_graph\nReasons: source_graph_has_real_artifacts, source_graph_has_verification_artifacts, repo_has_isolated_helicopter_views, link_quality_high_confidence\nChain evidence:\nIssue/PR evidence chain: timogilvie/wavemill#715\nRepo: timogilvie/wavemill\nThread label: thread_has_human_issue_and_fix_context\nOutcome: ambiguous_needs_more_evidence\nComment count: 1\nLinked commit count: 2\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 0\nLabels: {'agent_instruction_gap': 1}\nPolarities: {'bad': 1}\nChanged file labels: {}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-29d8e5b8fea7772a\",\n    \"kind\": \"pull_request_body\",\n    \"label\": \"agent_instruction_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/timogilvie/wavemill/pull/715\",\n    \"text\": \"GitHub feedback: agent_instruction_gap\\nPolarity: bad\\nKind: pull_request_body\\nRepo: timogilvie/wavemill\\nAuthor: timogilvie (User)\\nURL: https://github.com/timogilvie/wavemill/pull/715\\nTitle: Add Claude Fable 5 to the model registry as the Anthropic frontier option\\nBody:\\n## Summary\\n\\nAdds **Claude Fable 5** (`claude-fable-5`) to the wavemill model registry as Anthropic's frontier option, and ensures each model family resolves to its most advanced version (Fable 5, Opus 4.8, Sonnet 4.6, Haiku 4.5, GPT-5.5). Fable 5 and GPT-5.5 are the two frontier-class picks at the head of the intelligence-sensitive ladders.\\n\\n### Registry (`shared/lib/model-registry.ts`)\\n- New `claude-fable-5` entry: `frontier` class, $10/$50 per MTok ($12.50 cache write / $1.00 cache read), 1M context window, full tool support, vision, advanced reasoning tier. Quality scores (planning 99, coding 95, review 98) top both Opus 4.8 and GPT-5.5 so derived rankings agree with the configured ladders.\\n- New `fable` family alias \u2192 `claude-fable-5`.\\n- Ladders: Fable leads **planning**, **coding**, and **review** (GPT-5.5 second); in the cheap-task ladders (**routing**, **classify**) Fable sits in the escalation tail ahead of Op\"\n  }\n]\nChanged files:\n[]\nLinked chain ids:\n[\"evidence-chain-comment_to_commit-922397c7059ab3e7\"]\nSource graph evidence:\nSource evidence repo graph summary\nRepo: timogilvie/wavemill\nGraph label: source_backed_multi_signal_graph\nNodes: 10\nEdges: 12\nNode types: {\"cooccurrence_profile\": 1, \"github_repo_summary\": 1, \"helicopter_repo_view\": 4, \"repo\": 1, \"source_artifact\": 2, \"source_bundle\": 1}\nEdge types: {\"artifact_needs_claim_verification\": 1, \"artifact_supports_verification\": 1, \"repo_has_cooccurrence_profile\": 1, \"repo_has_github_evidence_summary\": 1, \"repo_has_graphs_helicopter_view\": 2, \"repo_has_schemas_helicopter_view\": 2, \"repo_has_source_artifact\": 2, \"repo_has_source_bundle\": 1, \"source_bundle_uses_cooccurrence_profile\":\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/timogilvie/wavemill", "source_id": "comment-chain-pattern-assumption_checks-a1f899cf214000dd", "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": "timogilvie/wavemill", "source_dataset": "comment_chain_patterns/assumption_checks", "training_usage": "gold_candidate"}}}, {"ruleId": "foundry_assumption_check", "level": "warning", "message": {"text": "Foundry mined assumption checks: timogilvie/wavemill"}, "properties": {"repobilityId": 382870, "scanner": "foundry_dataset", "fingerprint": "f6f6c1053355d6d71dfeabb5377746af39a0ce23f4fcec9b6c92fcebcd119f6b", "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": "timogilvie/wavemill#714", "human_labels": ["security_auth_secret"], "issue_number": "714", "thread_label": "thread_has_human_issue_and_fix_context", "outcome_label": "claimed_resolved_unverified", "source_backed": true, "max_confidence": 0.836, "repo_full_name": "timogilvie/wavemill", "training_usage": "gold_candidate", "confidence_tier": "high_confidence", "source_chain_id": "evidence-chain-issue_chain-76988cd77bca1601", "helicopter_views": {"graphs": 2, "schemas": 2}, "artifact_families": {"docs": 1, "schemas": 1}, "source_chain_kind": "issue_chain", "changed_file_count": 0, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {}, "linked_commit_count": 1, "helicopter_view_count": 4, "source_artifact_count": 2, "classification_reasons": ["source_graph_has_real_artifacts", "source_graph_has_verification_artifacts", "repo_has_isolated_helicopter_views", "link_quality_high_confidence", "high_risk_human_feedback_label"], "linked_ci_commit_count": 0, "verification_artifact_count": 1, "design_schema_api_artifact_count": 1}, "text": "Comment chain pattern product: assumption_checks\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#714\nOutcome: claimed_resolved_unverified\nThread label: thread_has_human_issue_and_fix_context\nSource graph label: source_backed_multi_signal_graph\nReasons: source_graph_has_real_artifacts, source_graph_has_verification_artifacts, repo_has_isolated_helicopter_views, link_quality_high_confidence, high_risk_human_feedback_label\nChain evidence:\nIssue/PR evidence chain: timogilvie/wavemill#714\nRepo: timogilvie/wavemill\nThread label: thread_has_human_issue_and_fix_context\nOutcome: claimed_resolved_unverified\nComment count: 1\nLinked commit count: 1\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 0\nLabels: {'security_auth_secret': 1}\nPolarities: {'bad': 1}\nChanged file labels: {}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-7d0d694618222a86\",\n    \"kind\": \"pull_request_body\",\n    \"label\": \"security_auth_secret\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/timogilvie/wavemill/pull/714\",\n    \"text\": \"GitHub feedback: security_auth_secret\\nPolarity: bad\\nKind: pull_request_body\\nRepo: timogilvie/wavemill\\nAuthor: timogilvie (User)\\nURL: https://github.com/timogilvie/wavemill/pull/714\\nTitle: Fix ready watchdog remediation launch paths\\nBody:\\n## Summary\\n- use the installed wavemill ready-watchdog tool path for remediation relaunches and recovery commands\\n- launch ready remediation through the generated monitor script in source-only mode instead of sourcing the full mill startup script\\n- avoid login-shell nvm/npm_config_prefix noise in the remediation child process\\n\\n## Validation\\n- node --test shared/lib/ready-watchdog.test.ts\\n- bash tests/check-shell.sh\"\n  }\n]\nChanged files:\n[]\nLinked chain ids:\n[\"evidence-chain-comment_to_commit-54ec471d37dab44c\"]\nSource graph evidence:\nSource evidence repo graph summary\nRepo: timogilvie/wavemill\nGraph label: source_backed_multi_signal_graph\nNodes: 10\nEdges: 12\nNode types: {\"cooccurrence_profile\": 1, \"github_repo_summary\": 1, \"helicopter_repo_view\": 4, \"repo\": 1, \"source_artifact\": 2, \"source_bundle\": 1}\nEdge types: {\"artifact_needs_claim_verification\": 1, \"artifact_supports_verification\": 1, \"repo_has_cooccurrence_profile\": 1, \"repo_has_github_evidence_summary\": 1, \"repo_has_graphs_helicopter_view\": 2, \"repo_has_schemas_helicopter_view\": 2, \"repo_has_source_artifact\": 2, \"repo_has_source_bundle\": 1, \"source_bundle_uses_cooccurrence_profile\": 1}\nArtifact families: {\"docs\": 1, \"schemas\": 1}\nHelicopter views: {\"graphs\": 2, \"schemas\": 2}\nBundle labels: {\"source_backed_fake_real_verification_bundle\": 1}\nCo-occurrence labels: {\"fake_real_data_plus_verification_gap\": 1}", "source": "foundry_mined_dataset", "repo_url": "https://github.com/timogilvie/wavemill", "source_id": "comment-chain-pattern-assumption_checks-e77a329b2ac7e03a", "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": "timogilvie/wavemill", "source_dataset": "comment_chain_patterns/assumption_checks", "training_usage": "gold_candidate"}}}, {"ruleId": "foundry_assumption_check", "level": "warning", "message": {"text": "Foundry mined assumption checks: timogilvie/wavemill"}, "properties": {"repobilityId": 382869, "scanner": "foundry_dataset", "fingerprint": "0d1abdc3a7853177eff592899849efbdce822f833069edd073e49d52c78f1fcd", "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": "timogilvie/wavemill#713", "human_labels": ["data_schema_persistence"], "issue_number": "713", "thread_label": "thread_has_human_issue_and_fix_context", "outcome_label": "claimed_resolved_unverified", "source_backed": true, "max_confidence": 0.836, "repo_full_name": "timogilvie/wavemill", "training_usage": "gold_candidate", "confidence_tier": "high_confidence", "source_chain_id": "evidence-chain-issue_chain-deebc2351986c47c", "helicopter_views": {"graphs": 2, "schemas": 2}, "artifact_families": {"docs": 1, "schemas": 1}, "source_chain_kind": "issue_chain", "changed_file_count": 0, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {}, "linked_commit_count": 2, "helicopter_view_count": 4, "source_artifact_count": 2, "classification_reasons": ["source_graph_has_real_artifacts", "source_graph_has_verification_artifacts", "repo_has_isolated_helicopter_views", "link_quality_high_confidence", "high_risk_human_feedback_label"], "linked_ci_commit_count": 0, "verification_artifact_count": 1, "design_schema_api_artifact_count": 1}, "text": "Comment chain pattern product: assumption_checks\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#713\nOutcome: claimed_resolved_unverified\nThread label: thread_has_human_issue_and_fix_context\nSource graph label: source_backed_multi_signal_graph\nReasons: source_graph_has_real_artifacts, source_graph_has_verification_artifacts, repo_has_isolated_helicopter_views, link_quality_high_confidence, high_risk_human_feedback_label\nChain evidence:\nIssue/PR evidence chain: timogilvie/wavemill#713\nRepo: timogilvie/wavemill\nThread label: thread_has_human_issue_and_fix_context\nOutcome: claimed_resolved_unverified\nComment count: 1\nLinked commit count: 2\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 0\nLabels: {'data_schema_persistence': 1}\nPolarities: {'bad': 1}\nChanged file labels: {}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-efa7328d600730ab\",\n    \"kind\": \"pull_request_body\",\n    \"label\": \"data_schema_persistence\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/timogilvie/wavemill/pull/713\",\n    \"text\": \"GitHub feedback: data_schema_persistence\\nPolarity: bad\\nKind: pull_request_body\\nRepo: timogilvie/wavemill\\nAuthor: timogilvie (User)\\nURL: https://github.com/timogilvie/wavemill/pull/713\\nTitle: Fix ready check for Alembic merge revisions\\nBody:\\n## Summary\\n- Parse Alembic revision metadata with type annotations, e.g. `revision: str = ...`\\n- Treat `down_revision` as zero, one, or many parent revisions so merge migrations with tuple/list parents are valid\\n- Update migration-chain and migration-base freshness graph traversal to use all parent revisions\\n\\n## Diagnosis\\nHOK-2085 was failing `migration-chain-integrity` because wavemill skipped valid Alembic files that used annotated assignments and tuple `down_revision` values. That made child revisions look unresolved even though the migration chain was valid.\\n\\n## Verification\\n- `node --test shared/lib/ready-stage.test.ts`\\n- Patched diagnostic run against `/Users/timothyogilvie/Dropbox/Hokusai/worktrees/attributeerror-apikey-object-has-no-attribute-id-` for PR 137 returned `migration-chain-integrity: pass`; overall verdict was `warn` only due to baseline-discovery suggestions.\"\n  }\n]\nChanged files:\n[]\nLinked chain ids:\n[\"evidence-chain-comment_to_commit-51e7f15cc17a8ef0\"]\nSource graph evidence:\nSource evidence repo graph summary\nRepo: timogilvie/wavemill\nGraph label: source_backed_multi_signal_graph\nNodes: 10\nEdges: 12\nNode types: {\"cooccurrence_profile\": 1, \"github_repo_summary\": 1, \"helicopter_repo_view\": 4, \"repo\": 1, \"source_artifact\": 2, \"source_bundle\": 1}\nEdge types: {\"artifact_needs_claim_verification\": 1, \"artifact_supports_verification\": 1, \"repo_has_cooccurrence_profile\": 1, \"repo_has_github_evidence_summary\": 1, \"repo_has_graphs_helicopter_view\": 2, \"repo_has_schemas_helicopter_view\": 2, \"repo_has_source_artifact\": 2, \"repo_has_source_bundle\": 1, \"source_bundle_uses_cooccurrence_profile\": 1}\nArtifact families: {\"docs\": 1\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/timogilvie/wavemill", "source_id": "comment-chain-pattern-assumption_checks-670aff3426b76348", "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": "timogilvie/wavemill", "source_dataset": "comment_chain_patterns/assumption_checks", "training_usage": "gold_candidate"}}}, {"ruleId": "foundry_assumption_check", "level": "warning", "message": {"text": "Foundry mined assumption checks: timogilvie/wavemill"}, "properties": {"repobilityId": 382868, "scanner": "foundry_dataset", "fingerprint": "15a1f6133850d38c0f0f222fe23d1ae4ad012829f2454d7dca16f6880ec41148", "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": "timogilvie/wavemill#712", "human_labels": ["security_auth_secret"], "issue_number": "712", "thread_label": "thread_has_human_issue_and_fix_context", "outcome_label": "ambiguous_needs_more_evidence", "source_backed": true, "max_confidence": 0.736, "repo_full_name": "timogilvie/wavemill", "training_usage": "weak_supervision", "confidence_tier": "weak_supervision", "source_chain_id": "evidence-chain-issue_chain-dda55aa56e31600b", "helicopter_views": {"graphs": 2, "schemas": 2}, "artifact_families": {"docs": 1, "schemas": 1}, "source_chain_kind": "issue_chain", "changed_file_count": 0, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {}, "linked_commit_count": 1, "helicopter_view_count": 4, "source_artifact_count": 2, "classification_reasons": ["source_graph_has_real_artifacts", "source_graph_has_verification_artifacts", "repo_has_isolated_helicopter_views", "link_quality_weak_supervision", "high_risk_human_feedback_label"], "linked_ci_commit_count": 0, "verification_artifact_count": 1, "design_schema_api_artifact_count": 1}, "text": "Comment chain pattern product: assumption_checks\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#712\nOutcome: ambiguous_needs_more_evidence\nThread label: thread_has_human_issue_and_fix_context\nSource graph label: source_backed_multi_signal_graph\nReasons: source_graph_has_real_artifacts, source_graph_has_verification_artifacts, repo_has_isolated_helicopter_views, link_quality_weak_supervision, high_risk_human_feedback_label\nChain evidence:\nIssue/PR evidence chain: timogilvie/wavemill#712\nRepo: timogilvie/wavemill\nThread label: thread_has_human_issue_and_fix_context\nOutcome: ambiguous_needs_more_evidence\nComment count: 1\nLinked commit count: 1\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 0\nLabels: {'security_auth_secret': 1}\nPolarities: {'bad': 1}\nChanged file labels: {}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-fd7941f8eac0ad62\",\n    \"kind\": \"pull_request_body\",\n    \"label\": \"security_auth_secret\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/timogilvie/wavemill/pull/712\",\n    \"text\": \"GitHub feedback: security_auth_secret\\nPolarity: bad\\nKind: pull_request_body\\nRepo: timogilvie/wavemill\\nAuthor: timogilvie (User)\\nURL: https://github.com/timogilvie/wavemill/pull/712\\nTitle: Improve guided wavemill init setup\\nBody:\\n## Summary\\n- Add a guided first-run setup flow for `wavemill init`\\n- Detect Linear and Hokusai credentials from env or `.env` without writing secrets to config\\n- Prompt for Linear project, parallel task count, review, integration/merge queue, Hokusai routing, and data contribution defaults\\n- Generate config that only enables Hokusai router settings when the user opts in\\n\\n## Verification\\n- `bash -n wavemill`\\n- scratch default `wavemill init` JSON parse\\n- generated config schema validation for default and Hokusai opt-in paths\\n- `node --test tests/cli-smoke.test.ts`\"\n  }\n]\nChanged files:\n[]\nLinked chain ids:\n[\"evidence-chain-comment_to_commit-d5c700c21548514a\"]\nSource graph evidence:\nSource evidence repo graph summary\nRepo: timogilvie/wavemill\nGraph label: source_backed_multi_signal_graph\nNodes: 10\nEdges: 12\nNode types: {\"cooccurrence_profile\": 1, \"github_repo_summary\": 1, \"helicopter_repo_view\": 4, \"repo\": 1, \"source_artifact\": 2, \"source_bundle\": 1}\nEdge types: {\"artifact_needs_claim_verification\": 1, \"artifact_supports_verification\": 1, \"repo_has_cooccurrence_profile\": 1, \"repo_has_github_evidence_summary\": 1, \"repo_has_graphs_helicopter_view\": 2, \"repo_has_schemas_helicopter_view\": 2, \"repo_has_source_artifact\": 2, \"repo_has_source_bundle\": 1, \"source_bundle_uses_cooccurrence_profile\": 1}\nArtifact families: {\"docs\": 1, \"schemas\": 1}\nHelicopter views: {\"graphs\": 2, \"schemas\": 2}\nBundle labels: {\"source_backed_fake_real_verification_bundle\": 1}\nCo-occurrence labels: {\"fake_real_data_plus_verification_gap\": 1}", "source": "foundry_mined_dataset", "repo_url": "https://github.com/timogilvie/wavemill", "source_id": "comment-chain-pattern-assumption_checks-c28d0c9a44fb1fd6", "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": "timogilvie/wavemill", "source_dataset": "comment_chain_patterns/assumption_checks", "training_usage": "weak_supervision"}}}, {"ruleId": "foundry_assumption_check", "level": "warning", "message": {"text": "Foundry mined assumption checks: timogilvie/wavemill"}, "properties": {"repobilityId": 382867, "scanner": "foundry_dataset", "fingerprint": "fb121b7a571b2a92edec09f27638c561f7e45e987b8039f6f4d20125a1e75336", "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": "timogilvie/wavemill#709", "human_labels": ["data_schema_persistence"], "issue_number": "709", "thread_label": "thread_has_human_issue_and_fix_context", "outcome_label": "ambiguous_needs_more_evidence", "source_backed": true, "max_confidence": 0.9, "repo_full_name": "timogilvie/wavemill", "training_usage": "gold_candidate", "confidence_tier": "high_confidence", "source_chain_id": "evidence-chain-issue_chain-8c44264a82fb15bf", "helicopter_views": {"graphs": 2, "schemas": 2}, "artifact_families": {"docs": 1, "schemas": 1}, "source_chain_kind": "issue_chain", "changed_file_count": 0, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {}, "linked_commit_count": 5, "helicopter_view_count": 4, "source_artifact_count": 2, "classification_reasons": ["source_graph_has_real_artifacts", "source_graph_has_verification_artifacts", "repo_has_isolated_helicopter_views", "link_quality_high_confidence", "high_risk_human_feedback_label"], "linked_ci_commit_count": 0, "verification_artifact_count": 1, "design_schema_api_artifact_count": 1}, "text": "Comment chain pattern product: assumption_checks\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#709\nOutcome: ambiguous_needs_more_evidence\nThread label: thread_has_human_issue_and_fix_context\nSource graph label: source_backed_multi_signal_graph\nReasons: source_graph_has_real_artifacts, source_graph_has_verification_artifacts, repo_has_isolated_helicopter_views, link_quality_high_confidence, high_risk_human_feedback_label\nChain evidence:\nIssue/PR evidence chain: timogilvie/wavemill#709\nRepo: timogilvie/wavemill\nThread label: thread_has_human_issue_and_fix_context\nOutcome: ambiguous_needs_more_evidence\nComment count: 1\nLinked commit count: 5\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 0\nLabels: {'data_schema_persistence': 1}\nPolarities: {'bad': 1}\nChanged file labels: {}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-b64e220ec9dec612\",\n    \"kind\": \"pull_request_body\",\n    \"label\": \"data_schema_persistence\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/timogilvie/wavemill/pull/709\",\n    \"text\": \"GitHub feedback: data_schema_persistence\\nPolarity: bad\\nKind: pull_request_body\\nRepo: timogilvie/wavemill\\nAuthor: timogilvie (User)\\nURL: https://github.com/timogilvie/wavemill/pull/709\\nTitle: HOK-2047: Detect stale Alembic base heads before ready\\nBody:\\n## Summary\\n- Before ready runs migration validation, refresh the base branch and check whether the task branch's down_revision still points at the latest base Alembic head.\\n- When `origin/<base>` adds a new revision after branch creation, emit a stale-base diagnostic that lists the current base head, the branch revision, and the required remediation (rebase + bump `down_revision`).\\n- Closes HOK-2047 \u2014 coding-agent-validated `alembic heads` is no longer sufficient when origin advances between coding-complete and ready.\\n\\n## Changes\\n- `shared/lib/ready-stage.ts` \u2014 Add `collectBaseMigrationFiles` and base-head detection logic; surface a typed stale-base diagnostic from the migration validation path.\\n- `shared/lib/ready-stage.test.ts` \u2014 Cover the core acceptance case (main advances 043 \u2192 044 while branch has 045 \u2192 043), plus fast-forward (no drift), branch-ahead (no stale), and ls-tree-failure fallbacks.\\n- `docs/ready-stage.md` \u2014 Document \"\n  }\n]\nChanged files:\n[]\nLinked chain ids:\n[\"evidence-chain-comment_to_commit-0ecd3d5ded743d40\"]\nSource graph evidence:\nSource evidence repo graph summary\nRepo: timogilvie/wavemill\nGraph label: source_backed_multi_signal_graph\nNodes: 10\nEdges: 12\nNode types: {\"cooccurrence_profile\": 1, \"github_repo_summary\": 1, \"helicopter_repo_view\": 4, \"repo\": 1, \"source_artifact\": 2, \"source_bundle\": 1}\nEdge types: {\"artifact_needs_claim_verification\": 1, \"artifact_supports_verification\": 1, \"repo_has_cooccurrence_profile\": 1, \"repo_has_github_evidence_summary\": 1, \"repo_has_graphs_helicopter_view\": 2, \"repo_has_schemas_helicopter_view\": 2, \"repo_has_source_artifact\": 2, \"repo_has_source_bundle\": 1, \"sour\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/timogilvie/wavemill", "source_id": "comment-chain-pattern-assumption_checks-bee2577c5cf3f099", "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": "timogilvie/wavemill", "source_dataset": "comment_chain_patterns/assumption_checks", "training_usage": "gold_candidate"}}}, {"ruleId": "foundry_assumption_check", "level": "warning", "message": {"text": "Foundry mined assumption checks: timogilvie/wavemill"}, "properties": {"repobilityId": 382866, "scanner": "foundry_dataset", "fingerprint": "82967d6d6590e4c8d774fcebed94281adea4e0e661e3b9cab725cc6e78456a4a", "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": "timogilvie/wavemill#706", "human_labels": ["test_ci_gap"], "issue_number": "706", "thread_label": "thread_has_human_issue_and_fix_context", "outcome_label": "ambiguous_needs_more_evidence", "source_backed": true, "max_confidence": 0.9, "repo_full_name": "timogilvie/wavemill", "training_usage": "gold_candidate", "confidence_tier": "high_confidence", "source_chain_id": "evidence-chain-issue_chain-4faab5348a5778dd", "helicopter_views": {"graphs": 2, "schemas": 2}, "artifact_families": {"docs": 1, "schemas": 1}, "source_chain_kind": "issue_chain", "changed_file_count": 0, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {}, "linked_commit_count": 5, "helicopter_view_count": 4, "source_artifact_count": 2, "classification_reasons": ["source_graph_has_real_artifacts", "source_graph_has_verification_artifacts", "repo_has_isolated_helicopter_views", "link_quality_high_confidence", "high_risk_human_feedback_label"], "linked_ci_commit_count": 0, "verification_artifact_count": 1, "design_schema_api_artifact_count": 1}, "text": "Comment chain pattern product: assumption_checks\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#706\nOutcome: ambiguous_needs_more_evidence\nThread label: thread_has_human_issue_and_fix_context\nSource graph label: source_backed_multi_signal_graph\nReasons: source_graph_has_real_artifacts, source_graph_has_verification_artifacts, repo_has_isolated_helicopter_views, link_quality_high_confidence, high_risk_human_feedback_label\nChain evidence:\nIssue/PR evidence chain: timogilvie/wavemill#706\nRepo: timogilvie/wavemill\nThread label: thread_has_human_issue_and_fix_context\nOutcome: ambiguous_needs_more_evidence\nComment count: 1\nLinked commit count: 5\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 0\nLabels: {'test_ci_gap': 1}\nPolarities: {'bad': 1}\nChanged file labels: {}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-0bd4921247cc7e94\",\n    \"kind\": \"pull_request_body\",\n    \"label\": \"test_ci_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/timogilvie/wavemill/pull/706\",\n    \"text\": \"GitHub feedback: test_ci_gap\\nPolarity: bad\\nKind: pull_request_body\\nRepo: timogilvie/wavemill\\nAuthor: timogilvie (User)\\nURL: https://github.com/timogilvie/wavemill/pull/706\\nTitle: HOK-2045: Launch bounded remediation for stable failing CI checks\\nBody:\\n## Summary\\n- Ready watchdog now launches a bounded ready-remediation attempt when a PR's GitHub checks are *completed and failing* (e.g. `Alembic Check (FAILURE)`), not only when the in-loop ready runner fails.\\n- Reuses the existing ready remediation prompt, attempt counter, and current-head in-flight guard, so the watchdog path never bypasses the same caps as the ready runner.\\n- Two-tick stability gate: a failing-check fingerprint must be observed twice before a launch fires, so flaky/transient failures still wait/retry. Pending checks remain wait-only.\\n- Records the action in the watchdog state and append-only audit log so each tick reports whether it `reported`, `auto-recovered`, `waiting-on-ci-stabilizing`, `launched-remediation`, `remediation-in-flight`, `remediation-exhausted`, or `remediation-launch-failed`.\\n\\n## Changes\\n- `shared/lib/ready-watchdog.ts` \u2014 Add `autoRemediable` classification flag for completed failing checks, two-\"\n  }\n]\nChanged files:\n[]\nLinked chain ids:\n[\"evidence-chain-comment_to_commit-03c9b6bab8ea5cfb\"]\nSource graph evidence:\nSource evidence repo graph summary\nRepo: timogilvie/wavemill\nGraph label: source_backed_multi_signal_graph\nNodes: 10\nEdges: 12\nNode types: {\"cooccurrence_profile\": 1, \"github_repo_summary\": 1, \"helicopter_repo_view\": 4, \"repo\": 1, \"source_artifact\": 2, \"source_bundle\": 1}\nEdge types: {\"artifact_needs_claim_verification\": 1, \"artifact_supports_verification\": 1, \"repo_has_cooccurrence_profile\": 1, \"repo_has_github_evidence_summary\": 1, \"repo_has_graphs_helicopter_view\": 2, \"repo_has_schemas_helicopter_view\": 2, \"repo_has_source_artifact\": 2, \"repo_has_source_bundle\": 1, \"source_bundle_uses_cooccurren\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/timogilvie/wavemill", "source_id": "comment-chain-pattern-assumption_checks-c062629630c3f6ba", "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": "timogilvie/wavemill", "source_dataset": "comment_chain_patterns/assumption_checks", "training_usage": "gold_candidate"}}}, {"ruleId": "foundry_assumption_check", "level": "warning", "message": {"text": "Foundry mined assumption checks: timogilvie/wavemill"}, "properties": {"repobilityId": 382865, "scanner": "foundry_dataset", "fingerprint": "0cf8213305ab27678ae5412323a0b013f131f30687afb8a46483651bda4e49c3", "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": "timogilvie/wavemill#701", "human_labels": ["api_integration_gap"], "issue_number": "701", "thread_label": "thread_has_human_issue_and_fix_context", "outcome_label": "ambiguous_needs_more_evidence", "source_backed": true, "max_confidence": 0.9, "repo_full_name": "timogilvie/wavemill", "training_usage": "gold_candidate", "confidence_tier": "high_confidence", "source_chain_id": "evidence-chain-issue_chain-9a0c431fd6602793", "helicopter_views": {"graphs": 2, "schemas": 2}, "artifact_families": {"docs": 1, "schemas": 1}, "source_chain_kind": "issue_chain", "changed_file_count": 0, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {}, "linked_commit_count": 5, "helicopter_view_count": 4, "source_artifact_count": 2, "classification_reasons": ["source_graph_has_real_artifacts", "source_graph_has_verification_artifacts", "repo_has_isolated_helicopter_views", "link_quality_high_confidence", "high_risk_human_feedback_label"], "linked_ci_commit_count": 0, "verification_artifact_count": 1, "design_schema_api_artifact_count": 1}, "text": "Comment chain pattern product: assumption_checks\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#701\nOutcome: ambiguous_needs_more_evidence\nThread label: thread_has_human_issue_and_fix_context\nSource graph label: source_backed_multi_signal_graph\nReasons: source_graph_has_real_artifacts, source_graph_has_verification_artifacts, repo_has_isolated_helicopter_views, link_quality_high_confidence, high_risk_human_feedback_label\nChain evidence:\nIssue/PR evidence chain: timogilvie/wavemill#701\nRepo: timogilvie/wavemill\nThread label: thread_has_human_issue_and_fix_context\nOutcome: ambiguous_needs_more_evidence\nComment count: 1\nLinked commit count: 5\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 0\nLabels: {'api_integration_gap': 1}\nPolarities: {'bad': 1}\nChanged file labels: {}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-638661b1fbe317e0\",\n    \"kind\": \"pull_request_body\",\n    \"label\": \"api_integration_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/timogilvie/wavemill/pull/701\",\n    \"text\": \"GitHub feedback: api_integration_gap\\nPolarity: bad\\nKind: pull_request_body\\nRepo: timogilvie/wavemill\\nAuthor: timogilvie (User)\\nURL: https://github.com/timogilvie/wavemill/pull/701\\nTitle: HOK-2043: Pass repo base config into ready cross-PR revert guard\\nBody:\\n## Summary\\n\\n- Fixes `cross_pr_revert_gate_allows_merge` failing with `fatal: Not a valid object name auto/integration` when a task worktree lacks `.wavemill-config*.json` and the controller's configured integration branch (e.g., `main`) does not exist as that name inside the worktree.\\n- Plumbs the resolved mill `base_branch` from `launch_ready_phase` into the guard, which forwards it to `tools/check-cross-pr-reverts.ts` as `--integration-ref` so the checker no longer falls back to the package-default `auto/integration` based on the worktree's missing config.\\n- Adds regression coverage for both the helper invocation (no config + `--integration-ref main`) and the launch-time call chain.\\n\\n## Changes\\n\\n- `shared/lib/wavemill-mill.sh` \u2014 `cross_pr_revert_gate_allows_merge` now accepts an optional `base_branch` and appends `--integration-ref <base>` when provided; `launch_ready_phase` passes its already-resolved `$base_branch`.\\n- `tools\"\n  }\n]\nChanged files:\n[]\nLinked chain ids:\n[\"evidence-chain-comment_to_commit-59ae4369f4951f52\"]\nSource graph evidence:\nSource evidence repo graph summary\nRepo: timogilvie/wavemill\nGraph label: source_backed_multi_signal_graph\nNodes: 10\nEdges: 12\nNode types: {\"cooccurrence_profile\": 1, \"github_repo_summary\": 1, \"helicopter_repo_view\": 4, \"repo\": 1, \"source_artifact\": 2, \"source_bundle\": 1}\nEdge types: {\"artifact_needs_claim_verification\": 1, \"artifact_supports_verification\": 1, \"repo_has_cooccurrence_profile\": 1, \"repo_has_github_evidence_summary\": 1, \"repo_has_graphs_helicopter_view\": 2, \"repo_has_schemas_helicopter_view\": 2, \"repo_has_source_artifact\": 2, \"repo_has_source_bundle\": 1, \"source_bund\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/timogilvie/wavemill", "source_id": "comment-chain-pattern-assumption_checks-0b82e9c52ce28dd9", "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": "timogilvie/wavemill", "source_dataset": "comment_chain_patterns/assumption_checks", "training_usage": "gold_candidate"}}}, {"ruleId": "foundry_assumption_check", "level": "warning", "message": {"text": "Foundry mined assumption checks: timogilvie/wavemill"}, "properties": {"repobilityId": 382864, "scanner": "foundry_dataset", "fingerprint": "125cbd841ece8dffc442fd9c9ce51bba05f754cb69c1113a74dda0ac12afcc1c", "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": "timogilvie/wavemill#670", "human_labels": ["build_install_failure"], "issue_number": "670", "thread_label": "thread_has_human_issue_and_fix_context", "outcome_label": "ambiguous_needs_more_evidence", "source_backed": true, "max_confidence": 0.9, "repo_full_name": "timogilvie/wavemill", "training_usage": "gold_candidate", "confidence_tier": "high_confidence", "source_chain_id": "evidence-chain-issue_chain-2307a57144080bfe", "helicopter_views": {"graphs": 2, "schemas": 2}, "artifact_families": {"docs": 1, "schemas": 1}, "source_chain_kind": "issue_chain", "changed_file_count": 0, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {}, "linked_commit_count": 5, "helicopter_view_count": 4, "source_artifact_count": 2, "classification_reasons": ["source_graph_has_real_artifacts", "source_graph_has_verification_artifacts", "repo_has_isolated_helicopter_views", "link_quality_high_confidence"], "linked_ci_commit_count": 0, "verification_artifact_count": 1, "design_schema_api_artifact_count": 1}, "text": "Comment chain pattern product: assumption_checks\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#670\nOutcome: ambiguous_needs_more_evidence\nThread label: thread_has_human_issue_and_fix_context\nSource graph label: source_backed_multi_signal_graph\nReasons: source_graph_has_real_artifacts, source_graph_has_verification_artifacts, repo_has_isolated_helicopter_views, link_quality_high_confidence\nChain evidence:\nIssue/PR evidence chain: timogilvie/wavemill#670\nRepo: timogilvie/wavemill\nThread label: thread_has_human_issue_and_fix_context\nOutcome: ambiguous_needs_more_evidence\nComment count: 1\nLinked commit count: 5\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 0\nLabels: {'build_install_failure': 1}\nPolarities: {'bad': 1}\nChanged file labels: {}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-ca66ad9ee4a23f2e\",\n    \"kind\": \"pull_request_body\",\n    \"label\": \"build_install_failure\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/timogilvie/wavemill/pull/670\",\n    \"text\": \"GitHub feedback: build_install_failure\\nPolarity: bad\\nKind: pull_request_body\\nRepo: timogilvie/wavemill\\nAuthor: timogilvie (User)\\nURL: https://github.com/timogilvie/wavemill/pull/670\\nTitle: HOK-1789_c: Move tmux window creation before dependency install\\nBody:\\n## Summary\\n\\n- Reorders startup so tmux task windows are created **before** dependency installation, eliminating the 10\u2013120 second hang users saw when some worktrees needed fresh installs\\n- Replaces the monolithic `ensure_worktree_dependencies` helper with two focused functions: `_detect_worktree_pm` (detection only) and `ensure_worktree_dependencies_in_pane` (runs install inside the already-visible task pane)\\n- Agents are gated on a per-task sentinel file so they never launch before deps are ready; install failures keep the pane open for inspection and call `startup_phase_failed` cleanly\\n- New startup ordering: `worktree \u2192 pretrust \u2192 tmux window \u2192 deps install (in pane) \u2192 agent`\\n\\n## Changes\\n\\n- `shared/lib/wavemill-startup-runner.sh` \u2014 Core ordering change: window creation moved before dependency install; two new helpers replace the old monolithic helper; sentinel-based agent gate\\n- `tests/fixtures/startup/startup_window_before_\"\n  }\n]\nChanged files:\n[]\nLinked chain ids:\n[\"evidence-chain-comment_to_commit-2534fc45ea535f70\"]\nSource graph evidence:\nSource evidence repo graph summary\nRepo: timogilvie/wavemill\nGraph label: source_backed_multi_signal_graph\nNodes: 10\nEdges: 12\nNode types: {\"cooccurrence_profile\": 1, \"github_repo_summary\": 1, \"helicopter_repo_view\": 4, \"repo\": 1, \"source_artifact\": 2, \"source_bundle\": 1}\nEdge types: {\"artifact_needs_claim_verification\": 1, \"artifact_supports_verification\": 1, \"repo_has_cooccurrence_profile\": 1, \"repo_has_github_evidence_summary\": 1, \"repo_has_graphs_helicopter_view\": 2, \"repo_has_schemas_helicopter_view\": 2, \"repo_has_source_artifact\": 2, \"repo_has_source_bundle\": 1, \"source_bundle_uses_cooccurrence_profil\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/timogilvie/wavemill", "source_id": "comment-chain-pattern-assumption_checks-b3a36c25d44acd3a", "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": "timogilvie/wavemill", "source_dataset": "comment_chain_patterns/assumption_checks", "training_usage": "gold_candidate"}}}, {"ruleId": "foundry_assumption_check", "level": "warning", "message": {"text": "Foundry mined assumption checks: timogilvie/wavemill"}, "properties": {"repobilityId": 382863, "scanner": "foundry_dataset", "fingerprint": "ba6c8a5c40b0897b291434a5a8570b782f56c820ead07f3ce93ba63f94829f2a", "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": "timogilvie/wavemill#548", "human_labels": ["test_ci_gap"], "issue_number": "548", "thread_label": "thread_has_human_issue_and_fix_context", "outcome_label": "ambiguous_needs_more_evidence", "source_backed": true, "max_confidence": 0.65, "repo_full_name": "timogilvie/wavemill", "training_usage": "weak_supervision", "confidence_tier": "weak_supervision", "source_chain_id": "evidence-chain-issue_chain-193b21d0d21bf487", "helicopter_views": {"graphs": 2, "schemas": 2}, "artifact_families": {"docs": 1, "schemas": 1}, "source_chain_kind": "issue_chain", "changed_file_count": 0, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {}, "linked_commit_count": 5, "helicopter_view_count": 4, "source_artifact_count": 2, "classification_reasons": ["source_graph_has_real_artifacts", "source_graph_has_verification_artifacts", "repo_has_isolated_helicopter_views", "link_quality_weak_supervision", "high_risk_human_feedback_label"], "linked_ci_commit_count": 0, "verification_artifact_count": 1, "design_schema_api_artifact_count": 1}, "text": "Comment chain pattern product: assumption_checks\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#548\nOutcome: ambiguous_needs_more_evidence\nThread label: thread_has_human_issue_and_fix_context\nSource graph label: source_backed_multi_signal_graph\nReasons: source_graph_has_real_artifacts, source_graph_has_verification_artifacts, repo_has_isolated_helicopter_views, link_quality_weak_supervision, high_risk_human_feedback_label\nChain evidence:\nIssue/PR evidence chain: timogilvie/wavemill#548\nRepo: timogilvie/wavemill\nThread label: thread_has_human_issue_and_fix_context\nOutcome: ambiguous_needs_more_evidence\nComment count: 1\nLinked commit count: 5\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 0\nLabels: {'test_ci_gap': 1}\nPolarities: {'bad': 1}\nChanged file labels: {}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-69633e036c6caea8\",\n    \"kind\": \"pull_request_body\",\n    \"label\": \"test_ci_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/timogilvie/wavemill/pull/548\",\n    \"text\": \"GitHub feedback: test_ci_gap\\nPolarity: bad\\nKind: pull_request_body\\nRepo: timogilvie/wavemill\\nAuthor: timogilvie (User)\\nURL: https://github.com/timogilvie/wavemill/pull/548\\nTitle: HOK-1552: Record real router policy and schema versions in eval records\\nBody:\\n## Summary\\n\\n- Replaces the hard-coded `decisionPolicyVersion: baseline` default in routing decisions with version identifiers derived from real route provenance (heuristic, stage-aware, hokusai, expanded-route, constrained/survival, policy, baseline)\\n- Introduces `resolveRouterPolicyVersion()` in `route-artifact.ts` as a single, testable mapping function for all route-to-policy-version translations\\n- Adds `routeArtifactSchemaVersion`, `policyResolverVersion`, `routeMode`, and `operatingModeDependency` fields to `RoutingDecision` in the eval schema so attribution is machine-readable\\n- Guards `attachRouterPolicyMetadata` against overwriting a correct `decisionPolicyVersion` with `baseline` when no provenance data is available\\n\\n## Changes\\n\\n- `shared/lib/route-artifact.ts` \u2014 `RouterPolicyVersion` union, `ROUTE_ARTIFACT_SCHEMA_VERSION`, `POLICY_RESOLVER_VERSION` constants, `resolveRouterPolicyVersion()` function, `RouterPolicyMetadata\"\n  }\n]\nChanged files:\n[]\nLinked chain ids:\n[\"evidence-chain-comment_to_commit-9d3b6f510caace97\"]\nSource graph evidence:\nSource evidence repo graph summary\nRepo: timogilvie/wavemill\nGraph label: source_backed_multi_signal_graph\nNodes: 10\nEdges: 12\nNode types: {\"cooccurrence_profile\": 1, \"github_repo_summary\": 1, \"helicopter_repo_view\": 4, \"repo\": 1, \"source_artifact\": 2, \"source_bundle\": 1}\nEdge types: {\"artifact_needs_claim_verification\": 1, \"artifact_supports_verification\": 1, \"repo_has_cooccurrence_profile\": 1, \"repo_has_github_evidence_summary\": 1, \"repo_has_graphs_helicopter_view\": 2, \"repo_has_schemas_helicopter_view\": 2, \"repo_has_source_artifact\": 2, \"repo_has_source_bundle\": 1, \"source_bundle_uses_cooccur\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/timogilvie/wavemill", "source_id": "comment-chain-pattern-assumption_checks-44f7c28f08c727a1", "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": "timogilvie/wavemill", "source_dataset": "comment_chain_patterns/assumption_checks", "training_usage": "weak_supervision"}}}, {"ruleId": "foundry_assumption_check", "level": "warning", "message": {"text": "Foundry mined assumption checks: timogilvie/wavemill"}, "properties": {"repobilityId": 382862, "scanner": "foundry_dataset", "fingerprint": "78654b5930120138340209ef01ca82951d78b960917969679001f1d5651ea7ac", "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": "timogilvie/wavemill#545", "human_labels": ["test_ci_gap"], "issue_number": "545", "thread_label": "thread_has_human_issue_and_fix_context", "outcome_label": "ambiguous_needs_more_evidence", "source_backed": true, "max_confidence": 0.65, "repo_full_name": "timogilvie/wavemill", "training_usage": "weak_supervision", "confidence_tier": "weak_supervision", "source_chain_id": "evidence-chain-issue_chain-91c1302d6c757030", "helicopter_views": {"graphs": 2, "schemas": 2}, "artifact_families": {"docs": 1, "schemas": 1}, "source_chain_kind": "issue_chain", "changed_file_count": 0, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {}, "linked_commit_count": 5, "helicopter_view_count": 4, "source_artifact_count": 2, "classification_reasons": ["source_graph_has_real_artifacts", "source_graph_has_verification_artifacts", "repo_has_isolated_helicopter_views", "link_quality_weak_supervision", "high_risk_human_feedback_label"], "linked_ci_commit_count": 0, "verification_artifact_count": 1, "design_schema_api_artifact_count": 1}, "text": "Comment chain pattern product: assumption_checks\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#545\nOutcome: ambiguous_needs_more_evidence\nThread label: thread_has_human_issue_and_fix_context\nSource graph label: source_backed_multi_signal_graph\nReasons: source_graph_has_real_artifacts, source_graph_has_verification_artifacts, repo_has_isolated_helicopter_views, link_quality_weak_supervision, high_risk_human_feedback_label\nChain evidence:\nIssue/PR evidence chain: timogilvie/wavemill#545\nRepo: timogilvie/wavemill\nThread label: thread_has_human_issue_and_fix_context\nOutcome: ambiguous_needs_more_evidence\nComment count: 1\nLinked commit count: 5\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 0\nLabels: {'test_ci_gap': 1}\nPolarities: {'bad': 1}\nChanged file labels: {}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-fd7344885271391f\",\n    \"kind\": \"pull_request_body\",\n    \"label\": \"test_ci_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/timogilvie/wavemill/pull/545\",\n    \"text\": \"GitHub feedback: test_ci_gap\\nPolarity: bad\\nKind: pull_request_body\\nRepo: timogilvie/wavemill\\nAuthor: timogilvie (User)\\nURL: https://github.com/timogilvie/wavemill/pull/545\\nTitle: HOK-1581_c: Suppress repeated ready-watchdog needs-user log spam\\nBody:\\n## Summary\\n- Adds deduplication logic to ready-watchdog to prevent repeated log spam when a task is blocked on the same condition\\n- Tracks prior state in `.wavemill/ready-watchdog-state.json` to detect if findings have changed since last check\\n- Only reports and audits new or changed findings, while maintaining full current state in the state file\\n\\n## Changes\\n- `shared/lib/ready-watchdog.ts` - Added repeat detection logic and prior state tracking\\n- `shared/lib/ready-watchdog.test.ts` - Added comprehensive test coverage for repeat detection\\n\\n## Test plan\\n- Unit tests verify that repeated findings with identical classification and detail are suppressed\\n- Tests verify new findings are reported when classification or detail changes\\n- State file is correctly updated on each tick with all current findings\\n- Manual verification: ready watchdog logs should no longer spam \\\"needs user (reported)\\\" for the same blocking condition\\n\\n## Self-review\\n- \"\n  }\n]\nChanged files:\n[]\nLinked chain ids:\n[\"evidence-chain-comment_to_commit-f21b6811ec9b9f4a\"]\nSource graph evidence:\nSource evidence repo graph summary\nRepo: timogilvie/wavemill\nGraph label: source_backed_multi_signal_graph\nNodes: 10\nEdges: 12\nNode types: {\"cooccurrence_profile\": 1, \"github_repo_summary\": 1, \"helicopter_repo_view\": 4, \"repo\": 1, \"source_artifact\": 2, \"source_bundle\": 1}\nEdge types: {\"artifact_needs_claim_verification\": 1, \"artifact_supports_verification\": 1, \"repo_has_cooccurrence_profile\": 1, \"repo_has_github_evidence_summary\": 1, \"repo_has_graphs_helicopter_view\": 2, \"repo_has_schemas_helicopter_view\": 2, \"repo_has_source_artifact\": 2, \"repo_has_source_bundle\": 1, \"source_bundle_use\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/timogilvie/wavemill", "source_id": "comment-chain-pattern-assumption_checks-b3273b4c285fe305", "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": "timogilvie/wavemill", "source_dataset": "comment_chain_patterns/assumption_checks", "training_usage": "weak_supervision"}}}, {"ruleId": "foundry_assumption_check", "level": "warning", "message": {"text": "Foundry mined assumption checks: timogilvie/wavemill"}, "properties": {"repobilityId": 382861, "scanner": "foundry_dataset", "fingerprint": "67776e1f40b52f3e17ec88083fcb6b0b5bd06fd0acbea9677c0c15cee2f5a674", "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": "timogilvie/wavemill#54", "human_labels": ["human_feedback_general"], "issue_number": "54", "thread_label": "thread_needs_classification", "outcome_label": "ambiguous_needs_more_evidence", "source_backed": true, "max_confidence": 0.0, "repo_full_name": "timogilvie/wavemill", "training_usage": "negative_or_unresolved", "confidence_tier": "unresolved", "source_chain_id": "evidence-chain-issue_chain-382a0aed23c47746", "helicopter_views": {"graphs": 2, "schemas": 2}, "artifact_families": {"docs": 1, "schemas": 1}, "source_chain_kind": "issue_chain", "changed_file_count": 0, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {}, "linked_commit_count": 0, "helicopter_view_count": 4, "source_artifact_count": 2, "classification_reasons": ["source_graph_has_real_artifacts", "source_graph_has_verification_artifacts", "repo_has_isolated_helicopter_views", "link_quality_unresolved"], "linked_ci_commit_count": 0, "verification_artifact_count": 1, "design_schema_api_artifact_count": 1}, "text": "Comment chain pattern product: assumption_checks\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#54\nOutcome: ambiguous_needs_more_evidence\nThread label: thread_needs_classification\nSource graph label: source_backed_multi_signal_graph\nReasons: source_graph_has_real_artifacts, source_graph_has_verification_artifacts, repo_has_isolated_helicopter_views, link_quality_unresolved\nChain evidence:\nIssue/PR evidence chain: timogilvie/wavemill#54\nRepo: timogilvie/wavemill\nThread label: thread_needs_classification\nOutcome: ambiguous_needs_more_evidence\nComment count: 1\nLinked commit count: 0\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 0\nLabels: {'human_feedback_general': 1}\nPolarities: {'neutral': 1}\nChanged file labels: {}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-ce16890bd0c11063\",\n    \"kind\": \"issue_comment\",\n    \"label\": \"human_feedback_general\",\n    \"polarity\": \"neutral\",\n    \"url\": \"https://github.com/timogilvie/wavemill/pull/54#issuecomment-3975620330\",\n    \"text\": \"GitHub feedback: human_feedback_general\\nPolarity: neutral\\nKind: issue_comment\\nRepo: timogilvie/wavemill\\nAuthor: timogilvie (User)\\nURL: https://github.com/timogilvie/wavemill/pull/54#issuecomment-3975620330\\nTitle: \\nBody:\\nResolves HOK-841\"\n  }\n]\nChanged files:\n[]\nLinked chain ids:\n[\"evidence-chain-comment_to_commit-90fd327b3d76a288\"]\nSource graph evidence:\nSource evidence repo graph summary\nRepo: timogilvie/wavemill\nGraph label: source_backed_multi_signal_graph\nNodes: 10\nEdges: 12\nNode types: {\"cooccurrence_profile\": 1, \"github_repo_summary\": 1, \"helicopter_repo_view\": 4, \"repo\": 1, \"source_artifact\": 2, \"source_bundle\": 1}\nEdge types: {\"artifact_needs_claim_verification\": 1, \"artifact_supports_verification\": 1, \"repo_has_cooccurrence_profile\": 1, \"repo_has_github_evidence_summary\": 1, \"repo_has_graphs_helicopter_view\": 2, \"repo_has_schemas_helicopter_view\": 2, \"repo_has_source_artifact\": 2, \"repo_has_source_bundle\": 1, \"source_bundle_uses_cooccurrence_profile\": 1}\nArtifact families: {\"docs\": 1, \"schemas\": 1}\nHelicopter views: {\"graphs\": 2, \"schemas\": 2}\nBundle labels: {\"source_backed_fake_real_verification_bundle\": 1}\nCo-occurrence labels: {\"fake_real_data_plus_verification_gap\": 1}", "source": "foundry_mined_dataset", "repo_url": "https://github.com/timogilvie/wavemill", "source_id": "comment-chain-pattern-assumption_checks-f70a177db7793555", "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": "timogilvie/wavemill", "source_dataset": "comment_chain_patterns/assumption_checks", "training_usage": "negative_or_unresolved"}}}, {"ruleId": "foundry_assumption_check", "level": "warning", "message": {"text": "Foundry mined assumption checks: timogilvie/wavemill"}, "properties": {"repobilityId": 382860, "scanner": "foundry_dataset", "fingerprint": "ae2fe7bfb1c758d0d43356ac7e4abd0f51799f742b739136b5195bbbc932bee4", "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": "timogilvie/wavemill#51", "human_labels": ["api_integration_gap"], "issue_number": "51", "thread_label": "thread_has_human_issue_and_fix_context", "outcome_label": "ambiguous_needs_more_evidence", "source_backed": true, "max_confidence": 0.58, "repo_full_name": "timogilvie/wavemill", "training_usage": "weak_supervision", "confidence_tier": "weak_supervision", "source_chain_id": "evidence-chain-issue_chain-810c625bfd26758f", "helicopter_views": {"graphs": 2, "schemas": 2}, "artifact_families": {"docs": 1, "schemas": 1}, "source_chain_kind": "issue_chain", "changed_file_count": 0, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {}, "linked_commit_count": 5, "helicopter_view_count": 4, "source_artifact_count": 2, "classification_reasons": ["source_graph_has_real_artifacts", "source_graph_has_verification_artifacts", "repo_has_isolated_helicopter_views", "link_quality_weak_supervision", "high_risk_human_feedback_label"], "linked_ci_commit_count": 0, "verification_artifact_count": 1, "design_schema_api_artifact_count": 1}, "text": "Comment chain pattern product: assumption_checks\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#51\nOutcome: ambiguous_needs_more_evidence\nThread label: thread_has_human_issue_and_fix_context\nSource graph label: source_backed_multi_signal_graph\nReasons: source_graph_has_real_artifacts, source_graph_has_verification_artifacts, repo_has_isolated_helicopter_views, link_quality_weak_supervision, high_risk_human_feedback_label\nChain evidence:\nIssue/PR evidence chain: timogilvie/wavemill#51\nRepo: timogilvie/wavemill\nThread label: thread_has_human_issue_and_fix_context\nOutcome: ambiguous_needs_more_evidence\nComment count: 1\nLinked commit count: 5\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 0\nLabels: {'api_integration_gap': 1}\nPolarities: {'bad': 1}\nChanged file labels: {}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-6a9a7473f30b74e0\",\n    \"kind\": \"issue_comment\",\n    \"label\": \"api_integration_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/timogilvie/wavemill/pull/51#issuecomment-3975306273\",\n    \"text\": \"GitHub feedback: api_integration_gap\\nPolarity: bad\\nKind: issue_comment\\nRepo: timogilvie/wavemill\\nAuthor: timogilvie (User)\\nURL: https://github.com/timogilvie/wavemill/pull/51#issuecomment-3975306273\\nTitle: \\nBody:\\n## \ud83d\udd04 Updated to Multi-Provider Architecture\\n\\nThis PR has been enhanced to support **multiple LLM providers** instead of just Claude.\\n\\n### What Changed\\n\\n**File renamed:** `claude-cli.ts` \u2192 `llm-cli.ts`\\n\\n**New provider support:**\\n- \u2705 **Claude CLI** (default)\\n- \u2705 **Codex CLI** (ready for use)\\n- \u2705 **OpenAI** (ready for use)\\n- \u2705 Extensible for custom providers\\n\\n### API\\n\\n```typescript\\n// Main function - multi-provider\\nawait callLLM(prompt, { \\n  provider: 'claude' | 'codex' | 'openai',\\n  model: '...',\\n  timeout: 30000,\\n  retry: true,\\n});\\n\\n// Backward-compatible alias (provider='claude')\\nawait callClaude(prompt, { model: 'opus-4-6' });\\n```\\n\\n### Why This Matters\\n\\nIf Claude CLI becomes unstable or unavailable, we can switch to Codex or OpenAI by changing **one line** per call site:\\n\\n```typescript\\n// Before\\nconst result = await callClaude(prompt, { model: 'opus-4-6' });\\n\\n// After - just change provider\\\\!\\nconst result = await callLLM(prompt, { provider: 'codex', model: 'codex-latest' \"\n  }\n]\nChanged files:\n[]\nLinked chain ids:\n[\"evidence-chain-comment_to_commit-497bdd8477cfcc89\"]\nSource graph evidence:\nSource evidence repo graph summary\nRepo: timogilvie/wavemill\nGraph label: source_backed_multi_signal_graph\nNodes: 10\nEdges: 12\nNode types: {\"cooccurrence_profile\": 1, \"github_repo_summary\": 1, \"helicopter_repo_view\": 4, \"repo\": 1, \"source_artifact\": 2, \"source_bundle\": 1}\nEdge types: {\"artifact_needs_claim_verification\": 1, \"artifact_supports_verification\": 1, \"repo_has_cooccurrence_profile\": 1, \"repo_has_github_evidence_summary\": 1, \"repo_has_graphs_helicopter_view\": 2, \"repo_has_schemas_helicopter_view\": 2, \"repo_has_source_artifac\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/timogilvie/wavemill", "source_id": "comment-chain-pattern-assumption_checks-fa20331111333dcf", "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": "timogilvie/wavemill", "source_dataset": "comment_chain_patterns/assumption_checks", "training_usage": "weak_supervision"}}}, {"ruleId": "foundry_assumption_check", "level": "warning", "message": {"text": "Foundry mined assumption checks: timogilvie/wavemill"}, "properties": {"repobilityId": 382859, "scanner": "foundry_dataset", "fingerprint": "c6c38145b1c53c6d4bf0a9260690cb07cc1e11601675464ac159915bde44b156", "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": "timogilvie/wavemill#40", "human_labels": ["human_feedback_general"], "issue_number": "40", "thread_label": "thread_needs_classification", "outcome_label": "ambiguous_needs_more_evidence", "source_backed": true, "max_confidence": 0.0, "repo_full_name": "timogilvie/wavemill", "training_usage": "negative_or_unresolved", "confidence_tier": "unresolved", "source_chain_id": "evidence-chain-issue_chain-36c50b7118b42b10", "helicopter_views": {"graphs": 2, "schemas": 2}, "artifact_families": {"docs": 1, "schemas": 1}, "source_chain_kind": "issue_chain", "changed_file_count": 0, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {}, "linked_commit_count": 0, "helicopter_view_count": 4, "source_artifact_count": 2, "classification_reasons": ["source_graph_has_real_artifacts", "source_graph_has_verification_artifacts", "repo_has_isolated_helicopter_views", "link_quality_unresolved"], "linked_ci_commit_count": 0, "verification_artifact_count": 1, "design_schema_api_artifact_count": 1}, "text": "Comment chain pattern product: assumption_checks\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#40\nOutcome: ambiguous_needs_more_evidence\nThread label: thread_needs_classification\nSource graph label: source_backed_multi_signal_graph\nReasons: source_graph_has_real_artifacts, source_graph_has_verification_artifacts, repo_has_isolated_helicopter_views, link_quality_unresolved\nChain evidence:\nIssue/PR evidence chain: timogilvie/wavemill#40\nRepo: timogilvie/wavemill\nThread label: thread_needs_classification\nOutcome: ambiguous_needs_more_evidence\nComment count: 1\nLinked commit count: 0\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 0\nLabels: {'human_feedback_general': 1}\nPolarities: {'neutral': 1}\nChanged file labels: {}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-c64118a58f7964bf\",\n    \"kind\": \"issue_comment\",\n    \"label\": \"human_feedback_general\",\n    \"polarity\": \"neutral\",\n    \"url\": \"https://github.com/timogilvie/wavemill/pull/40#issuecomment-3968496636\",\n    \"text\": \"GitHub feedback: human_feedback_general\\nPolarity: neutral\\nKind: issue_comment\\nRepo: timogilvie/wavemill\\nAuthor: timogilvie (User)\\nURL: https://github.com/timogilvie/wavemill/pull/40#issuecomment-3968496636\\nTitle: \\nBody:\\nResolves [HOK-815](https://linear.app/wavemill/issue/HOK-815)\"\n  }\n]\nChanged files:\n[]\nLinked chain ids:\n[\"evidence-chain-comment_to_commit-5729927a1c679405\"]\nSource graph evidence:\nSource evidence repo graph summary\nRepo: timogilvie/wavemill\nGraph label: source_backed_multi_signal_graph\nNodes: 10\nEdges: 12\nNode types: {\"cooccurrence_profile\": 1, \"github_repo_summary\": 1, \"helicopter_repo_view\": 4, \"repo\": 1, \"source_artifact\": 2, \"source_bundle\": 1}\nEdge types: {\"artifact_needs_claim_verification\": 1, \"artifact_supports_verification\": 1, \"repo_has_cooccurrence_profile\": 1, \"repo_has_github_evidence_summary\": 1, \"repo_has_graphs_helicopter_view\": 2, \"repo_has_schemas_helicopter_view\": 2, \"repo_has_source_artifact\": 2, \"repo_has_source_bundle\": 1, \"source_bundle_uses_cooccurrence_profile\": 1}\nArtifact families: {\"docs\": 1, \"schemas\": 1}\nHelicopter views: {\"graphs\": 2, \"schemas\": 2}\nBundle labels: {\"source_backed_fake_real_verification_bundle\": 1}\nCo-occurrence labels: {\"fake_real_data_plus_verification_gap\": 1}", "source": "foundry_mined_dataset", "repo_url": "https://github.com/timogilvie/wavemill", "source_id": "comment-chain-pattern-assumption_checks-e5ffb5b4e8ba4fd0", "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": "timogilvie/wavemill", "source_dataset": "comment_chain_patterns/assumption_checks", "training_usage": "negative_or_unresolved"}}}, {"ruleId": "foundry_assumption_check", "level": "warning", "message": {"text": "Foundry mined assumption checks: timogilvie/wavemill"}, "properties": {"repobilityId": 382858, "scanner": "foundry_dataset", "fingerprint": "926b0a6c21f7f01a6aa4c4fa04090ce1d770dde84b1299a235af539ba4edeea8", "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": "timogilvie/wavemill#32", "human_labels": ["human_feedback_general"], "issue_number": "32", "thread_label": "thread_needs_classification", "outcome_label": "ambiguous_needs_more_evidence", "source_backed": true, "max_confidence": 0.0, "repo_full_name": "timogilvie/wavemill", "training_usage": "negative_or_unresolved", "confidence_tier": "unresolved", "source_chain_id": "evidence-chain-issue_chain-bb90aaac034c8950", "helicopter_views": {"graphs": 2, "schemas": 2}, "artifact_families": {"docs": 1, "schemas": 1}, "source_chain_kind": "issue_chain", "changed_file_count": 0, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {}, "linked_commit_count": 0, "helicopter_view_count": 4, "source_artifact_count": 2, "classification_reasons": ["source_graph_has_real_artifacts", "source_graph_has_verification_artifacts", "repo_has_isolated_helicopter_views", "link_quality_unresolved"], "linked_ci_commit_count": 0, "verification_artifact_count": 1, "design_schema_api_artifact_count": 1}, "text": "Comment chain pattern product: assumption_checks\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#32\nOutcome: ambiguous_needs_more_evidence\nThread label: thread_needs_classification\nSource graph label: source_backed_multi_signal_graph\nReasons: source_graph_has_real_artifacts, source_graph_has_verification_artifacts, repo_has_isolated_helicopter_views, link_quality_unresolved\nChain evidence:\nIssue/PR evidence chain: timogilvie/wavemill#32\nRepo: timogilvie/wavemill\nThread label: thread_needs_classification\nOutcome: ambiguous_needs_more_evidence\nComment count: 1\nLinked commit count: 0\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 0\nLabels: {'human_feedback_general': 1}\nPolarities: {'neutral': 1}\nChanged file labels: {}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-1993ed7b847f7f7e\",\n    \"kind\": \"issue_comment\",\n    \"label\": \"human_feedback_general\",\n    \"polarity\": \"neutral\",\n    \"url\": \"https://github.com/timogilvie/wavemill/pull/32#issuecomment-3962361832\",\n    \"text\": \"GitHub feedback: human_feedback_general\\nPolarity: neutral\\nKind: issue_comment\\nRepo: timogilvie/wavemill\\nAuthor: timogilvie (User)\\nURL: https://github.com/timogilvie/wavemill/pull/32#issuecomment-3962361832\\nTitle: \\nBody:\\nAddresses Linear issue HOK-793: Specific Acceptance Tests in Task Packets\"\n  }\n]\nChanged files:\n[]\nLinked chain ids:\n[\"evidence-chain-comment_to_commit-e10cf2e6b41b8ff2\"]\nSource graph evidence:\nSource evidence repo graph summary\nRepo: timogilvie/wavemill\nGraph label: source_backed_multi_signal_graph\nNodes: 10\nEdges: 12\nNode types: {\"cooccurrence_profile\": 1, \"github_repo_summary\": 1, \"helicopter_repo_view\": 4, \"repo\": 1, \"source_artifact\": 2, \"source_bundle\": 1}\nEdge types: {\"artifact_needs_claim_verification\": 1, \"artifact_supports_verification\": 1, \"repo_has_cooccurrence_profile\": 1, \"repo_has_github_evidence_summary\": 1, \"repo_has_graphs_helicopter_view\": 2, \"repo_has_schemas_helicopter_view\": 2, \"repo_has_source_artifact\": 2, \"repo_has_source_bundle\": 1, \"source_bundle_uses_cooccurrence_profile\": 1}\nArtifact families: {\"docs\": 1, \"schemas\": 1}\nHelicopter views: {\"graphs\": 2, \"schemas\": 2}\nBundle labels: {\"source_backed_fake_real_verification_bundle\": 1}\nCo-occurrence labels: {\"fake_real_data_plus_verification_gap\": 1}", "source": "foundry_mined_dataset", "repo_url": "https://github.com/timogilvie/wavemill", "source_id": "comment-chain-pattern-assumption_checks-4922ced4bf3b5395", "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": "timogilvie/wavemill", "source_dataset": "comment_chain_patterns/assumption_checks", "training_usage": "negative_or_unresolved"}}}, {"ruleId": "foundry_assumption_check", "level": "warning", "message": {"text": "Foundry mined assumption checks: timogilvie/wavemill"}, "properties": {"repobilityId": 382857, "scanner": "foundry_dataset", "fingerprint": "adec30332bee6218e5a5904e7d3070ed06ba70438a63394d0950b274de203c10", "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": "timogilvie/wavemill#31", "human_labels": ["human_feedback_general"], "issue_number": "31", "thread_label": "thread_needs_classification", "outcome_label": "ambiguous_needs_more_evidence", "source_backed": true, "max_confidence": 0.0, "repo_full_name": "timogilvie/wavemill", "training_usage": "negative_or_unresolved", "confidence_tier": "unresolved", "source_chain_id": "evidence-chain-issue_chain-a8d80dcaeab2dbf9", "helicopter_views": {"graphs": 2, "schemas": 2}, "artifact_families": {"docs": 1, "schemas": 1}, "source_chain_kind": "issue_chain", "changed_file_count": 0, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {}, "linked_commit_count": 0, "helicopter_view_count": 4, "source_artifact_count": 2, "classification_reasons": ["source_graph_has_real_artifacts", "source_graph_has_verification_artifacts", "repo_has_isolated_helicopter_views", "link_quality_unresolved"], "linked_ci_commit_count": 0, "verification_artifact_count": 1, "design_schema_api_artifact_count": 1}, "text": "Comment chain pattern product: assumption_checks\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#31\nOutcome: ambiguous_needs_more_evidence\nThread label: thread_needs_classification\nSource graph label: source_backed_multi_signal_graph\nReasons: source_graph_has_real_artifacts, source_graph_has_verification_artifacts, repo_has_isolated_helicopter_views, link_quality_unresolved\nChain evidence:\nIssue/PR evidence chain: timogilvie/wavemill#31\nRepo: timogilvie/wavemill\nThread label: thread_needs_classification\nOutcome: ambiguous_needs_more_evidence\nComment count: 1\nLinked commit count: 0\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 0\nLabels: {'human_feedback_general': 1}\nPolarities: {'neutral': 1}\nChanged file labels: {}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-005c3252a76f9f25\",\n    \"kind\": \"issue_comment\",\n    \"label\": \"human_feedback_general\",\n    \"polarity\": \"neutral\",\n    \"url\": \"https://github.com/timogilvie/wavemill/pull/31#issuecomment-3962207784\",\n    \"text\": \"GitHub feedback: human_feedback_general\\nPolarity: neutral\\nKind: issue_comment\\nRepo: timogilvie/wavemill\\nAuthor: timogilvie (User)\\nURL: https://github.com/timogilvie/wavemill/pull/31#issuecomment-3962207784\\nTitle: \\nBody:\\nFixes https://linear.app/hokusai/issue/HOK-798\"\n  }\n]\nChanged files:\n[]\nLinked chain ids:\n[\"evidence-chain-comment_to_commit-1a1891b466e08b98\"]\nSource graph evidence:\nSource evidence repo graph summary\nRepo: timogilvie/wavemill\nGraph label: source_backed_multi_signal_graph\nNodes: 10\nEdges: 12\nNode types: {\"cooccurrence_profile\": 1, \"github_repo_summary\": 1, \"helicopter_repo_view\": 4, \"repo\": 1, \"source_artifact\": 2, \"source_bundle\": 1}\nEdge types: {\"artifact_needs_claim_verification\": 1, \"artifact_supports_verification\": 1, \"repo_has_cooccurrence_profile\": 1, \"repo_has_github_evidence_summary\": 1, \"repo_has_graphs_helicopter_view\": 2, \"repo_has_schemas_helicopter_view\": 2, \"repo_has_source_artifact\": 2, \"repo_has_source_bundle\": 1, \"source_bundle_uses_cooccurrence_profile\": 1}\nArtifact families: {\"docs\": 1, \"schemas\": 1}\nHelicopter views: {\"graphs\": 2, \"schemas\": 2}\nBundle labels: {\"source_backed_fake_real_verification_bundle\": 1}\nCo-occurrence labels: {\"fake_real_data_plus_verification_gap\": 1}", "source": "foundry_mined_dataset", "repo_url": "https://github.com/timogilvie/wavemill", "source_id": "comment-chain-pattern-assumption_checks-b78b4927269c4151", "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": "timogilvie/wavemill", "source_dataset": "comment_chain_patterns/assumption_checks", "training_usage": "negative_or_unresolved"}}}, {"ruleId": "foundry_assumption_check", "level": "warning", "message": {"text": "Foundry mined assumption checks: timogilvie/wavemill"}, "properties": {"repobilityId": 382856, "scanner": "foundry_dataset", "fingerprint": "355a953cf2ea4e0c2a2e50c5dfed09498cf83ff0944326701934cef07847d3cb", "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": "timogilvie/wavemill#256", "human_labels": ["test_ci_gap"], "issue_number": "256", "thread_label": "thread_has_human_issue_and_fix_context", "outcome_label": "ambiguous_needs_more_evidence", "source_backed": true, "max_confidence": 0.65, "repo_full_name": "timogilvie/wavemill", "training_usage": "weak_supervision", "confidence_tier": "weak_supervision", "source_chain_id": "evidence-chain-issue_chain-525d0fa5dd6c6d74", "helicopter_views": {"graphs": 2, "schemas": 2}, "artifact_families": {"docs": 1, "schemas": 1}, "source_chain_kind": "issue_chain", "changed_file_count": 0, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {}, "linked_commit_count": 5, "helicopter_view_count": 4, "source_artifact_count": 2, "classification_reasons": ["source_graph_has_real_artifacts", "source_graph_has_verification_artifacts", "repo_has_isolated_helicopter_views", "link_quality_weak_supervision", "high_risk_human_feedback_label"], "linked_ci_commit_count": 0, "verification_artifact_count": 1, "design_schema_api_artifact_count": 1}, "text": "Comment chain pattern product: assumption_checks\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#256\nOutcome: ambiguous_needs_more_evidence\nThread label: thread_has_human_issue_and_fix_context\nSource graph label: source_backed_multi_signal_graph\nReasons: source_graph_has_real_artifacts, source_graph_has_verification_artifacts, repo_has_isolated_helicopter_views, link_quality_weak_supervision, high_risk_human_feedback_label\nChain evidence:\nIssue/PR evidence chain: timogilvie/wavemill#256\nRepo: timogilvie/wavemill\nThread label: thread_has_human_issue_and_fix_context\nOutcome: ambiguous_needs_more_evidence\nComment count: 1\nLinked commit count: 5\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 0\nLabels: {'test_ci_gap': 1}\nPolarities: {'bad': 1}\nChanged file labels: {}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-c201174478c41c37\",\n    \"kind\": \"pull_request_body\",\n    \"label\": \"test_ci_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/timogilvie/wavemill/pull/256\",\n    \"text\": \"GitHub feedback: test_ci_gap\\nPolarity: bad\\nKind: pull_request_body\\nRepo: timogilvie/wavemill\\nAuthor: timogilvie (User)\\nURL: https://github.com/timogilvie/wavemill/pull/256\\nTitle: HOK-1218: Fix phase handoff pane relaunch\\nBody:\\n## Summary\\n\\nFixes an issue where the coding phase launcher script was being interpreted as a chat message instead of executing, because the planning agent was still active when the orchestrator tried to launch the coding phase.\\n\\n- Improved pane readiness detection to check for child processes when pane shows a shell\\n- Added respawn-pane fallback mechanism when pane is not ready for send-keys\\n- Enhanced process termination to recursively kill descendant processes\\n- Added pre-send readiness checks with automatic respawn if needed\\n\\n## Changes\\n\\n**shared/lib/agent-adapters.sh:**\\n- Modified `agent_launch_interactive()` to use respawn-pane fallback when pane is busy\\n- Enhanced `agent_pane_is_ready()` to check child process count even when shell is active\\n- Added `_pane_descendant_pids()` helper to find all descendant processes for thorough cleanup\\n- Updated `_pane_child_count()` to return 0 instead of 1 on error (more graceful)\\n- Added `_pane_current_path()` helper \"\n  }\n]\nChanged files:\n[]\nLinked chain ids:\n[\"evidence-chain-comment_to_commit-058ec648474098db\"]\nSource graph evidence:\nSource evidence repo graph summary\nRepo: timogilvie/wavemill\nGraph label: source_backed_multi_signal_graph\nNodes: 10\nEdges: 12\nNode types: {\"cooccurrence_profile\": 1, \"github_repo_summary\": 1, \"helicopter_repo_view\": 4, \"repo\": 1, \"source_artifact\": 2, \"source_bundle\": 1}\nEdge types: {\"artifact_needs_claim_verification\": 1, \"artifact_supports_verification\": 1, \"repo_has_cooccurrence_profile\": 1, \"repo_has_github_evidence_summary\": 1, \"repo_has_graphs_helicopter_view\": 2, \"repo_has_schemas_helicopter_view\": 2, \"repo_has_source_artifact\": 2, \"repo_has_source_bundle\": 1, \"source_bundle_uses_\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/timogilvie/wavemill", "source_id": "comment-chain-pattern-assumption_checks-2f8d4161daa752f8", "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": "timogilvie/wavemill", "source_dataset": "comment_chain_patterns/assumption_checks", "training_usage": "weak_supervision"}}}, {"ruleId": "foundry_assumption_check", "level": "warning", "message": {"text": "Foundry mined assumption checks: timogilvie/wavemill"}, "properties": {"repobilityId": 382855, "scanner": "foundry_dataset", "fingerprint": "8d50e266b1f215570fc0ee49510bd38ebe17ceefa31c8c474bbd32c6f4318a48", "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": "timogilvie/wavemill#254", "human_labels": ["deployment_env_gap"], "issue_number": "254", "thread_label": "thread_has_human_issue_and_fix_context", "outcome_label": "ambiguous_needs_more_evidence", "source_backed": true, "max_confidence": 0.65, "repo_full_name": "timogilvie/wavemill", "training_usage": "weak_supervision", "confidence_tier": "weak_supervision", "source_chain_id": "evidence-chain-issue_chain-392bf48b2e233578", "helicopter_views": {"graphs": 2, "schemas": 2}, "artifact_families": {"docs": 1, "schemas": 1}, "source_chain_kind": "issue_chain", "changed_file_count": 0, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {}, "linked_commit_count": 5, "helicopter_view_count": 4, "source_artifact_count": 2, "classification_reasons": ["source_graph_has_real_artifacts", "source_graph_has_verification_artifacts", "repo_has_isolated_helicopter_views", "link_quality_weak_supervision", "high_risk_human_feedback_label"], "linked_ci_commit_count": 0, "verification_artifact_count": 1, "design_schema_api_artifact_count": 1}, "text": "Comment chain pattern product: assumption_checks\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#254\nOutcome: ambiguous_needs_more_evidence\nThread label: thread_has_human_issue_and_fix_context\nSource graph label: source_backed_multi_signal_graph\nReasons: source_graph_has_real_artifacts, source_graph_has_verification_artifacts, repo_has_isolated_helicopter_views, link_quality_weak_supervision, high_risk_human_feedback_label\nChain evidence:\nIssue/PR evidence chain: timogilvie/wavemill#254\nRepo: timogilvie/wavemill\nThread label: thread_has_human_issue_and_fix_context\nOutcome: ambiguous_needs_more_evidence\nComment count: 1\nLinked commit count: 5\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 0\nLabels: {'deployment_env_gap': 1}\nPolarities: {'bad': 1}\nChanged file labels: {}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-c92111eeda813e59\",\n    \"kind\": \"pull_request_body\",\n    \"label\": \"deployment_env_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/timogilvie/wavemill/pull/254\",\n    \"text\": \"GitHub feedback: deployment_env_gap\\nPolarity: bad\\nKind: pull_request_body\\nRepo: timogilvie/wavemill\\nAuthor: timogilvie (User)\\nURL: https://github.com/timogilvie/wavemill/pull/254\\nTitle: HOK-1214: Guard against nested wavemill mill invocations\\nBody:\\n## Summary\\n\\n- Adds two complementary guards that prevent `wavemill mill` from running inside task worktrees or as a nested invocation\\n- **Guard 1**: Git worktree detection using `git rev-parse --git-dir` vs `--git-common-dir` \u2014 works regardless of custom `worktreeRoot` config or symlinks\\n- **Guard 2**: `WAVEMILL_MILL_ACTIVE` env var stores the repo path, blocking nested invocations while allowing separate repos in separate terminals\\n- Fixes the incident where a challenger agent ran `wavemill mill` from inside a worktree, hijacking the shared tmux session\\n\\n## Changes\\n\\n- `wavemill` \u2014 Added worktree + env var guards in `run_mill()` (earliest catch point before `exec`)\\n- `shared/lib/wavemill-mill.sh` \u2014 Added same guards after config load (defense-in-depth for direct invocations)\\n- `shared/lib/wavemill-orchestrator.sh` \u2014 Propagates `WAVEMILL_MILL_ACTIVE` to tmux session environment so panes inherit it\\n- `tests/stage-state.test.sh` \u2014 5 new tes\"\n  }\n]\nChanged files:\n[]\nLinked chain ids:\n[\"evidence-chain-comment_to_commit-162bab28b6ed620a\"]\nSource graph evidence:\nSource evidence repo graph summary\nRepo: timogilvie/wavemill\nGraph label: source_backed_multi_signal_graph\nNodes: 10\nEdges: 12\nNode types: {\"cooccurrence_profile\": 1, \"github_repo_summary\": 1, \"helicopter_repo_view\": 4, \"repo\": 1, \"source_artifact\": 2, \"source_bundle\": 1}\nEdge types: {\"artifact_needs_claim_verification\": 1, \"artifact_supports_verification\": 1, \"repo_has_cooccurrence_profile\": 1, \"repo_has_github_evidence_summary\": 1, \"repo_has_graphs_helicopter_view\": 2, \"repo_has_schemas_helicopter_view\": 2, \"repo_has_source_artifact\": 2, \"repo_has_source_bundle\": 1, \"source_bu\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/timogilvie/wavemill", "source_id": "comment-chain-pattern-assumption_checks-68b484d1b9f1f385", "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": "timogilvie/wavemill", "source_dataset": "comment_chain_patterns/assumption_checks", "training_usage": "weak_supervision"}}}, {"ruleId": "foundry_assumption_check", "level": "warning", "message": {"text": "Foundry mined assumption checks: timogilvie/wavemill"}, "properties": {"repobilityId": 382854, "scanner": "foundry_dataset", "fingerprint": "ea55005546672e2e8428accbf01e0d62ca8760cf8f29f40d98352eeab0cf12be", "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": "timogilvie/wavemill#253", "human_labels": ["agent_instruction_gap"], "issue_number": "253", "thread_label": "thread_has_human_issue_and_fix_context", "outcome_label": "claimed_resolved_unverified", "source_backed": true, "max_confidence": 0.607, "repo_full_name": "timogilvie/wavemill", "training_usage": "weak_supervision", "confidence_tier": "weak_supervision", "source_chain_id": "evidence-chain-issue_chain-5d3cd2f5799ecebc", "helicopter_views": {"graphs": 2, "schemas": 2}, "artifact_families": {"docs": 1, "schemas": 1}, "source_chain_kind": "issue_chain", "changed_file_count": 0, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {}, "linked_commit_count": 2, "helicopter_view_count": 4, "source_artifact_count": 2, "classification_reasons": ["source_graph_has_real_artifacts", "source_graph_has_verification_artifacts", "repo_has_isolated_helicopter_views", "link_quality_weak_supervision"], "linked_ci_commit_count": 0, "verification_artifact_count": 1, "design_schema_api_artifact_count": 1}, "text": "Comment chain pattern product: assumption_checks\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#253\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: timogilvie/wavemill#253\nRepo: timogilvie/wavemill\nThread label: thread_has_human_issue_and_fix_context\nOutcome: claimed_resolved_unverified\nComment count: 1\nLinked commit count: 2\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 0\nLabels: {'agent_instruction_gap': 1}\nPolarities: {'bad': 1}\nChanged file labels: {}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-8cd6fa3f9abb3c81\",\n    \"kind\": \"pull_request_body\",\n    \"label\": \"agent_instruction_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/timogilvie/wavemill/pull/253\",\n    \"text\": \"GitHub feedback: agent_instruction_gap\\nPolarity: bad\\nKind: pull_request_body\\nRepo: timogilvie/wavemill\\nAuthor: timogilvie (User)\\nURL: https://github.com/timogilvie/wavemill/pull/253\\nTitle: Fix agent termination to use recursive process tree kill (HOK-1218)\\nBody:\\n## Summary\\n\\n- **Root cause**: Phase transitions (planning\u2192coding, coding\u2192review) failed because `pkill -P` only killed direct children of the pane shell, leaving the full process tree alive (shell \u2192 launcher.sh \u2192 node/claude \u2192 subprocesses). The launcher script was then sent to the still-running agent as a chat message.\\n- Added `_kill_descendant_processes()` \u2014 a recursive depth-first tree kill that terminates the entire descendant tree while preserving the pane shell.\\n- Increased post-Ctrl-C delay (0.3\u21920.8s) and post-`/exit` delay (0.5\u21921.0s) so the agent can process interrupts before `/exit` arrives.\\n- Changed `agent_prepare_pane_for_launch` to return error instead of \\\"launching anyway\\\" when the pane is still not ready after full escalation, triggering the existing retry mechanism.\\n\\n## Changes\\n\\n- `shared/lib/agent-adapters.sh`: Added `_kill_descendant_processes` helper; updated `agent_terminate_in_pane` timing and kill logi\"\n  }\n]\nChanged files:\n[]\nLinked chain ids:\n[\"evidence-chain-comment_to_commit-74ae8329c9cf1131\"]\nSource graph evidence:\nSource evidence repo graph summary\nRepo: timogilvie/wavemill\nGraph label: source_backed_multi_signal_graph\nNodes: 10\nEdges: 12\nNode types: {\"cooccurrence_profile\": 1, \"github_repo_summary\": 1, \"helicopter_repo_view\": 4, \"repo\": 1, \"source_artifact\": 2, \"source_bundle\": 1}\nEdge types: {\"artifact_needs_claim_verification\": 1, \"artifact_supports_verification\": 1, \"repo_has_cooccurrence_profile\": 1, \"repo_has_github_evidence_summary\": 1, \"repo_has_graphs_helicopter_view\": 2, \"repo_has_schemas_helicopter_view\": 2, \"repo_has_source_artifact\": 2, \"repo_has_source_bundle\": 1, \"source_bundle_uses_cooccurrence_profile\"\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/timogilvie/wavemill", "source_id": "comment-chain-pattern-assumption_checks-5d613090f207c986", "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": "timogilvie/wavemill", "source_dataset": "comment_chain_patterns/assumption_checks", "training_usage": "weak_supervision"}}}, {"ruleId": "foundry_assumption_check", "level": "warning", "message": {"text": "Foundry mined assumption checks: timogilvie/wavemill"}, "properties": {"repobilityId": 382853, "scanner": "foundry_dataset", "fingerprint": "c71b0df8f3f30be38a4a02f32307e6b9b7534c59814ca5f053d0992c4fcc7a39", "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": "timogilvie/wavemill#251", "human_labels": ["test_ci_gap"], "issue_number": "251", "thread_label": "thread_has_human_issue_and_fix_context", "outcome_label": "ambiguous_needs_more_evidence", "source_backed": true, "max_confidence": 0.59, "repo_full_name": "timogilvie/wavemill", "training_usage": "weak_supervision", "confidence_tier": "weak_supervision", "source_chain_id": "evidence-chain-issue_chain-317530709e1deef9", "helicopter_views": {"graphs": 2, "schemas": 2}, "artifact_families": {"docs": 1, "schemas": 1}, "source_chain_kind": "issue_chain", "changed_file_count": 0, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {}, "linked_commit_count": 4, "helicopter_view_count": 4, "source_artifact_count": 2, "classification_reasons": ["source_graph_has_real_artifacts", "source_graph_has_verification_artifacts", "repo_has_isolated_helicopter_views", "link_quality_weak_supervision", "high_risk_human_feedback_label"], "linked_ci_commit_count": 0, "verification_artifact_count": 1, "design_schema_api_artifact_count": 1}, "text": "Comment chain pattern product: assumption_checks\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#251\nOutcome: ambiguous_needs_more_evidence\nThread label: thread_has_human_issue_and_fix_context\nSource graph label: source_backed_multi_signal_graph\nReasons: source_graph_has_real_artifacts, source_graph_has_verification_artifacts, repo_has_isolated_helicopter_views, link_quality_weak_supervision, high_risk_human_feedback_label\nChain evidence:\nIssue/PR evidence chain: timogilvie/wavemill#251\nRepo: timogilvie/wavemill\nThread label: thread_has_human_issue_and_fix_context\nOutcome: ambiguous_needs_more_evidence\nComment count: 1\nLinked commit count: 4\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 0\nLabels: {'test_ci_gap': 1}\nPolarities: {'bad': 1}\nChanged file labels: {}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-6ccc053c3d7a0ffc\",\n    \"kind\": \"issue_comment\",\n    \"label\": \"test_ci_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/timogilvie/wavemill/pull/251#issuecomment-4232031948\",\n    \"text\": \"GitHub feedback: test_ci_gap\\nPolarity: bad\\nKind: issue_comment\\nRepo: timogilvie/wavemill\\nAuthor: timogilvie (User)\\nURL: https://github.com/timogilvie/wavemill/pull/251#issuecomment-4232031948\\nTitle: \\nBody:\\nChallenge comparison for `HOK-1217`\\n\\nPrimary used claude-sonnet-4-5-20250929 (planner) + gpt-5.4 (coder) + claude-sonnet-4-5-20250929 (reviewer) vs Challenger used claude-sonnet-4-5-20250929 (planner) + claude-opus-4-6 (coder) + claude-sonnet-4-5-20250929 (reviewer)\\nChallenge type: coder-only\\n\\nRecommended winner: primary (gpt-5.4)\\nOther PR: https://github.com/timogilvie/wavemill/pull/250\\n\\nBoth PRs correctly remove the `clear` call that caused flashing, but the primary PR is more complete and robust. It extracts named helper functions (`clear_dashboard_scrollback`, `redraw_dashboard_frame`) with portable escape-sequence fallbacks, groups the redraw into a single logical block, and adds three targeted tests in `check-shell.sh` to prevent regression. The challenger PR is minimal\u2014just removing `clear` and appending a `tmux clear-history` with a hardcoded pane target (`$SESSION:control.1`)\u2014and adds no tests. The hardcoded pane reference is brittle, and the lack of test coverage leaves\"\n  }\n]\nChanged files:\n[]\nLinked chain ids:\n[\"evidence-chain-comment_to_commit-576261e7086e560e\"]\nSource graph evidence:\nSource evidence repo graph summary\nRepo: timogilvie/wavemill\nGraph label: source_backed_multi_signal_graph\nNodes: 10\nEdges: 12\nNode types: {\"cooccurrence_profile\": 1, \"github_repo_summary\": 1, \"helicopter_repo_view\": 4, \"repo\": 1, \"source_artifact\": 2, \"source_bundle\": 1}\nEdge types: {\"artifact_needs_claim_verification\": 1, \"artifact_supports_verification\": 1, \"repo_has_cooccurrence_profile\": 1, \"repo_has_github_evidence_summary\": 1, \"repo_has_graphs_helicopter_view\": 2, \"repo_has_schemas_helicopter_view\": 2, \"repo_has_source_artifact\": 2, \"repo_has_source_bundle\": 1, \"source_\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/timogilvie/wavemill", "source_id": "comment-chain-pattern-assumption_checks-5fce6878915d156a", "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": "timogilvie/wavemill", "source_dataset": "comment_chain_patterns/assumption_checks", "training_usage": "weak_supervision"}}}, {"ruleId": "foundry_assumption_check", "level": "warning", "message": {"text": "Foundry mined assumption checks: timogilvie/wavemill"}, "properties": {"repobilityId": 382852, "scanner": "foundry_dataset", "fingerprint": "2b793d68029e332c8f61d67a14189e89736e5430c5a86f4fd24bb4701c882534", "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": "timogilvie/wavemill#250", "human_labels": ["human_feedback_general", "test_ci_gap"], "issue_number": "250", "thread_label": "thread_has_human_issue_and_fix_context", "outcome_label": "ambiguous_needs_more_evidence", "source_backed": true, "max_confidence": 0.59, "repo_full_name": "timogilvie/wavemill", "training_usage": "weak_supervision", "confidence_tier": "weak_supervision", "source_chain_id": "evidence-chain-issue_chain-26e126456eabea1c", "helicopter_views": {"graphs": 2, "schemas": 2}, "artifact_families": {"docs": 1, "schemas": 1}, "source_chain_kind": "issue_chain", "changed_file_count": 0, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {}, "linked_commit_count": 4, "helicopter_view_count": 4, "source_artifact_count": 2, "classification_reasons": ["source_graph_has_real_artifacts", "source_graph_has_verification_artifacts", "repo_has_isolated_helicopter_views", "link_quality_weak_supervision", "high_risk_human_feedback_label"], "linked_ci_commit_count": 0, "verification_artifact_count": 1, "design_schema_api_artifact_count": 1}, "text": "Comment chain pattern product: assumption_checks\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#250\nOutcome: ambiguous_needs_more_evidence\nThread label: thread_has_human_issue_and_fix_context\nSource graph label: source_backed_multi_signal_graph\nReasons: source_graph_has_real_artifacts, source_graph_has_verification_artifacts, repo_has_isolated_helicopter_views, link_quality_weak_supervision, high_risk_human_feedback_label\nChain evidence:\nIssue/PR evidence chain: timogilvie/wavemill#250\nRepo: timogilvie/wavemill\nThread label: thread_has_human_issue_and_fix_context\nOutcome: ambiguous_needs_more_evidence\nComment count: 2\nLinked commit count: 4\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 0\nLabels: {'test_ci_gap': 1, 'human_feedback_general': 1}\nPolarities: {'bad': 1, 'neutral': 1}\nChanged file labels: {}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-83aaaeeb68735d25\",\n    \"kind\": \"issue_comment\",\n    \"label\": \"test_ci_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/timogilvie/wavemill/pull/250#issuecomment-4232031994\",\n    \"text\": \"GitHub feedback: test_ci_gap\\nPolarity: bad\\nKind: issue_comment\\nRepo: timogilvie/wavemill\\nAuthor: timogilvie (User)\\nURL: https://github.com/timogilvie/wavemill/pull/250#issuecomment-4232031994\\nTitle: \\nBody:\\nChallenge comparison for `HOK-1217`\\n\\nPrimary used claude-sonnet-4-5-20250929 (planner) + gpt-5.4 (coder) + claude-sonnet-4-5-20250929 (reviewer) vs Challenger used claude-sonnet-4-5-20250929 (planner) + claude-opus-4-6 (coder) + claude-sonnet-4-5-20250929 (reviewer)\\nChallenge type: coder-only\\n\\nRecommended winner: primary (gpt-5.4)\\nOther PR: https://github.com/timogilvie/wavemill/pull/251\\n\\nBoth PRs correctly remove the `clear` call that caused flashing, but the primary PR is more complete and robust. It extracts named helper functions (`clear_dashboard_scrollback`, `redraw_dashboard_frame`) with portable escape-sequence fallbacks, groups the redraw into a single logical block, and adds three targeted tests in `check-shell.sh` to prevent regression. The challenger PR is minimal\u2014just removing `clear` and appending a `tmux clear-history` with a hardcoded pane target (`$SESSION:control.1`)\u2014and adds no tests. The hardcoded pane reference is brittle, and the lack of test coverage leaves\"\n  },\n  {\n    \"id\": \"github-feedback-comment-c4f6cdd264ddfbb6\",\n    \"kind\": \"issue_comment\",\n    \"label\": \"human_feedback_general\",\n    \"polarity\": \"neutral\",\n    \"url\": \"https://github.com/timogilvie/wavemill/pull/250#issuecomment-4232050074\",\n    \"text\": \"GitHub feedback: human_feedback_general\\nPolarity: neutral\\nKind: issue_comment\\nRepo: timogilvie/wavemill\\nAuthor: timogilvie (User)\\nURL: https://github.com/timogilvie/wavemill/pull/250#issuecomment-4232050074\\nTitle: \\nBody:\\nclsoing losing challenge\"\n  }\n]\nChanged files:\n[]\nLinked chain ids:\n[\"evidence-chain-comment_to_commit-6a54cd88352d0260\", \"evidence-chain-comment_to_commit-3a8476740ba554bd\"\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/timogilvie/wavemill", "source_id": "comment-chain-pattern-assumption_checks-7e6d2bd848f96b25", "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": "timogilvie/wavemill", "source_dataset": "comment_chain_patterns/assumption_checks", "training_usage": "weak_supervision"}}}, {"ruleId": "foundry_assumption_check", "level": "warning", "message": {"text": "Foundry mined assumption checks: timogilvie/wavemill"}, "properties": {"repobilityId": 382851, "scanner": "foundry_dataset", "fingerprint": "c021d2c035f1ecacf81da5b60643349f82864e9893c94eb7d65788ac7e93eea0", "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": "timogilvie/wavemill#246", "human_labels": ["agent_instruction_gap", "human_feedback_general"], "issue_number": "246", "thread_label": "thread_has_human_issue_and_fix_context", "outcome_label": "ambiguous_needs_more_evidence", "source_backed": true, "max_confidence": 0.65, "repo_full_name": "timogilvie/wavemill", "training_usage": "weak_supervision", "confidence_tier": "weak_supervision", "source_chain_id": "evidence-chain-issue_chain-8bd14cec1ff7cbec", "helicopter_views": {"graphs": 2, "schemas": 2}, "artifact_families": {"docs": 1, "schemas": 1}, "source_chain_kind": "issue_chain", "changed_file_count": 0, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {}, "linked_commit_count": 5, "helicopter_view_count": 4, "source_artifact_count": 2, "classification_reasons": ["source_graph_has_real_artifacts", "source_graph_has_verification_artifacts", "repo_has_isolated_helicopter_views", "link_quality_weak_supervision"], "linked_ci_commit_count": 0, "verification_artifact_count": 1, "design_schema_api_artifact_count": 1}, "text": "Comment chain pattern product: assumption_checks\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#246\nOutcome: ambiguous_needs_more_evidence\nThread label: thread_has_human_issue_and_fix_context\nSource graph label: source_backed_multi_signal_graph\nReasons: source_graph_has_real_artifacts, source_graph_has_verification_artifacts, repo_has_isolated_helicopter_views, link_quality_weak_supervision\nChain evidence:\nIssue/PR evidence chain: timogilvie/wavemill#246\nRepo: timogilvie/wavemill\nThread label: thread_has_human_issue_and_fix_context\nOutcome: ambiguous_needs_more_evidence\nComment count: 3\nLinked commit count: 5\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 0\nLabels: {'human_feedback_general': 2, 'agent_instruction_gap': 1}\nPolarities: {'neutral': 2, 'bad': 1}\nChanged file labels: {}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-af95e9c4905133fd\",\n    \"kind\": \"pull_request_body\",\n    \"label\": \"human_feedback_general\",\n    \"polarity\": \"neutral\",\n    \"url\": \"https://github.com/timogilvie/wavemill/pull/246\",\n    \"text\": \"GitHub feedback: human_feedback_general\\nPolarity: neutral\\nKind: pull_request_body\\nRepo: timogilvie/wavemill\\nAuthor: timogilvie (User)\\nURL: https://github.com/timogilvie/wavemill/pull/246\\nTitle: fix: Add validation guards to prevent routing tags as model identifiers (HOK-1208)\\nBody:\\n## Summary\\n\\n- Fixes error \\\"The 'deep' model is not supported\\\" that occurred when review phase was launched\\n- Root cause: \\\"deep\\\" is a routing depth tag, not a model name, but was being passed as a model identifier\\n- Solution: Added `validate_model_name()` function that detects routing tags and falls back to safe defaults\\n- Defensive fix prevents the symptom while we investigate why tags are being used as model names\\n\\n## Changes\\n\\n**shared/lib/wavemill-mill.sh:**\\n- Added `validate_model_name()` function to detect routing tags (deep, shallow, light, medium) and provide fallback defaults\\n- Applied validation after model resolution in review phase (line ~3745)\\n- Applied validation after model resolution in planning phase (line ~3530)\\n- Applied validation after model resolution in coding phase (line ~3635)\\n\\n**tests/check-shell.sh:**\\n- Added comprehensive test cases for model validation\\n- Tests verify detection \"\n  },\n  {\n    \"id\": \"github-feedback-comment-af96992bbe1945c6\",\n    \"kind\": \"issue_comment\",\n    \"label\": \"agent_instruction_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/timogilvie/wavemill/pull/246#issuecomment-4231775188\",\n    \"text\": \"GitHub feedback: agent_instruction_gap\\nPolarity: bad\\nKind: issue_comment\\nRepo: timogilvie/wavemill\\nAuthor: timogilvie (User)\\nURL: https://github.com/timogilvie/wavemill/pull/246#issuecomment-4231775188\\nTitle: \\nBody:\\nChallenge comparison for `HOK-1208`\\n\\nPrimary used claude-sonnet-4-5-20250929 (planner) + gpt-5.4 (coder) + claude-sonnet-4-5-20250929 (reviewer) vs Challenger used claude-sonnet-4-5-20250929 (pla\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/timogilvie/wavemill", "source_id": "comment-chain-pattern-assumption_checks-1d96c23d1560c56d", "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": "timogilvie/wavemill", "source_dataset": "comment_chain_patterns/assumption_checks", "training_usage": "weak_supervision"}}}, {"ruleId": "foundry_assumption_check", "level": "warning", "message": {"text": "Foundry mined assumption checks: timogilvie/wavemill"}, "properties": {"repobilityId": 382850, "scanner": "foundry_dataset", "fingerprint": "bc78cb6e544e5284ac48f49cf7cc6b9c70e5f9d196c6329be6b148f7b52f0598", "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": "timogilvie/wavemill#236", "human_labels": ["agent_instruction_gap", "human_feedback_general", "test_ci_gap"], "issue_number": "236", "thread_label": "thread_has_human_issue_and_fix_context", "outcome_label": "ambiguous_needs_more_evidence", "source_backed": true, "max_confidence": 0.65, "repo_full_name": "timogilvie/wavemill", "training_usage": "weak_supervision", "confidence_tier": "weak_supervision", "source_chain_id": "evidence-chain-issue_chain-60fbe7b49126130f", "helicopter_views": {"graphs": 2, "schemas": 2}, "artifact_families": {"docs": 1, "schemas": 1}, "source_chain_kind": "issue_chain", "changed_file_count": 0, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {}, "linked_commit_count": 5, "helicopter_view_count": 4, "source_artifact_count": 2, "classification_reasons": ["source_graph_has_real_artifacts", "source_graph_has_verification_artifacts", "repo_has_isolated_helicopter_views", "link_quality_weak_supervision", "high_risk_human_feedback_label"], "linked_ci_commit_count": 0, "verification_artifact_count": 1, "design_schema_api_artifact_count": 1}, "text": "Comment chain pattern product: assumption_checks\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#236\nOutcome: ambiguous_needs_more_evidence\nThread label: thread_has_human_issue_and_fix_context\nSource graph label: source_backed_multi_signal_graph\nReasons: source_graph_has_real_artifacts, source_graph_has_verification_artifacts, repo_has_isolated_helicopter_views, link_quality_weak_supervision, high_risk_human_feedback_label\nChain evidence:\nIssue/PR evidence chain: timogilvie/wavemill#236\nRepo: timogilvie/wavemill\nThread label: thread_has_human_issue_and_fix_context\nOutcome: ambiguous_needs_more_evidence\nComment count: 3\nLinked commit count: 5\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 0\nLabels: {'test_ci_gap': 1, 'agent_instruction_gap': 1, 'human_feedback_general': 1}\nPolarities: {'bad': 2, 'neutral': 1}\nChanged file labels: {}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-14c9d5f64b307c41\",\n    \"kind\": \"pull_request_body\",\n    \"label\": \"test_ci_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/timogilvie/wavemill/pull/236\",\n    \"text\": \"GitHub feedback: test_ci_gap\\nPolarity: bad\\nKind: pull_request_body\\nRepo: timogilvie/wavemill\\nAuthor: timogilvie (User)\\nURL: https://github.com/timogilvie/wavemill/pull/236\\nTitle: HOK-1194: Refactor mill monitor to resolve phase from controller-owned stage state\\nBody:\\n## Summary\\n\\nRefactors the mill monitor's phase resolution to prioritize controller-owned stage state files over legacy marker files. This completes the transition from the legacy FSM to the revised contract where agents no longer control their own phase transitions via markers.\\n\\n- Introduces `resolve_phase()` as the single source of truth for phase determination\\n- Stage result files (`.{stage}-result.json`) take precedence over legacy markers\\n- Legacy markers (`.plan-approved`, `.coding-complete`, `.workflow-aborted`) serve as migration fallback\\n- Resolved phase is persisted to `.resolved-phase` for external consumers\\n\\n## Changes\\n\\n**Core refactor** (`shared/lib/wavemill-mill.sh`):\\n- Added `resolve_phase()`: Single phase-resolution path for all stages\\n- Added `persist_resolved_phase()`: Persist resolved phase for external readers\\n- Added `read_resolved_phase()`: Read previously resolved phase\\n- Added `resolve_monitor_ph\"\n  },\n  {\n    \"id\": \"github-feedback-comment-9f418f0a92d72918\",\n    \"kind\": \"issue_comment\",\n    \"label\": \"agent_instruction_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/timogilvie/wavemill/pull/236#issuecomment-4216604402\",\n    \"text\": \"GitHub feedback: agent_instruction_gap\\nPolarity: bad\\nKind: issue_comment\\nRepo: timogilvie/wavemill\\nAuthor: timogilvie (User)\\nURL: https://github.com/timogilvie/wavemill/pull/236#issuecomment-4216604402\\nTitle: \\nBody:\\nChallenge comparison for `HOK-1194`\\n\\nPrimary used claude-opus-4-6 (planner) + gpt-5.4 (coder) + claude-sonnet-4-5-20250929 (reviewer) vs Challenger used claude-opus-4\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/timogilvie/wavemill", "source_id": "comment-chain-pattern-assumption_checks-11e3a3d4505846aa", "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": "timogilvie/wavemill", "source_dataset": "comment_chain_patterns/assumption_checks", "training_usage": "weak_supervision"}}}, {"ruleId": "foundry_assumption_check", "level": "warning", "message": {"text": "Foundry mined assumption checks: timogilvie/wavemill"}, "properties": {"repobilityId": 382849, "scanner": "foundry_dataset", "fingerprint": "66f1634d025430591cbf61851a16c30d66b9ed95d3c6f2a9e87f70754e157b34", "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": "timogilvie/wavemill#233", "human_labels": ["human_feedback_general", "positive_human_signal", "test_ci_gap"], "issue_number": "233", "thread_label": "thread_has_human_issue_and_fix_context", "outcome_label": "ambiguous_needs_more_evidence", "source_backed": true, "max_confidence": 0.65, "repo_full_name": "timogilvie/wavemill", "training_usage": "weak_supervision", "confidence_tier": "weak_supervision", "source_chain_id": "evidence-chain-issue_chain-bc579fe600702fad", "helicopter_views": {"graphs": 2, "schemas": 2}, "artifact_families": {"docs": 1, "schemas": 1}, "source_chain_kind": "issue_chain", "changed_file_count": 0, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {}, "linked_commit_count": 4, "helicopter_view_count": 4, "source_artifact_count": 2, "classification_reasons": ["source_graph_has_real_artifacts", "source_graph_has_verification_artifacts", "repo_has_isolated_helicopter_views", "link_quality_weak_supervision", "high_risk_human_feedback_label"], "linked_ci_commit_count": 0, "verification_artifact_count": 1, "design_schema_api_artifact_count": 1}, "text": "Comment chain pattern product: assumption_checks\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#233\nOutcome: ambiguous_needs_more_evidence\nThread label: thread_has_human_issue_and_fix_context\nSource graph label: source_backed_multi_signal_graph\nReasons: source_graph_has_real_artifacts, source_graph_has_verification_artifacts, repo_has_isolated_helicopter_views, link_quality_weak_supervision, high_risk_human_feedback_label\nChain evidence:\nIssue/PR evidence chain: timogilvie/wavemill#233\nRepo: timogilvie/wavemill\nThread label: thread_has_human_issue_and_fix_context\nOutcome: ambiguous_needs_more_evidence\nComment count: 3\nLinked commit count: 4\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 0\nLabels: {'test_ci_gap': 1, 'human_feedback_general': 1, 'positive_human_signal': 1}\nPolarities: {'bad': 1, 'neutral': 1, 'good': 1}\nChanged file labels: {}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-eb218056ada1442a\",\n    \"kind\": \"pull_request_body\",\n    \"label\": \"test_ci_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/timogilvie/wavemill/pull/233\",\n    \"text\": \"GitHub feedback: test_ci_gap\\nPolarity: bad\\nKind: pull_request_body\\nRepo: timogilvie/wavemill\\nAuthor: timogilvie (User)\\nURL: https://github.com/timogilvie/wavemill/pull/233\\nTitle: HOK-1191: Reorganize control pane layout for better UX\\nBody:\\n## Summary\\n\\nReorganizes the wavemill control pane to improve information hierarchy:\\n- **Left pane**: Status log (scrolling, requires occasional attention)\\n- **Right pane**: Task list (top, ~35%) + Dashboard (bottom, ~65%) - both relatively static\\n\\nPreviously, task list and status log were both on the left, with dashboard on the right. This was suboptimal since the static, related items (task list + dashboard) were separated, while the dynamic status log was grouped with the task list.\\n\\n## Changes\\n\\n### Core Layout (`shared/lib/wavemill-orchestrator.sh`)\\n- Split horizontally first to create left/right panes (50/50)\\n- Split right pane vertically to create task list (35%) + dashboard (65%)\\n- Assign content: control.0=task list, control.1=status log, control.2=dashboard\\n\\n### Monitoring Script (`shared/lib/wavemill-mill.sh`)\\n- Updated to clear and refresh control.0 (task list pane) on each cycle\\n- Preserves in-place update behavior for static content\\n\\n\"\n  },\n  {\n    \"id\": \"github-feedback-comment-71e4333ba3c086f9\",\n    \"kind\": \"issue_comment\",\n    \"label\": \"human_feedback_general\",\n    \"polarity\": \"neutral\",\n    \"url\": \"https://github.com/timogilvie/wavemill/pull/233#issuecomment-4216192775\",\n    \"text\": \"GitHub feedback: human_feedback_general\\nPolarity: neutral\\nKind: issue_comment\\nRepo: timogilvie/wavemill\\nAuthor: timogilvie (User)\\nURL: https://github.com/timogilvie/wavemill/pull/233#issuecomment-4216192775\\nTitle: \\nBody:\\nFixes HOK-1191\"\n  },\n  {\n    \"id\": \"github-feedback-comment-d39678379441458e\",\n    \"kind\": \"issue_comment\",\n    \"label\": \"positive_human_signal\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/timogilvie/wavemill", "source_id": "comment-chain-pattern-assumption_checks-c990e1ceea69ce60", "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": "timogilvie/wavemill", "source_dataset": "comment_chain_patterns/assumption_checks", "training_usage": "weak_supervision"}}}, {"ruleId": "foundry_assumption_check", "level": "warning", "message": {"text": "Foundry mined assumption checks: timogilvie/wavemill"}, "properties": {"repobilityId": 382848, "scanner": "foundry_dataset", "fingerprint": "eccbe7320f0c317a900cd5e4b98e4c3566906793c1bb8a73747e89b8ede8922b", "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": "timogilvie/wavemill#232", "human_labels": ["human_feedback_general", "ui_workflow_gap"], "issue_number": "232", "thread_label": "thread_has_human_issue_and_fix_context", "outcome_label": "ambiguous_needs_more_evidence", "source_backed": true, "max_confidence": 0.65, "repo_full_name": "timogilvie/wavemill", "training_usage": "weak_supervision", "confidence_tier": "weak_supervision", "source_chain_id": "evidence-chain-issue_chain-72b9481e379a9866", "helicopter_views": {"graphs": 2, "schemas": 2}, "artifact_families": {"docs": 1, "schemas": 1}, "source_chain_kind": "issue_chain", "changed_file_count": 0, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {}, "linked_commit_count": 7, "helicopter_view_count": 4, "source_artifact_count": 2, "classification_reasons": ["source_graph_has_real_artifacts", "source_graph_has_verification_artifacts", "repo_has_isolated_helicopter_views", "link_quality_weak_supervision"], "linked_ci_commit_count": 0, "verification_artifact_count": 1, "design_schema_api_artifact_count": 1}, "text": "Comment chain pattern product: assumption_checks\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#232\nOutcome: ambiguous_needs_more_evidence\nThread label: thread_has_human_issue_and_fix_context\nSource graph label: source_backed_multi_signal_graph\nReasons: source_graph_has_real_artifacts, source_graph_has_verification_artifacts, repo_has_isolated_helicopter_views, link_quality_weak_supervision\nChain evidence:\nIssue/PR evidence chain: timogilvie/wavemill#232\nRepo: timogilvie/wavemill\nThread label: thread_has_human_issue_and_fix_context\nOutcome: ambiguous_needs_more_evidence\nComment count: 4\nLinked commit count: 7\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 0\nLabels: {'human_feedback_general': 3, 'ui_workflow_gap': 1}\nPolarities: {'neutral': 3, 'bad': 1}\nChanged file labels: {}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-0d5cac6fa26520a1\",\n    \"kind\": \"issue_comment\",\n    \"label\": \"human_feedback_general\",\n    \"polarity\": \"neutral\",\n    \"url\": \"https://github.com/timogilvie/wavemill/pull/232#issuecomment-4215794818\",\n    \"text\": \"GitHub feedback: human_feedback_general\\nPolarity: neutral\\nKind: issue_comment\\nRepo: timogilvie/wavemill\\nAuthor: timogilvie (User)\\nURL: https://github.com/timogilvie/wavemill/pull/232#issuecomment-4215794818\\nTitle: \\nBody:\\nCloses HOK-1198\"\n  },\n  {\n    \"id\": \"github-feedback-comment-20112208a1190f2c\",\n    \"kind\": \"issue_comment\",\n    \"label\": \"ui_workflow_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/timogilvie/wavemill/pull/232#issuecomment-4215819086\",\n    \"text\": \"GitHub feedback: ui_workflow_gap\\nPolarity: bad\\nKind: issue_comment\\nRepo: timogilvie/wavemill\\nAuthor: timogilvie (User)\\nURL: https://github.com/timogilvie/wavemill/pull/232#issuecomment-4215819086\\nTitle: \\nBody:\\nChallenge comparison for `HOK-1198`\\n\\nPrimary used claude-opus-4-6 (planner) + gpt-5.4 (coder) + claude-sonnet-4-5-20250929 (reviewer) vs Challenger used claude-opus-4-6 (planner) + claude-haiku-4-5-20251001 (coder) + claude-sonnet-4-5-20250929 (reviewer)\\nChallenge type: coder-only\\n\\nRecommended winner: primary (gpt-5.4)\\nOther PR: https://github.com/timogilvie/wavemill/pull/230\\n\\nThe primary PR correctly updates save_task_state() to accept and persist the new route metadata parameters (args 13-18), ensuring route fields are stored in the state file when tasks are created in mill.sh. The challenger passes these same args to save_task_state but never updates the function to read them \u2014 they are silently dropped by bash, meaning route metadata is not persisted at task creation time (only later in orchestrator.sh via inline jq). This is a critical correctness gap for the core requirement of making route.json the canonical downstream artifact. The challenger does better on documentat\"\n  },\n  {\n    \"id\": \"github-feedback-comment-b5565866a92cd8fd\",\n    \"kind\": \"issue_comment\",\n    \"label\": \"human_feedback_general\",\n    \"polarity\": \"neutral\",\n    \"url\": \"https://gi\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/timogilvie/wavemill", "source_id": "comment-chain-pattern-assumption_checks-8ce4513adf0a6b86", "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": "timogilvie/wavemill", "source_dataset": "comment_chain_patterns/assumption_checks", "training_usage": "weak_supervision"}}}, {"ruleId": "foundry_assumption_check", "level": "warning", "message": {"text": "Foundry mined assumption checks: timogilvie/wavemill"}, "properties": {"repobilityId": 382847, "scanner": "foundry_dataset", "fingerprint": "333a1df7720e5195466c32c0a3a74479bdac7b213fc84e9375d9cfe79c2dadf8", "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": "timogilvie/wavemill#230", "human_labels": ["human_feedback_general", "ui_workflow_gap"], "issue_number": "230", "thread_label": "thread_has_human_issue_and_fix_context", "outcome_label": "ambiguous_needs_more_evidence", "source_backed": true, "max_confidence": 0.65, "repo_full_name": "timogilvie/wavemill", "training_usage": "weak_supervision", "confidence_tier": "weak_supervision", "source_chain_id": "evidence-chain-issue_chain-631e2b6af1191faf", "helicopter_views": {"graphs": 2, "schemas": 2}, "artifact_families": {"docs": 1, "schemas": 1}, "source_chain_kind": "issue_chain", "changed_file_count": 0, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {}, "linked_commit_count": 5, "helicopter_view_count": 4, "source_artifact_count": 2, "classification_reasons": ["source_graph_has_real_artifacts", "source_graph_has_verification_artifacts", "repo_has_isolated_helicopter_views", "link_quality_weak_supervision"], "linked_ci_commit_count": 0, "verification_artifact_count": 1, "design_schema_api_artifact_count": 1}, "text": "Comment chain pattern product: assumption_checks\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#230\nOutcome: ambiguous_needs_more_evidence\nThread label: thread_has_human_issue_and_fix_context\nSource graph label: source_backed_multi_signal_graph\nReasons: source_graph_has_real_artifacts, source_graph_has_verification_artifacts, repo_has_isolated_helicopter_views, link_quality_weak_supervision\nChain evidence:\nIssue/PR evidence chain: timogilvie/wavemill#230\nRepo: timogilvie/wavemill\nThread label: thread_has_human_issue_and_fix_context\nOutcome: ambiguous_needs_more_evidence\nComment count: 2\nLinked commit count: 5\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 0\nLabels: {'ui_workflow_gap': 1, 'human_feedback_general': 1}\nPolarities: {'bad': 1, 'neutral': 1}\nChanged file labels: {}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-64b6d0b141165fa2\",\n    \"kind\": \"issue_comment\",\n    \"label\": \"ui_workflow_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/timogilvie/wavemill/pull/230#issuecomment-4215819174\",\n    \"text\": \"GitHub feedback: ui_workflow_gap\\nPolarity: bad\\nKind: issue_comment\\nRepo: timogilvie/wavemill\\nAuthor: timogilvie (User)\\nURL: https://github.com/timogilvie/wavemill/pull/230#issuecomment-4215819174\\nTitle: \\nBody:\\nChallenge comparison for `HOK-1198`\\n\\nPrimary used claude-opus-4-6 (planner) + gpt-5.4 (coder) + claude-sonnet-4-5-20250929 (reviewer) vs Challenger used claude-opus-4-6 (planner) + claude-haiku-4-5-20251001 (coder) + claude-sonnet-4-5-20250929 (reviewer)\\nChallenge type: coder-only\\n\\nRecommended winner: primary (gpt-5.4)\\nOther PR: https://github.com/timogilvie/wavemill/pull/232\\n\\nThe primary PR correctly updates save_task_state() to accept and persist the new route metadata parameters (args 13-18), ensuring route fields are stored in the state file when tasks are created in mill.sh. The challenger passes these same args to save_task_state but never updates the function to read them \u2014 they are silently dropped by bash, meaning route metadata is not persisted at task creation time (only later in orchestrator.sh via inline jq). This is a critical correctness gap for the core requirement of making route.json the canonical downstream artifact. The challenger does better on documentat\"\n  },\n  {\n    \"id\": \"github-feedback-comment-a0c977e1bcb06a6e\",\n    \"kind\": \"issue_comment\",\n    \"label\": \"human_feedback_general\",\n    \"polarity\": \"neutral\",\n    \"url\": \"https://github.com/timogilvie/wavemill/pull/230#issuecomment-4216138677\",\n    \"text\": \"GitHub feedback: human_feedback_general\\nPolarity: neutral\\nKind: issue_comment\\nRepo: timogilvie/wavemill\\nAuthor: timogilvie (User)\\nURL: https://github.com/timogilvie/wavemill/pull/230#issuecomment-4216138677\\nTitle: \\nBody:\\nclosing - lost challenge\"\n  }\n]\nChanged files:\n[]\nLinked chain ids:\n[\"evidence-chain-comment_to_commit-9b01da5c6fe94648\", \"evidence-chain-comment_to_commit-7c954ccc19a08b56\"]\nSource graph evidence:\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/timogilvie/wavemill", "source_id": "comment-chain-pattern-assumption_checks-06e989ab7549750b", "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": "timogilvie/wavemill", "source_dataset": "comment_chain_patterns/assumption_checks", "training_usage": "weak_supervision"}}}, {"ruleId": "foundry_assumption_check", "level": "warning", "message": {"text": "Foundry mined assumption checks: timogilvie/wavemill"}, "properties": {"repobilityId": 382846, "scanner": "foundry_dataset", "fingerprint": "c1603d9f879fad6fd7191c2c09c72a5b0ced44d168709548bcd5b30d23a40dd2", "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": "timogilvie/wavemill#227", "human_labels": ["agent_instruction_gap", "human_feedback_general"], "issue_number": "227", "thread_label": "thread_has_human_issue_and_fix_context", "outcome_label": "claimed_resolved_unverified", "source_backed": true, "max_confidence": 0.59, "repo_full_name": "timogilvie/wavemill", "training_usage": "weak_supervision", "confidence_tier": "weak_supervision", "source_chain_id": "evidence-chain-issue_chain-4e2a83411aea0680", "helicopter_views": {"graphs": 2, "schemas": 2}, "artifact_families": {"docs": 1, "schemas": 1}, "source_chain_kind": "issue_chain", "changed_file_count": 0, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {}, "linked_commit_count": 1, "helicopter_view_count": 4, "source_artifact_count": 2, "classification_reasons": ["source_graph_has_real_artifacts", "source_graph_has_verification_artifacts", "repo_has_isolated_helicopter_views", "link_quality_weak_supervision"], "linked_ci_commit_count": 0, "verification_artifact_count": 1, "design_schema_api_artifact_count": 1}, "text": "Comment chain pattern product: assumption_checks\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#227\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: timogilvie/wavemill#227\nRepo: timogilvie/wavemill\nThread label: thread_has_human_issue_and_fix_context\nOutcome: claimed_resolved_unverified\nComment count: 2\nLinked commit count: 1\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 0\nLabels: {'agent_instruction_gap': 1, 'human_feedback_general': 1}\nPolarities: {'bad': 1, 'neutral': 1}\nChanged file labels: {}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-bed15a66916043ef\",\n    \"kind\": \"pull_request_body\",\n    \"label\": \"agent_instruction_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/timogilvie/wavemill/pull/227\",\n    \"text\": \"GitHub feedback: agent_instruction_gap\\nPolarity: bad\\nKind: pull_request_body\\nRepo: timogilvie/wavemill\\nAuthor: timogilvie (User)\\nURL: https://github.com/timogilvie/wavemill/pull/227\\nTitle: HOK-1190: Add principal authorship check to review phase prompt\\nBody:\\n## Summary\\n\\n- Added \\\"Authorship Attribution\\\" section to the review phase prompt that instructs Claude Code to determine if it is the principal author before adding co-authored-by trailers\\n- Implements a clear decision tree: >50% of commits = principal author; \u226450% = not principal author\\n- Prevents Claude Code from greedily adding its signature to PRs where it's not the principal author\\n- Clarifies attribution rules: principal authors get co-authored-by trailers, non-principal contributors should omit them\\n\\n## Changes\\n\\n- **tools/prompts/review-phase.md**: Added 23 lines documenting authorship determination logic and attribution rules\\n\\n## Test plan\\n\\n- Reviewed the added prompt section for clarity and correctness\\n- Verified the commit authorship check command is correct: `git shortlog -sn --no-merges {{BASE_BRANCH}}..HEAD`\\n- Confirmed the decision logic aligns with the issue requirement: preventing greedy signature additions\\n- Sel\"\n  },\n  {\n    \"id\": \"github-feedback-comment-0372ce15f5458381\",\n    \"kind\": \"issue_comment\",\n    \"label\": \"human_feedback_general\",\n    \"polarity\": \"neutral\",\n    \"url\": \"https://github.com/timogilvie/wavemill/pull/227#issuecomment-4215411460\",\n    \"text\": \"GitHub feedback: human_feedback_general\\nPolarity: neutral\\nKind: issue_comment\\nRepo: timogilvie/wavemill\\nAuthor: timogilvie (User)\\nURL: https://github.com/timogilvie/wavemill/pull/227#issuecomment-4215411460\\nTitle: \\nBody:\\nCloses HOK-1190\"\n  }\n]\nChanged files:\n[]\nLinked chain ids:\n[\"evidence-chain-comment_to_commit-d87e6cf59c775fb2\", \"evidence-chain-comment_to_commit-0333a96aeb5e9b95\"]\nSource graph evidence:\nSource evi\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/timogilvie/wavemill", "source_id": "comment-chain-pattern-assumption_checks-ae0aa7c1485a3ae2", "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": "timogilvie/wavemill", "source_dataset": "comment_chain_patterns/assumption_checks", "training_usage": "weak_supervision"}}}, {"ruleId": "foundry_assumption_check", "level": "warning", "message": {"text": "Foundry mined assumption checks: timogilvie/wavemill"}, "properties": {"repobilityId": 382845, "scanner": "foundry_dataset", "fingerprint": "044279e9e54049bde5a166008faa2495c1aa146a9926a3c79857da7484bc2117", "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": "timogilvie/wavemill#226", "human_labels": ["human_feedback_general"], "issue_number": "226", "thread_label": "thread_needs_classification", "outcome_label": "ambiguous_needs_more_evidence", "source_backed": true, "max_confidence": 0.65, "repo_full_name": "timogilvie/wavemill", "training_usage": "weak_supervision", "confidence_tier": "weak_supervision", "source_chain_id": "evidence-chain-issue_chain-083e4f5aa66d0830", "helicopter_views": {"graphs": 2, "schemas": 2}, "artifact_families": {"docs": 1, "schemas": 1}, "source_chain_kind": "issue_chain", "changed_file_count": 0, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {}, "linked_commit_count": 3, "helicopter_view_count": 4, "source_artifact_count": 2, "classification_reasons": ["source_graph_has_real_artifacts", "source_graph_has_verification_artifacts", "repo_has_isolated_helicopter_views", "link_quality_weak_supervision"], "linked_ci_commit_count": 0, "verification_artifact_count": 1, "design_schema_api_artifact_count": 1}, "text": "Comment chain pattern product: assumption_checks\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#226\nOutcome: ambiguous_needs_more_evidence\nThread label: thread_needs_classification\nSource graph label: source_backed_multi_signal_graph\nReasons: source_graph_has_real_artifacts, source_graph_has_verification_artifacts, repo_has_isolated_helicopter_views, link_quality_weak_supervision\nChain evidence:\nIssue/PR evidence chain: timogilvie/wavemill#226\nRepo: timogilvie/wavemill\nThread label: thread_needs_classification\nOutcome: ambiguous_needs_more_evidence\nComment count: 1\nLinked commit count: 3\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 0\nLabels: {'human_feedback_general': 1}\nPolarities: {'neutral': 1}\nChanged file labels: {}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-7e2c99ad5742969b\",\n    \"kind\": \"pull_request_body\",\n    \"label\": \"human_feedback_general\",\n    \"polarity\": \"neutral\",\n    \"url\": \"https://github.com/timogilvie/wavemill/pull/226\",\n    \"text\": \"GitHub feedback: human_feedback_general\\nPolarity: neutral\\nKind: pull_request_body\\nRepo: timogilvie/wavemill\\nAuthor: timogilvie (User)\\nURL: https://github.com/timogilvie/wavemill/pull/226\\nTitle: HOK-1189: Remove duplicate tips and consolidate dashboard headers\\nBody:\\n## Summary\\n- Moved `clear` command inside the main render loop to clear the screen at the start of each cycle rather than once at startup\\n- Removed extra newline after the dashboard header to eliminate blank lines between the header and table\\n- These changes fix duplicate \\\"Refreshes every 3s\\\" tips that appeared occasionally and clean up excessive whitespace in the dashboard pane\\n\\n## Changes\\n- `shared/lib/wavemill-status.sh`: Updated screen clearing logic and header formatting\\n\\n## Test plan\\n- Run the dashboard and verify no duplicate status tips appear\\n- Verify the header (\\\"Wavemill Dashboard\\\" + timestamp) appears cleanly with proper spacing above the table\\n- Confirm the dashboard updates every 3 seconds without flickering or display artifacts\\n\\n## Self-review\\n\u2705 Static analysis review passed with no findings\"\n  }\n]\nChanged files:\n[]\nLinked chain ids:\n[\"evidence-chain-comment_to_commit-a30d43031d390c1f\"]\nSource graph evidence:\nSource evidence repo graph summary\nRepo: timogilvie/wavemill\nGraph label: source_backed_multi_signal_graph\nNodes: 10\nEdges: 12\nNode types: {\"cooccurrence_profile\": 1, \"github_repo_summary\": 1, \"helicopter_repo_view\": 4, \"repo\": 1, \"source_artifact\": 2, \"source_bundle\": 1}\nEdge types: {\"artifact_needs_claim_verification\": 1, \"artifact_supports_verification\": 1, \"repo_has_cooccurrence_profile\": 1, \"repo_has_github_evidence_summary\": 1, \"repo_has_graphs_helicopter_view\": 2, \"repo_has_schemas_helicopter_view\": 2, \"repo_has_source_artifact\": 2, \"repo_has_source_bundle\": 1, \"source_bundle_uses_cooccurrence_profile\": 1}\nArtifact families: {\"docs\": 1, \"schemas\": 1}\nHelicopter views: {\"graphs\": 2, \"schemas\": 2}\nBundle labels: {\"sourc\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/timogilvie/wavemill", "source_id": "comment-chain-pattern-assumption_checks-b839b889a898e934", "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": "timogilvie/wavemill", "source_dataset": "comment_chain_patterns/assumption_checks", "training_usage": "weak_supervision"}}}, {"ruleId": "foundry_assumption_check", "level": "warning", "message": {"text": "Foundry mined assumption checks: timogilvie/wavemill"}, "properties": {"repobilityId": 382844, "scanner": "foundry_dataset", "fingerprint": "c42f473f029f897cea38004ea8bbcebab466ec9b02c228d3f92fbb295e4a9dc7", "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": "timogilvie/wavemill#225", "human_labels": ["test_ci_gap"], "issue_number": "225", "thread_label": "thread_has_human_issue_and_fix_context", "outcome_label": "ambiguous_needs_more_evidence", "source_backed": true, "max_confidence": 0.65, "repo_full_name": "timogilvie/wavemill", "training_usage": "weak_supervision", "confidence_tier": "weak_supervision", "source_chain_id": "evidence-chain-issue_chain-023aa7103021eeb0", "helicopter_views": {"graphs": 2, "schemas": 2}, "artifact_families": {"docs": 1, "schemas": 1}, "source_chain_kind": "issue_chain", "changed_file_count": 0, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {}, "linked_commit_count": 5, "helicopter_view_count": 4, "source_artifact_count": 2, "classification_reasons": ["source_graph_has_real_artifacts", "source_graph_has_verification_artifacts", "repo_has_isolated_helicopter_views", "link_quality_weak_supervision", "high_risk_human_feedback_label"], "linked_ci_commit_count": 0, "verification_artifact_count": 1, "design_schema_api_artifact_count": 1}, "text": "Comment chain pattern product: assumption_checks\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#225\nOutcome: ambiguous_needs_more_evidence\nThread label: thread_has_human_issue_and_fix_context\nSource graph label: source_backed_multi_signal_graph\nReasons: source_graph_has_real_artifacts, source_graph_has_verification_artifacts, repo_has_isolated_helicopter_views, link_quality_weak_supervision, high_risk_human_feedback_label\nChain evidence:\nIssue/PR evidence chain: timogilvie/wavemill#225\nRepo: timogilvie/wavemill\nThread label: thread_has_human_issue_and_fix_context\nOutcome: ambiguous_needs_more_evidence\nComment count: 1\nLinked commit count: 5\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 0\nLabels: {'test_ci_gap': 1}\nPolarities: {'bad': 1}\nChanged file labels: {}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-2a6988171b015902\",\n    \"kind\": \"pull_request_body\",\n    \"label\": \"test_ci_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/timogilvie/wavemill/pull/225\",\n    \"text\": \"GitHub feedback: test_ci_gap\\nPolarity: bad\\nKind: pull_request_body\\nRepo: timogilvie/wavemill\\nAuthor: timogilvie (User)\\nURL: https://github.com/timogilvie/wavemill/pull/225\\nTitle: HOK-1182: Remove agent-managed exit semantics from phased workflow prompts\\nBody:\\n## Summary\\n\\nThis PR removes agent-managed lifecycle instructions from phased workflow prompts, making the orchestrator\u2014not the agent\u2014responsible for stage transitions.\\n\\n- Removed `/exit`, \\\"remain in session\\\", and similar lifecycle instructions from phase prompt templates\\n- Updated `agent-adapters.sh` helper functions to emit agent-agnostic lifecycle text\\n- Added regression tests to prevent reintroduction of exit semantics\\n- Updated documentation to reflect the new controller-owned stage state model\\n\\n## Changes\\n\\n### Phase Prompt Templates\\n- `tools/prompts/planning-phase.md` - Removed exit commands and lifecycle instructions\\n- `tools/prompts/coding-phase.md` - Removed exit commands and lifecycle instructions  \\n- `tools/prompts/review-phase.md` - Removed exit commands and lifecycle instructions\\n\\n### Agent Adapters\\n- `shared/lib/agent-adapters.sh` - Updated helper functions to return agent-agnostic text:\\n  - `agent_exit_followup_t\"\n  }\n]\nChanged files:\n[]\nLinked chain ids:\n[\"evidence-chain-comment_to_commit-5f779f793f491814\"]\nSource graph evidence:\nSource evidence repo graph summary\nRepo: timogilvie/wavemill\nGraph label: source_backed_multi_signal_graph\nNodes: 10\nEdges: 12\nNode types: {\"cooccurrence_profile\": 1, \"github_repo_summary\": 1, \"helicopter_repo_view\": 4, \"repo\": 1, \"source_artifact\": 2, \"source_bundle\": 1}\nEdge types: {\"artifact_needs_claim_verification\": 1, \"artifact_supports_verification\": 1, \"repo_has_cooccurrence_profile\": 1, \"repo_has_github_evidence_summary\": 1, \"repo_has_graphs_helicopter_view\": 2, \"repo_has_schemas_helicopter_view\": 2, \"repo_has_source_artifact\": 2, \"repo_has_source_bundle\": 1, \"source_bundle_u\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/timogilvie/wavemill", "source_id": "comment-chain-pattern-assumption_checks-5e91005f6afb18e1", "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": "timogilvie/wavemill", "source_dataset": "comment_chain_patterns/assumption_checks", "training_usage": "weak_supervision"}}}, {"ruleId": "foundry_assumption_check", "level": "warning", "message": {"text": "Foundry mined assumption checks: timogilvie/wavemill"}, "properties": {"repobilityId": 382843, "scanner": "foundry_dataset", "fingerprint": "495ab84453faca8f40d21983b2458f7f852b52dce955987e664919f66993e1d3", "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": "timogilvie/wavemill#224", "human_labels": ["human_feedback_general"], "issue_number": "224", "thread_label": "thread_needs_classification", "outcome_label": "ambiguous_needs_more_evidence", "source_backed": true, "max_confidence": 0.0, "repo_full_name": "timogilvie/wavemill", "training_usage": "negative_or_unresolved", "confidence_tier": "unresolved", "source_chain_id": "evidence-chain-issue_chain-decd4bbbede4578e", "helicopter_views": {"graphs": 2, "schemas": 2}, "artifact_families": {"docs": 1, "schemas": 1}, "source_chain_kind": "issue_chain", "changed_file_count": 0, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {}, "linked_commit_count": 0, "helicopter_view_count": 4, "source_artifact_count": 2, "classification_reasons": ["source_graph_has_real_artifacts", "source_graph_has_verification_artifacts", "repo_has_isolated_helicopter_views", "link_quality_unresolved"], "linked_ci_commit_count": 0, "verification_artifact_count": 1, "design_schema_api_artifact_count": 1}, "text": "Comment chain pattern product: assumption_checks\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#224\nOutcome: ambiguous_needs_more_evidence\nThread label: thread_needs_classification\nSource graph label: source_backed_multi_signal_graph\nReasons: source_graph_has_real_artifacts, source_graph_has_verification_artifacts, repo_has_isolated_helicopter_views, link_quality_unresolved\nChain evidence:\nIssue/PR evidence chain: timogilvie/wavemill#224\nRepo: timogilvie/wavemill\nThread label: thread_needs_classification\nOutcome: ambiguous_needs_more_evidence\nComment count: 1\nLinked commit count: 0\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 0\nLabels: {'human_feedback_general': 1}\nPolarities: {'neutral': 1}\nChanged file labels: {}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-77e72ca2c012b8a6\",\n    \"kind\": \"issue_comment\",\n    \"label\": \"human_feedback_general\",\n    \"polarity\": \"neutral\",\n    \"url\": \"https://github.com/timogilvie/wavemill/pull/224#issuecomment-4215169475\",\n    \"text\": \"GitHub feedback: human_feedback_general\\nPolarity: neutral\\nKind: issue_comment\\nRepo: timogilvie/wavemill\\nAuthor: timogilvie (User)\\nURL: https://github.com/timogilvie/wavemill/pull/224#issuecomment-4215169475\\nTitle: \\nBody:\\nCloses HOK-1187\\n\"\n  }\n]\nChanged files:\n[]\nLinked chain ids:\n[\"evidence-chain-comment_to_commit-3ffd9ac7f7b1a058\"]\nSource graph evidence:\nSource evidence repo graph summary\nRepo: timogilvie/wavemill\nGraph label: source_backed_multi_signal_graph\nNodes: 10\nEdges: 12\nNode types: {\"cooccurrence_profile\": 1, \"github_repo_summary\": 1, \"helicopter_repo_view\": 4, \"repo\": 1, \"source_artifact\": 2, \"source_bundle\": 1}\nEdge types: {\"artifact_needs_claim_verification\": 1, \"artifact_supports_verification\": 1, \"repo_has_cooccurrence_profile\": 1, \"repo_has_github_evidence_summary\": 1, \"repo_has_graphs_helicopter_view\": 2, \"repo_has_schemas_helicopter_view\": 2, \"repo_has_source_artifact\": 2, \"repo_has_source_bundle\": 1, \"source_bundle_uses_cooccurrence_profile\": 1}\nArtifact families: {\"docs\": 1, \"schemas\": 1}\nHelicopter views: {\"graphs\": 2, \"schemas\": 2}\nBundle labels: {\"source_backed_fake_real_verification_bundle\": 1}\nCo-occurrence labels: {\"fake_real_data_plus_verification_gap\": 1}", "source": "foundry_mined_dataset", "repo_url": "https://github.com/timogilvie/wavemill", "source_id": "comment-chain-pattern-assumption_checks-1fc998653f4d4247", "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": "timogilvie/wavemill", "source_dataset": "comment_chain_patterns/assumption_checks", "training_usage": "negative_or_unresolved"}}}, {"ruleId": "foundry_assumption_check", "level": "warning", "message": {"text": "Foundry mined assumption checks: timogilvie/wavemill"}, "properties": {"repobilityId": 382842, "scanner": "foundry_dataset", "fingerprint": "d07a11de486d94c5c86c89efb58c80c68f3561227818c3035527eed3957d1e39", "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": "timogilvie/wavemill#222", "human_labels": ["test_ci_gap"], "issue_number": "222", "thread_label": "thread_has_human_issue_and_fix_context", "outcome_label": "ambiguous_needs_more_evidence", "source_backed": true, "max_confidence": 0.58, "repo_full_name": "timogilvie/wavemill", "training_usage": "weak_supervision", "confidence_tier": "weak_supervision", "source_chain_id": "evidence-chain-issue_chain-28296e337fd6eee5", "helicopter_views": {"graphs": 2, "schemas": 2}, "artifact_families": {"docs": 1, "schemas": 1}, "source_chain_kind": "issue_chain", "changed_file_count": 0, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {}, "linked_commit_count": 1, "helicopter_view_count": 4, "source_artifact_count": 2, "classification_reasons": ["source_graph_has_real_artifacts", "source_graph_has_verification_artifacts", "repo_has_isolated_helicopter_views", "link_quality_weak_supervision", "high_risk_human_feedback_label"], "linked_ci_commit_count": 0, "verification_artifact_count": 1, "design_schema_api_artifact_count": 1}, "text": "Comment chain pattern product: assumption_checks\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#222\nOutcome: ambiguous_needs_more_evidence\nThread label: thread_has_human_issue_and_fix_context\nSource graph label: source_backed_multi_signal_graph\nReasons: source_graph_has_real_artifacts, source_graph_has_verification_artifacts, repo_has_isolated_helicopter_views, link_quality_weak_supervision, high_risk_human_feedback_label\nChain evidence:\nIssue/PR evidence chain: timogilvie/wavemill#222\nRepo: timogilvie/wavemill\nThread label: thread_has_human_issue_and_fix_context\nOutcome: ambiguous_needs_more_evidence\nComment count: 1\nLinked commit count: 1\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 0\nLabels: {'test_ci_gap': 1}\nPolarities: {'bad': 1}\nChanged file labels: {}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-120fbcd2f898844b\",\n    \"kind\": \"issue_comment\",\n    \"label\": \"test_ci_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/timogilvie/wavemill/pull/222#issuecomment-4214431680\",\n    \"text\": \"GitHub feedback: test_ci_gap\\nPolarity: bad\\nKind: issue_comment\\nRepo: timogilvie/wavemill\\nAuthor: timogilvie (User)\\nURL: https://github.com/timogilvie/wavemill/pull/222#issuecomment-4214431680\\nTitle: \\nBody:\\nChallenge comparison for `HOK-1186`\\n\\nRecommended winner: primary (gpt-5.4)\\nOther PR: https://github.com/timogilvie/wavemill/pull/220\\n\\nThe primary PR delivers a more complete solution: extracts a reusable `isInteractive()` utility following the thin-tools pattern, adds structured validation warning logging with `logValidationWarning()`, comprehensive test coverage for both new modules, and properly restructures the try/catch flow. However, it notably misses the actual root cause \u2014 the `extractSection()` regex doesn't match numbered headings like '## 6. Validation Steps'. The challenger correctly identifies and fixes that regex bug, which is the deeper fix, but delivers a much thinner PR with an inline TTY check, no logging infrastructure, and no new shared utilities. Primary wins on completeness, code quality, and test coverage despite the challenger having the more correct root-cause fix.\"\n  }\n]\nChanged files:\n[]\nLinked chain ids:\n[\"evidence-chain-comment_to_commit-1e1d9ffdf7cfdd07\"]\nSource graph evidence:\nSource evidence repo graph summary\nRepo: timogilvie/wavemill\nGraph label: source_backed_multi_signal_graph\nNodes: 10\nEdges: 12\nNode types: {\"cooccurrence_profile\": 1, \"github_repo_summary\": 1, \"helicopter_repo_view\": 4, \"repo\": 1, \"source_artifact\": 2, \"source_bundle\": 1}\nEdge types: {\"artifact_needs_claim_verification\": 1, \"artifact_supports_verification\": 1, \"repo_has_cooccurrence_profile\": 1, \"repo_has_github_evidence_summary\": 1, \"repo_has_graphs_helicopter_view\": 2, \"repo_has_schemas_helicopter_view\": 2, \"repo_has_source_artifact\": 2, \"repo_has_source_bundle\": 1, \"source_bundle_uses_cooccurrence_profile\": 1}\nArtifact families: {\"docs\": 1, \"schemas\": 1}\nHelicopter vi\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/timogilvie/wavemill", "source_id": "comment-chain-pattern-assumption_checks-da8429d40a1f60b7", "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": "timogilvie/wavemill", "source_dataset": "comment_chain_patterns/assumption_checks", "training_usage": "weak_supervision"}}}, {"ruleId": "foundry_assumption_check", "level": "warning", "message": {"text": "Foundry mined assumption checks: timogilvie/wavemill"}, "properties": {"repobilityId": 382841, "scanner": "foundry_dataset", "fingerprint": "1eb3cff138c80565c9d94c1c87c122eb93057bfca298ae86c461ce62f3e85469", "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": "timogilvie/wavemill#221", "human_labels": ["agent_instruction_gap", "human_feedback_general"], "issue_number": "221", "thread_label": "thread_has_human_issue_and_fix_context", "outcome_label": "ambiguous_needs_more_evidence", "source_backed": true, "max_confidence": 0.58, "repo_full_name": "timogilvie/wavemill", "training_usage": "weak_supervision", "confidence_tier": "weak_supervision", "source_chain_id": "evidence-chain-issue_chain-f98d064a9f295a1b", "helicopter_views": {"graphs": 2, "schemas": 2}, "artifact_families": {"docs": 1, "schemas": 1}, "source_chain_kind": "issue_chain", "changed_file_count": 0, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {}, "linked_commit_count": 1, "helicopter_view_count": 4, "source_artifact_count": 2, "classification_reasons": ["source_graph_has_real_artifacts", "source_graph_has_verification_artifacts", "repo_has_isolated_helicopter_views", "link_quality_weak_supervision"], "linked_ci_commit_count": 0, "verification_artifact_count": 1, "design_schema_api_artifact_count": 1}, "text": "Comment chain pattern product: assumption_checks\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#221\nOutcome: ambiguous_needs_more_evidence\nThread label: thread_has_human_issue_and_fix_context\nSource graph label: source_backed_multi_signal_graph\nReasons: source_graph_has_real_artifacts, source_graph_has_verification_artifacts, repo_has_isolated_helicopter_views, link_quality_weak_supervision\nChain evidence:\nIssue/PR evidence chain: timogilvie/wavemill#221\nRepo: timogilvie/wavemill\nThread label: thread_has_human_issue_and_fix_context\nOutcome: ambiguous_needs_more_evidence\nComment count: 4\nLinked commit count: 1\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 0\nLabels: {'agent_instruction_gap': 2, 'human_feedback_general': 2}\nPolarities: {'bad': 2, 'neutral': 2}\nChanged file labels: {}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-b4b7338b34400148\",\n    \"kind\": \"pull_request_body\",\n    \"label\": \"agent_instruction_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/timogilvie/wavemill/pull/221\",\n    \"text\": \"GitHub feedback: agent_instruction_gap\\nPolarity: bad\\nKind: pull_request_body\\nRepo: timogilvie/wavemill\\nAuthor: timogilvie (User)\\nURL: https://github.com/timogilvie/wavemill/pull/221\\nTitle: HOK-1177__challenger: Add controller-owned stage state to phased orchestrator\\nBody:\\n## Summary\\n\\n- Introduces `shared/lib/stage-state.sh` \u2014 a new library providing controller-owned stage state management via `.phase-config.json` and per-stage result JSON files\\n- Wires stage state into the `wavemill-mill.sh` monitor loop so phase detection prefers `.phase-config.json` as canonical source, falling back to legacy markers when absent\\n- Models `awaiting_user` as an explicit phase between planning completion and coding start, replacing the implicit `.plan-approved` inference\\n- Dual-writes legacy marker files (`.plan-approved`, `.coding-complete`, etc.) alongside `.phase-config.json` for backward compatibility during rollout\\n\\n## Changes\\n\\n- **`shared/lib/stage-state.sh`** (new): 7 functions \u2014 `stage_state_init`, `stage_state_get_current`, `stage_state_transition`, `stage_state_legacy_detect`, `stage_state_write_result`, `stage_state_is_awaiting_user`, `_stage_state_validate_transition`. All writes are ato\"\n  },\n  {\n    \"id\": \"github-feedback-comment-92121e38a8415558\",\n    \"kind\": \"issue_comment\",\n    \"label\": \"human_feedback_general\",\n    \"polarity\": \"neutral\",\n    \"url\": \"https://github.com/timogilvie/wavemill/pull/221#issuecomment-4214357159\",\n    \"text\": \"GitHub feedback: human_feedback_general\\nPolarity: neutral\\nKind: issue_comment\\nRepo: timogilvie/wavemill\\nAuthor: timogilvie (User)\\nURL: https://github.com/timogilvie/wavemill/pull/221#issuecomment-4214357159\\nTitle: \\nBody:\\nLinked to Linear: HOK-1177\"\n  },\n  {\n    \"id\": \"github-feedback-comment-2dff9eb8a4ec1cc3\",\n    \"kind\": \"issue_comment\",\n    \"label\": \"agent_instruction_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://git\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/timogilvie/wavemill", "source_id": "comment-chain-pattern-assumption_checks-d57ee5b487fcbaa3", "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": "timogilvie/wavemill", "source_dataset": "comment_chain_patterns/assumption_checks", "training_usage": "weak_supervision"}}}, {"ruleId": "foundry_assumption_check", "level": "warning", "message": {"text": "Foundry mined assumption checks: timogilvie/wavemill"}, "properties": {"repobilityId": 382840, "scanner": "foundry_dataset", "fingerprint": "0f2375a87ebaf849ad56c704b4df883bbec24fa42dbc70af3ba0ad3a67ce0936", "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": "timogilvie/wavemill#220", "human_labels": ["human_feedback_general", "test_ci_gap"], "issue_number": "220", "thread_label": "thread_has_human_issue_and_fix_context", "outcome_label": "ambiguous_needs_more_evidence", "source_backed": true, "max_confidence": 0.58, "repo_full_name": "timogilvie/wavemill", "training_usage": "weak_supervision", "confidence_tier": "weak_supervision", "source_chain_id": "evidence-chain-issue_chain-976665a30c757be7", "helicopter_views": {"graphs": 2, "schemas": 2}, "artifact_families": {"docs": 1, "schemas": 1}, "source_chain_kind": "issue_chain", "changed_file_count": 0, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {}, "linked_commit_count": 1, "helicopter_view_count": 4, "source_artifact_count": 2, "classification_reasons": ["source_graph_has_real_artifacts", "source_graph_has_verification_artifacts", "repo_has_isolated_helicopter_views", "link_quality_weak_supervision", "high_risk_human_feedback_label"], "linked_ci_commit_count": 0, "verification_artifact_count": 1, "design_schema_api_artifact_count": 1}, "text": "Comment chain pattern product: assumption_checks\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#220\nOutcome: ambiguous_needs_more_evidence\nThread label: thread_has_human_issue_and_fix_context\nSource graph label: source_backed_multi_signal_graph\nReasons: source_graph_has_real_artifacts, source_graph_has_verification_artifacts, repo_has_isolated_helicopter_views, link_quality_weak_supervision, high_risk_human_feedback_label\nChain evidence:\nIssue/PR evidence chain: timogilvie/wavemill#220\nRepo: timogilvie/wavemill\nThread label: thread_has_human_issue_and_fix_context\nOutcome: ambiguous_needs_more_evidence\nComment count: 2\nLinked commit count: 1\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 0\nLabels: {'test_ci_gap': 1, 'human_feedback_general': 1}\nPolarities: {'bad': 1, 'neutral': 1}\nChanged file labels: {}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-499d268483558667\",\n    \"kind\": \"issue_comment\",\n    \"label\": \"test_ci_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/timogilvie/wavemill/pull/220#issuecomment-4214431836\",\n    \"text\": \"GitHub feedback: test_ci_gap\\nPolarity: bad\\nKind: issue_comment\\nRepo: timogilvie/wavemill\\nAuthor: timogilvie (User)\\nURL: https://github.com/timogilvie/wavemill/pull/220#issuecomment-4214431836\\nTitle: \\nBody:\\nChallenge comparison for `HOK-1186`\\n\\nRecommended winner: primary (gpt-5.4)\\nOther PR: https://github.com/timogilvie/wavemill/pull/220\\n\\nThe primary PR delivers a more complete solution: extracts a reusable `isInteractive()` utility following the thin-tools pattern, adds structured validation warning logging with `logValidationWarning()`, comprehensive test coverage for both new modules, and properly restructures the try/catch flow. However, it notably misses the actual root cause \u2014 the `extractSection()` regex doesn't match numbered headings like '## 6. Validation Steps'. The challenger correctly identifies and fixes that regex bug, which is the deeper fix, but delivers a much thinner PR with an inline TTY check, no logging infrastructure, and no new shared utilities. Primary wins on completeness, code quality, and test coverage despite the challenger having the more correct root-cause fix.\"\n  },\n  {\n    \"id\": \"github-feedback-comment-b1544a11ea34e565\",\n    \"kind\": \"issue_comment\",\n    \"label\": \"human_feedback_general\",\n    \"polarity\": \"neutral\",\n    \"url\": \"https://github.com/timogilvie/wavemill/pull/220#issuecomment-4215102124\",\n    \"text\": \"GitHub feedback: human_feedback_general\\nPolarity: neutral\\nKind: issue_comment\\nRepo: timogilvie/wavemill\\nAuthor: timogilvie (User)\\nURL: https://github.com/timogilvie/wavemill/pull/220#issuecomment-4215102124\\nTitle: \\nBody:\\nclosing losing challenger\"\n  }\n]\nChanged files:\n[]\nLinked chain ids:\n[\"evidence-chain-comment_to_commit-daeaa87f1ccfa3fd\", \"evidence-chain-comment_to_commit-b64a227d721e26f1\"]\nSource graph evidence:\nSource evidence repo graph summary\nRepo: timogilvie/wavemill\nGraph lab\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/timogilvie/wavemill", "source_id": "comment-chain-pattern-assumption_checks-b34dcde7d8ac6614", "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": "timogilvie/wavemill", "source_dataset": "comment_chain_patterns/assumption_checks", "training_usage": "weak_supervision"}}}, {"ruleId": "foundry_assumption_check", "level": "warning", "message": {"text": "Foundry mined assumption checks: timogilvie/wavemill"}, "properties": {"repobilityId": 382839, "scanner": "foundry_dataset", "fingerprint": "a3a1322f67b8e222ac4715b86a87d52d51ea147fd391817d82a5de99602ad1e2", "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": "timogilvie/wavemill#217", "human_labels": ["agent_instruction_gap", "human_feedback_general"], "issue_number": "217", "thread_label": "thread_has_human_issue_without_fix_context", "outcome_label": "ambiguous_needs_more_evidence", "source_backed": true, "max_confidence": 0.0, "repo_full_name": "timogilvie/wavemill", "training_usage": "negative_or_unresolved", "confidence_tier": "unresolved", "source_chain_id": "evidence-chain-issue_chain-bd093f357f1b23d2", "helicopter_views": {"graphs": 2, "schemas": 2}, "artifact_families": {"docs": 1, "schemas": 1}, "source_chain_kind": "issue_chain", "changed_file_count": 0, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {}, "linked_commit_count": 0, "helicopter_view_count": 4, "source_artifact_count": 2, "classification_reasons": ["source_graph_has_real_artifacts", "source_graph_has_verification_artifacts", "repo_has_isolated_helicopter_views", "link_quality_unresolved"], "linked_ci_commit_count": 0, "verification_artifact_count": 1, "design_schema_api_artifact_count": 1}, "text": "Comment chain pattern product: assumption_checks\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#217\nOutcome: ambiguous_needs_more_evidence\nThread label: thread_has_human_issue_without_fix_context\nSource graph label: source_backed_multi_signal_graph\nReasons: source_graph_has_real_artifacts, source_graph_has_verification_artifacts, repo_has_isolated_helicopter_views, link_quality_unresolved\nChain evidence:\nIssue/PR evidence chain: timogilvie/wavemill#217\nRepo: timogilvie/wavemill\nThread label: thread_has_human_issue_without_fix_context\nOutcome: ambiguous_needs_more_evidence\nComment count: 2\nLinked commit count: 0\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 0\nLabels: {'human_feedback_general': 1, 'agent_instruction_gap': 1}\nPolarities: {'neutral': 1, 'bad': 1}\nChanged file labels: {}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-60857952e6626a0e\",\n    \"kind\": \"issue_comment\",\n    \"label\": \"human_feedback_general\",\n    \"polarity\": \"neutral\",\n    \"url\": \"https://github.com/timogilvie/wavemill/pull/217#issuecomment-4209944102\",\n    \"text\": \"GitHub feedback: human_feedback_general\\nPolarity: neutral\\nKind: issue_comment\\nRepo: timogilvie/wavemill\\nAuthor: timogilvie (User)\\nURL: https://github.com/timogilvie/wavemill/pull/217#issuecomment-4209944102\\nTitle: \\nBody:\\nCloses HOK-1184__challenger\"\n  },\n  {\n    \"id\": \"github-feedback-comment-d1bd304be1062178\",\n    \"kind\": \"issue_comment\",\n    \"label\": \"agent_instruction_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/timogilvie/wavemill/pull/217#issuecomment-4209975064\",\n    \"text\": \"GitHub feedback: agent_instruction_gap\\nPolarity: bad\\nKind: issue_comment\\nRepo: timogilvie/wavemill\\nAuthor: timogilvie (User)\\nURL: https://github.com/timogilvie/wavemill/pull/217#issuecomment-4209975064\\nTitle: \\nBody:\\nChallenge comparison for `HOK-1184`\\n\\nRecommended winner: challenger (gpt-5.4)\\nOther PR: https://github.com/timogilvie/wavemill/pull/216\\n\\nThe challenger implementation is more robust: it uses a proper while loop for re-prompting (allowing multiple d/m presses without nesting), reads subsystem data from existing context specs via context-tool.ts helpers rather than re-running full detectSubsystems(), adds comprehensive shell tests in check-shell.sh and unit tests for the tool, and handles the m\u2192d interaction correctly. The primary uses a linear flow where d can only be pressed once (no loop), extracts display into functions but doesn't loop back properly for repeated interactions, and uses detectSubsystems() which does heuristic analysis rather than reading existing specs.\"\n  }\n]\nChanged files:\n[]\nLinked chain ids:\n[\"evidence-chain-comment_to_commit-25ce7654412ea63c\", \"evidence-chain-comment_to_commit-d07078e412da8140\"]\nSource graph evidence:\nSource evidence repo graph summary\nRepo: timogilvie/wavemill\nGraph label: source_backed_multi_signal_graph\nNodes: 10\nEdges: 12\nNode types: {\"cooccurrence_profile\": 1, \"github_repo_summary\"\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/timogilvie/wavemill", "source_id": "comment-chain-pattern-assumption_checks-5e530b3fd879d4cb", "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": "timogilvie/wavemill", "source_dataset": "comment_chain_patterns/assumption_checks", "training_usage": "negative_or_unresolved"}}}, {"ruleId": "foundry_assumption_check", "level": "warning", "message": {"text": "Foundry mined assumption checks: timogilvie/wavemill"}, "properties": {"repobilityId": 382838, "scanner": "foundry_dataset", "fingerprint": "c9c52691f61b9c77a952cace6f8c131113bfdc1043f5d29fb8177284a67b9324", "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": "timogilvie/wavemill#213", "human_labels": ["human_feedback_general"], "issue_number": "213", "thread_label": "thread_needs_classification", "outcome_label": "ambiguous_needs_more_evidence", "source_backed": true, "max_confidence": 0.0, "repo_full_name": "timogilvie/wavemill", "training_usage": "negative_or_unresolved", "confidence_tier": "unresolved", "source_chain_id": "evidence-chain-issue_chain-157c1414e752538d", "helicopter_views": {"graphs": 2, "schemas": 2}, "artifact_families": {"docs": 1, "schemas": 1}, "source_chain_kind": "issue_chain", "changed_file_count": 0, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {}, "linked_commit_count": 0, "helicopter_view_count": 4, "source_artifact_count": 2, "classification_reasons": ["source_graph_has_real_artifacts", "source_graph_has_verification_artifacts", "repo_has_isolated_helicopter_views", "link_quality_unresolved"], "linked_ci_commit_count": 0, "verification_artifact_count": 1, "design_schema_api_artifact_count": 1}, "text": "Comment chain pattern product: assumption_checks\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#213\nOutcome: ambiguous_needs_more_evidence\nThread label: thread_needs_classification\nSource graph label: source_backed_multi_signal_graph\nReasons: source_graph_has_real_artifacts, source_graph_has_verification_artifacts, repo_has_isolated_helicopter_views, link_quality_unresolved\nChain evidence:\nIssue/PR evidence chain: timogilvie/wavemill#213\nRepo: timogilvie/wavemill\nThread label: thread_needs_classification\nOutcome: ambiguous_needs_more_evidence\nComment count: 1\nLinked commit count: 0\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 0\nLabels: {'human_feedback_general': 1}\nPolarities: {'neutral': 1}\nChanged file labels: {}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-17ffd2f1088c4df0\",\n    \"kind\": \"issue_comment\",\n    \"label\": \"human_feedback_general\",\n    \"polarity\": \"neutral\",\n    \"url\": \"https://github.com/timogilvie/wavemill/pull/213#issuecomment-4208823591\",\n    \"text\": \"GitHub feedback: human_feedback_general\\nPolarity: neutral\\nKind: issue_comment\\nRepo: timogilvie/wavemill\\nAuthor: timogilvie (User)\\nURL: https://github.com/timogilvie/wavemill/pull/213#issuecomment-4208823591\\nTitle: \\nBody:\\nFixes HOK-1176\"\n  }\n]\nChanged files:\n[]\nLinked chain ids:\n[\"evidence-chain-comment_to_commit-3d7508bba2762293\"]\nSource graph evidence:\nSource evidence repo graph summary\nRepo: timogilvie/wavemill\nGraph label: source_backed_multi_signal_graph\nNodes: 10\nEdges: 12\nNode types: {\"cooccurrence_profile\": 1, \"github_repo_summary\": 1, \"helicopter_repo_view\": 4, \"repo\": 1, \"source_artifact\": 2, \"source_bundle\": 1}\nEdge types: {\"artifact_needs_claim_verification\": 1, \"artifact_supports_verification\": 1, \"repo_has_cooccurrence_profile\": 1, \"repo_has_github_evidence_summary\": 1, \"repo_has_graphs_helicopter_view\": 2, \"repo_has_schemas_helicopter_view\": 2, \"repo_has_source_artifact\": 2, \"repo_has_source_bundle\": 1, \"source_bundle_uses_cooccurrence_profile\": 1}\nArtifact families: {\"docs\": 1, \"schemas\": 1}\nHelicopter views: {\"graphs\": 2, \"schemas\": 2}\nBundle labels: {\"source_backed_fake_real_verification_bundle\": 1}\nCo-occurrence labels: {\"fake_real_data_plus_verification_gap\": 1}", "source": "foundry_mined_dataset", "repo_url": "https://github.com/timogilvie/wavemill", "source_id": "comment-chain-pattern-assumption_checks-f955de50e52ae928", "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": "timogilvie/wavemill", "source_dataset": "comment_chain_patterns/assumption_checks", "training_usage": "negative_or_unresolved"}}}, {"ruleId": "foundry_assumption_check", "level": "warning", "message": {"text": "Foundry mined assumption checks: timogilvie/wavemill"}, "properties": {"repobilityId": 382837, "scanner": "foundry_dataset", "fingerprint": "21f19f8ac99b58402b05c9d68dd45fa7c31ca5c0ab69a93acc001af09ae7c77e", "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": "timogilvie/wavemill#211", "human_labels": ["human_feedback_general"], "issue_number": "211", "thread_label": "thread_needs_classification", "outcome_label": "ambiguous_needs_more_evidence", "source_backed": true, "max_confidence": 0.0, "repo_full_name": "timogilvie/wavemill", "training_usage": "negative_or_unresolved", "confidence_tier": "unresolved", "source_chain_id": "evidence-chain-issue_chain-999176945b404bf0", "helicopter_views": {"graphs": 2, "schemas": 2}, "artifact_families": {"docs": 1, "schemas": 1}, "source_chain_kind": "issue_chain", "changed_file_count": 0, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {}, "linked_commit_count": 0, "helicopter_view_count": 4, "source_artifact_count": 2, "classification_reasons": ["source_graph_has_real_artifacts", "source_graph_has_verification_artifacts", "repo_has_isolated_helicopter_views", "link_quality_unresolved"], "linked_ci_commit_count": 0, "verification_artifact_count": 1, "design_schema_api_artifact_count": 1}, "text": "Comment chain pattern product: assumption_checks\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#211\nOutcome: ambiguous_needs_more_evidence\nThread label: thread_needs_classification\nSource graph label: source_backed_multi_signal_graph\nReasons: source_graph_has_real_artifacts, source_graph_has_verification_artifacts, repo_has_isolated_helicopter_views, link_quality_unresolved\nChain evidence:\nIssue/PR evidence chain: timogilvie/wavemill#211\nRepo: timogilvie/wavemill\nThread label: thread_needs_classification\nOutcome: ambiguous_needs_more_evidence\nComment count: 1\nLinked commit count: 0\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 0\nLabels: {'human_feedback_general': 1}\nPolarities: {'neutral': 1}\nChanged file labels: {}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-8387b00920bc6451\",\n    \"kind\": \"issue_comment\",\n    \"label\": \"human_feedback_general\",\n    \"polarity\": \"neutral\",\n    \"url\": \"https://github.com/timogilvie/wavemill/pull/211#issuecomment-4208788367\",\n    \"text\": \"GitHub feedback: human_feedback_general\\nPolarity: neutral\\nKind: issue_comment\\nRepo: timogilvie/wavemill\\nAuthor: timogilvie (User)\\nURL: https://github.com/timogilvie/wavemill/pull/211#issuecomment-4208788367\\nTitle: \\nBody:\\nCloses: HOK-1179\"\n  }\n]\nChanged files:\n[]\nLinked chain ids:\n[\"evidence-chain-comment_to_commit-d239562d7a4fad92\"]\nSource graph evidence:\nSource evidence repo graph summary\nRepo: timogilvie/wavemill\nGraph label: source_backed_multi_signal_graph\nNodes: 10\nEdges: 12\nNode types: {\"cooccurrence_profile\": 1, \"github_repo_summary\": 1, \"helicopter_repo_view\": 4, \"repo\": 1, \"source_artifact\": 2, \"source_bundle\": 1}\nEdge types: {\"artifact_needs_claim_verification\": 1, \"artifact_supports_verification\": 1, \"repo_has_cooccurrence_profile\": 1, \"repo_has_github_evidence_summary\": 1, \"repo_has_graphs_helicopter_view\": 2, \"repo_has_schemas_helicopter_view\": 2, \"repo_has_source_artifact\": 2, \"repo_has_source_bundle\": 1, \"source_bundle_uses_cooccurrence_profile\": 1}\nArtifact families: {\"docs\": 1, \"schemas\": 1}\nHelicopter views: {\"graphs\": 2, \"schemas\": 2}\nBundle labels: {\"source_backed_fake_real_verification_bundle\": 1}\nCo-occurrence labels: {\"fake_real_data_plus_verification_gap\": 1}", "source": "foundry_mined_dataset", "repo_url": "https://github.com/timogilvie/wavemill", "source_id": "comment-chain-pattern-assumption_checks-a2a0a5c8a6cc3b49", "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": "timogilvie/wavemill", "source_dataset": "comment_chain_patterns/assumption_checks", "training_usage": "negative_or_unresolved"}}}, {"ruleId": "foundry_assumption_check", "level": "warning", "message": {"text": "Foundry mined assumption checks: timogilvie/wavemill"}, "properties": {"repobilityId": 382836, "scanner": "foundry_dataset", "fingerprint": "4d21715c2f5bd76e99cd07c3c6e284227d3794063fefdc713bc66c06cfac4053", "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": "timogilvie/wavemill#205", "human_labels": ["human_feedback_general", "test_ci_gap"], "issue_number": "205", "thread_label": "thread_has_human_issue_and_fix_context", "outcome_label": "ambiguous_needs_more_evidence", "source_backed": true, "max_confidence": 0.65, "repo_full_name": "timogilvie/wavemill", "training_usage": "weak_supervision", "confidence_tier": "weak_supervision", "source_chain_id": "evidence-chain-issue_chain-98786d0b1599a92c", "helicopter_views": {"graphs": 2, "schemas": 2}, "artifact_families": {"docs": 1, "schemas": 1}, "source_chain_kind": "issue_chain", "changed_file_count": 0, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {}, "linked_commit_count": 4, "helicopter_view_count": 4, "source_artifact_count": 2, "classification_reasons": ["source_graph_has_real_artifacts", "source_graph_has_verification_artifacts", "repo_has_isolated_helicopter_views", "link_quality_weak_supervision", "high_risk_human_feedback_label"], "linked_ci_commit_count": 0, "verification_artifact_count": 1, "design_schema_api_artifact_count": 1}, "text": "Comment chain pattern product: assumption_checks\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#205\nOutcome: ambiguous_needs_more_evidence\nThread label: thread_has_human_issue_and_fix_context\nSource graph label: source_backed_multi_signal_graph\nReasons: source_graph_has_real_artifacts, source_graph_has_verification_artifacts, repo_has_isolated_helicopter_views, link_quality_weak_supervision, high_risk_human_feedback_label\nChain evidence:\nIssue/PR evidence chain: timogilvie/wavemill#205\nRepo: timogilvie/wavemill\nThread label: thread_has_human_issue_and_fix_context\nOutcome: ambiguous_needs_more_evidence\nComment count: 2\nLinked commit count: 4\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 0\nLabels: {'test_ci_gap': 1, 'human_feedback_general': 1}\nPolarities: {'bad': 1, 'neutral': 1}\nChanged file labels: {}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-39ebdde1ff859c1f\",\n    \"kind\": \"pull_request_body\",\n    \"label\": \"test_ci_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/timogilvie/wavemill/pull/205\",\n    \"text\": \"GitHub feedback: test_ci_gap\\nPolarity: bad\\nKind: pull_request_body\\nRepo: timogilvie/wavemill\\nAuthor: timogilvie (User)\\nURL: https://github.com/timogilvie/wavemill/pull/205\\nTitle: HOK-1141: restore Codex exec handoff for workflow phases\\nBody:\\n## Summary\\n- restore Codex phase launchers to use `codex exec` with `--dangerously-bypass-approvals-and-sandbox` so coding and review handoffs can continue inside wavemill instead of failing on permission errors\\n- make phase-completion, abort, and exit guidance agent-aware so Codex prompts stop cleanly without being told to run unsupported manual exit commands\\n- keep monitor and tmux behavior aligned with the new Codex launch path, including explicit attention handling and detached post-merge evaluation\\n- add shell regression coverage for launcher flags, prompt guidance, monitor helpers, and sourced-library expectations to prevent repeats of the recent workflow breakages\\n\\n## Changes\\n- `shared/lib/agent-adapters.sh`\\n- `shared/lib/wavemill-mill.sh`\\n- `shared/lib/wavemill-orchestrator.sh`\\n- `tests/check-shell.sh`\\n- `tools/prompts/planning-phase.md`\\n- `tools/prompts/coding-phase.md`\\n- `tools/prompts/review-phase.md`\\n- `docs/prompt-locations.md`\\n\\n##\"\n  },\n  {\n    \"id\": \"github-feedback-comment-4896641dcfc29ad4\",\n    \"kind\": \"issue_comment\",\n    \"label\": \"human_feedback_general\",\n    \"polarity\": \"neutral\",\n    \"url\": \"https://github.com/timogilvie/wavemill/pull/205#issuecomment-4199472839\",\n    \"text\": \"GitHub feedback: human_feedback_general\\nPolarity: neutral\\nKind: issue_comment\\nRepo: timogilvie/wavemill\\nAuthor: timogilvie (User)\\nURL: https://github.com/timogilvie/wavemill/pull/205#issuecomment-4199472839\\nTitle: \\nBody:\\nCherry picked changes into main\"\n  }\n]\nChanged files:\n[]\nLinked chain ids:\n[\"evidence-chain-comment_to_commit-0f277f59e8e1dec5\", \"evidence-chain-comment_to_commit-e9a5cdda8c4c7551\"]\nSou\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/timogilvie/wavemill", "source_id": "comment-chain-pattern-assumption_checks-55e36041d49c1bda", "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": "timogilvie/wavemill", "source_dataset": "comment_chain_patterns/assumption_checks", "training_usage": "weak_supervision"}}}, {"ruleId": "foundry_assumption_check", "level": "warning", "message": {"text": "Foundry mined assumption checks: timogilvie/wavemill"}, "properties": {"repobilityId": 382835, "scanner": "foundry_dataset", "fingerprint": "c04b97d775587918f43b73b1f49ed2b909facf0d4239f4d66d2ffc0c4539317a", "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": "timogilvie/wavemill#204", "human_labels": ["runtime_failure"], "issue_number": "204", "thread_label": "thread_has_human_issue_and_fix_context", "outcome_label": "ambiguous_needs_more_evidence", "source_backed": true, "max_confidence": 0.58, "repo_full_name": "timogilvie/wavemill", "training_usage": "weak_supervision", "confidence_tier": "weak_supervision", "source_chain_id": "evidence-chain-issue_chain-67bb4afafd2eab6c", "helicopter_views": {"graphs": 2, "schemas": 2}, "artifact_families": {"docs": 1, "schemas": 1}, "source_chain_kind": "issue_chain", "changed_file_count": 0, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {}, "linked_commit_count": 1, "helicopter_view_count": 4, "source_artifact_count": 2, "classification_reasons": ["source_graph_has_real_artifacts", "source_graph_has_verification_artifacts", "repo_has_isolated_helicopter_views", "link_quality_weak_supervision", "high_risk_human_feedback_label"], "linked_ci_commit_count": 0, "verification_artifact_count": 1, "design_schema_api_artifact_count": 1}, "text": "Comment chain pattern product: assumption_checks\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#204\nOutcome: ambiguous_needs_more_evidence\nThread label: thread_has_human_issue_and_fix_context\nSource graph label: source_backed_multi_signal_graph\nReasons: source_graph_has_real_artifacts, source_graph_has_verification_artifacts, repo_has_isolated_helicopter_views, link_quality_weak_supervision, high_risk_human_feedback_label\nChain evidence:\nIssue/PR evidence chain: timogilvie/wavemill#204\nRepo: timogilvie/wavemill\nThread label: thread_has_human_issue_and_fix_context\nOutcome: ambiguous_needs_more_evidence\nComment count: 1\nLinked commit count: 1\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 0\nLabels: {'runtime_failure': 1}\nPolarities: {'bad': 1}\nChanged file labels: {}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-2e92afb66e0b848d\",\n    \"kind\": \"issue_comment\",\n    \"label\": \"runtime_failure\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/timogilvie/wavemill/pull/204#issuecomment-4198918805\",\n    \"text\": \"GitHub feedback: runtime_failure\\nPolarity: bad\\nKind: issue_comment\\nRepo: timogilvie/wavemill\\nAuthor: timogilvie (User)\\nURL: https://github.com/timogilvie/wavemill/pull/204#issuecomment-4198918805\\nTitle: \\nBody:\\nChallenge comparison for `HOK-1139`\\n\\nPrimary used gpt-5.4 (planner) + gpt-5.4 (coder) + gpt-5.4 (reviewer) vs Challenger used gpt-5.4 (planner) + claude-sonnet-4-5-20250929 (coder) + gpt-5.4 (reviewer)\\nChallenge type: coder-only\\n\\nRecommended winner: primary (gpt-5.4)\\nOther PR: https://github.com/timogilvie/wavemill/pull/203\\n\\nPrimary replaces all ~25 bare jq STATE_FILE reads with the guarded helper, covering every crash site shown in the error logs (lines 256, 1495, 1499, 1579). Challenger only patches ~7 calls in monitor_issue_state, leaving validate_agent_set, maybe_run_challenge_eval, launch_background_post_merge_eval, maybe_run_challenge_comparison, and the main loop unprotected. Primary also adds regression tests.\"\n  }\n]\nChanged files:\n[]\nLinked chain ids:\n[\"evidence-chain-comment_to_commit-6d96eccc5bc31b6e\"]\nSource graph evidence:\nSource evidence repo graph summary\nRepo: timogilvie/wavemill\nGraph label: source_backed_multi_signal_graph\nNodes: 10\nEdges: 12\nNode types: {\"cooccurrence_profile\": 1, \"github_repo_summary\": 1, \"helicopter_repo_view\": 4, \"repo\": 1, \"source_artifact\": 2, \"source_bundle\": 1}\nEdge types: {\"artifact_needs_claim_verification\": 1, \"artifact_supports_verification\": 1, \"repo_has_cooccurrence_profile\": 1, \"repo_has_github_evidence_summary\": 1, \"repo_has_graphs_helicopter_view\": 2, \"repo_has_schemas_helicopter_view\": 2, \"repo_has_source_artifact\": 2, \"repo_has_source_bundle\": 1, \"source_bundle_uses_cooccurrence_profile\": 1}\nArtifact families: {\"docs\": 1, \"schemas\": 1}\nHelicopter views: {\"graphs\": 2, \"schemas\": 2}\nBundle labels: {\"source_backed_fake_real_verification_bundle\": 1}\nCo-occurrence labels: {\"fake_real_data_plus_verification_gap\": 1}", "source": "foundry_mined_dataset", "repo_url": "https://github.com/timogilvie/wavemill", "source_id": "comment-chain-pattern-assumption_checks-ef942791dd694b5c", "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": "timogilvie/wavemill", "source_dataset": "comment_chain_patterns/assumption_checks", "training_usage": "weak_supervision"}}}, {"ruleId": "foundry_assumption_check", "level": "warning", "message": {"text": "Foundry mined assumption checks: timogilvie/wavemill"}, "properties": {"repobilityId": 382834, "scanner": "foundry_dataset", "fingerprint": "9a739f910723b13b52589235a8fc7ce3c2693cfdac0d592aa1341689539423c8", "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": "timogilvie/wavemill#203", "human_labels": ["runtime_failure"], "issue_number": "203", "thread_label": "thread_has_human_issue_and_fix_context", "outcome_label": "ambiguous_needs_more_evidence", "source_backed": true, "max_confidence": 0.58, "repo_full_name": "timogilvie/wavemill", "training_usage": "weak_supervision", "confidence_tier": "weak_supervision", "source_chain_id": "evidence-chain-issue_chain-95365042cb6d58e6", "helicopter_views": {"graphs": 2, "schemas": 2}, "artifact_families": {"docs": 1, "schemas": 1}, "source_chain_kind": "issue_chain", "changed_file_count": 0, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {}, "linked_commit_count": 1, "helicopter_view_count": 4, "source_artifact_count": 2, "classification_reasons": ["source_graph_has_real_artifacts", "source_graph_has_verification_artifacts", "repo_has_isolated_helicopter_views", "link_quality_weak_supervision", "high_risk_human_feedback_label"], "linked_ci_commit_count": 0, "verification_artifact_count": 1, "design_schema_api_artifact_count": 1}, "text": "Comment chain pattern product: assumption_checks\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#203\nOutcome: ambiguous_needs_more_evidence\nThread label: thread_has_human_issue_and_fix_context\nSource graph label: source_backed_multi_signal_graph\nReasons: source_graph_has_real_artifacts, source_graph_has_verification_artifacts, repo_has_isolated_helicopter_views, link_quality_weak_supervision, high_risk_human_feedback_label\nChain evidence:\nIssue/PR evidence chain: timogilvie/wavemill#203\nRepo: timogilvie/wavemill\nThread label: thread_has_human_issue_and_fix_context\nOutcome: ambiguous_needs_more_evidence\nComment count: 1\nLinked commit count: 1\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 0\nLabels: {'runtime_failure': 1}\nPolarities: {'bad': 1}\nChanged file labels: {}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-0e7ff6e4a1e03922\",\n    \"kind\": \"issue_comment\",\n    \"label\": \"runtime_failure\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/timogilvie/wavemill/pull/203#issuecomment-4198918959\",\n    \"text\": \"GitHub feedback: runtime_failure\\nPolarity: bad\\nKind: issue_comment\\nRepo: timogilvie/wavemill\\nAuthor: timogilvie (User)\\nURL: https://github.com/timogilvie/wavemill/pull/203#issuecomment-4198918959\\nTitle: \\nBody:\\nChallenge comparison for `HOK-1139`\\n\\nPrimary used gpt-5.4 (planner) + gpt-5.4 (coder) + gpt-5.4 (reviewer) vs Challenger used gpt-5.4 (planner) + claude-sonnet-4-5-20250929 (coder) + gpt-5.4 (reviewer)\\nChallenge type: coder-only\\n\\nRecommended winner: primary (gpt-5.4)\\nOther PR: https://github.com/timogilvie/wavemill/pull/203\\n\\nPrimary replaces all ~25 bare jq STATE_FILE reads with the guarded helper, covering every crash site shown in the error logs (lines 256, 1495, 1499, 1579). Challenger only patches ~7 calls in monitor_issue_state, leaving validate_agent_set, maybe_run_challenge_eval, launch_background_post_merge_eval, maybe_run_challenge_comparison, and the main loop unprotected. Primary also adds regression tests.\"\n  }\n]\nChanged files:\n[]\nLinked chain ids:\n[\"evidence-chain-comment_to_commit-1dc5adab94bdc645\"]\nSource graph evidence:\nSource evidence repo graph summary\nRepo: timogilvie/wavemill\nGraph label: source_backed_multi_signal_graph\nNodes: 10\nEdges: 12\nNode types: {\"cooccurrence_profile\": 1, \"github_repo_summary\": 1, \"helicopter_repo_view\": 4, \"repo\": 1, \"source_artifact\": 2, \"source_bundle\": 1}\nEdge types: {\"artifact_needs_claim_verification\": 1, \"artifact_supports_verification\": 1, \"repo_has_cooccurrence_profile\": 1, \"repo_has_github_evidence_summary\": 1, \"repo_has_graphs_helicopter_view\": 2, \"repo_has_schemas_helicopter_view\": 2, \"repo_has_source_artifact\": 2, \"repo_has_source_bundle\": 1, \"source_bundle_uses_cooccurrence_profile\": 1}\nArtifact families: {\"docs\": 1, \"schemas\": 1}\nHelicopter views: {\"graphs\": 2, \"schemas\": 2}\nBundle labels: {\"source_backed_fake_real_verification_bundle\": 1}\nCo-occurrence labels: {\"fake_real_data_plus_verification_gap\": 1}", "source": "foundry_mined_dataset", "repo_url": "https://github.com/timogilvie/wavemill", "source_id": "comment-chain-pattern-assumption_checks-7528f413fe27517d", "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": "timogilvie/wavemill", "source_dataset": "comment_chain_patterns/assumption_checks", "training_usage": "weak_supervision"}}}, {"ruleId": "foundry_assumption_check", "level": "warning", "message": {"text": "Foundry mined assumption checks: timogilvie/wavemill"}, "properties": {"repobilityId": 382833, "scanner": "foundry_dataset", "fingerprint": "900c091d50ee3a3f407ef6cff9b0b268ca4f9c89f28382fb76aee261950f1f66", "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": "timogilvie/wavemill#198", "human_labels": ["api_integration_gap", "human_feedback_general"], "issue_number": "198", "thread_label": "thread_has_human_issue_and_fix_context", "outcome_label": "ambiguous_needs_more_evidence", "source_backed": true, "max_confidence": 0.59, "repo_full_name": "timogilvie/wavemill", "training_usage": "weak_supervision", "confidence_tier": "weak_supervision", "source_chain_id": "evidence-chain-issue_chain-e5b5f288f120a2f1", "helicopter_views": {"graphs": 2, "schemas": 2}, "artifact_families": {"docs": 1, "schemas": 1}, "source_chain_kind": "issue_chain", "changed_file_count": 0, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {}, "linked_commit_count": 4, "helicopter_view_count": 4, "source_artifact_count": 2, "classification_reasons": ["source_graph_has_real_artifacts", "source_graph_has_verification_artifacts", "repo_has_isolated_helicopter_views", "link_quality_weak_supervision", "high_risk_human_feedback_label"], "linked_ci_commit_count": 0, "verification_artifact_count": 1, "design_schema_api_artifact_count": 1}, "text": "Comment chain pattern product: assumption_checks\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#198\nOutcome: ambiguous_needs_more_evidence\nThread label: thread_has_human_issue_and_fix_context\nSource graph label: source_backed_multi_signal_graph\nReasons: source_graph_has_real_artifacts, source_graph_has_verification_artifacts, repo_has_isolated_helicopter_views, link_quality_weak_supervision, high_risk_human_feedback_label\nChain evidence:\nIssue/PR evidence chain: timogilvie/wavemill#198\nRepo: timogilvie/wavemill\nThread label: thread_has_human_issue_and_fix_context\nOutcome: ambiguous_needs_more_evidence\nComment count: 2\nLinked commit count: 4\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 0\nLabels: {'api_integration_gap': 1, 'human_feedback_general': 1}\nPolarities: {'bad': 1, 'neutral': 1}\nChanged file labels: {}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-359cb9a8e05de11c\",\n    \"kind\": \"issue_comment\",\n    \"label\": \"api_integration_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/timogilvie/wavemill/pull/198#issuecomment-4192988915\",\n    \"text\": \"GitHub feedback: api_integration_gap\\nPolarity: bad\\nKind: issue_comment\\nRepo: timogilvie/wavemill\\nAuthor: timogilvie (User)\\nURL: https://github.com/timogilvie/wavemill/pull/198#issuecomment-4192988915\\nTitle: \\nBody:\\nChallenge comparison for `HOK-1122`\\n\\nRecommended winner: primary (gpt-5.4)\\nOther PR: https://github.com/timogilvie/wavemill/pull/198\\n\\nPrimary delivers a significantly more complete and correct implementation. It includes proper eval summary building with deduplication and caching, end-to-end integration tests in stage-aware-router, config accessor tests, summary output for challenge recommendations, and correct stage naming (plan/implementation/review). The challenger has multiple issues: uses `unknown` type for challengeRecommendation, reads the evals file twice with two separate functions (no caching), mutates recommendation objects in-place, leaks internal check functions as exports, nests config under `router` instead of top-level (diverging from the task spec), lacks config validation tests, and produces no visible summary output for challenges.\"\n  },\n  {\n    \"id\": \"github-feedback-comment-42ece5f44748d9bd\",\n    \"kind\": \"issue_comment\",\n    \"label\": \"human_feedback_general\",\n    \"polarity\": \"neutral\",\n    \"url\": \"https://github.com/timogilvie/wavemill/pull/198#issuecomment-4192995698\",\n    \"text\": \"GitHub feedback: human_feedback_general\\nPolarity: neutral\\nKind: issue_comment\\nRepo: timogilvie/wavemill\\nAuthor: timogilvie (User)\\nURL: https://github.com/timogilvie/wavemill/pull/198#issuecomment-4192995698\\nTitle: \\nBody:\\nlosing challenger\"\n  }\n]\nChanged files:\n[]\nLinked chain ids:\n[\"evidence-chain-comment_to_commit-5ec93904480f13bf\", \"evidence-chain-comment_to_commit-374cc31ec6049bd1\"]\nSource graph evidence:\nSource evidence repo graph summary\nRepo: timogilvie/wavemill\nGraph label: source_backed_multi\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/timogilvie/wavemill", "source_id": "comment-chain-pattern-assumption_checks-3d41948384943f3d", "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": "timogilvie/wavemill", "source_dataset": "comment_chain_patterns/assumption_checks", "training_usage": "weak_supervision"}}}, {"ruleId": "foundry_assumption_check", "level": "warning", "message": {"text": "Foundry mined assumption checks: timogilvie/wavemill"}, "properties": {"repobilityId": 382832, "scanner": "foundry_dataset", "fingerprint": "bd04b3a00bbd410365126da00a45fa1f722e59a67c89d8a1f9a8d79dfd514c5a", "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": "timogilvie/wavemill#197", "human_labels": ["api_integration_gap", "human_feedback_general"], "issue_number": "197", "thread_label": "thread_has_human_issue_and_fix_context", "outcome_label": "ambiguous_needs_more_evidence", "source_backed": true, "max_confidence": 0.59, "repo_full_name": "timogilvie/wavemill", "training_usage": "weak_supervision", "confidence_tier": "weak_supervision", "source_chain_id": "evidence-chain-issue_chain-4143b80566067948", "helicopter_views": {"graphs": 2, "schemas": 2}, "artifact_families": {"docs": 1, "schemas": 1}, "source_chain_kind": "issue_chain", "changed_file_count": 0, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {}, "linked_commit_count": 4, "helicopter_view_count": 4, "source_artifact_count": 2, "classification_reasons": ["source_graph_has_real_artifacts", "source_graph_has_verification_artifacts", "repo_has_isolated_helicopter_views", "link_quality_weak_supervision", "high_risk_human_feedback_label"], "linked_ci_commit_count": 0, "verification_artifact_count": 1, "design_schema_api_artifact_count": 1}, "text": "Comment chain pattern product: assumption_checks\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#197\nOutcome: ambiguous_needs_more_evidence\nThread label: thread_has_human_issue_and_fix_context\nSource graph label: source_backed_multi_signal_graph\nReasons: source_graph_has_real_artifacts, source_graph_has_verification_artifacts, repo_has_isolated_helicopter_views, link_quality_weak_supervision, high_risk_human_feedback_label\nChain evidence:\nIssue/PR evidence chain: timogilvie/wavemill#197\nRepo: timogilvie/wavemill\nThread label: thread_has_human_issue_and_fix_context\nOutcome: ambiguous_needs_more_evidence\nComment count: 2\nLinked commit count: 4\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 0\nLabels: {'human_feedback_general': 1, 'api_integration_gap': 1}\nPolarities: {'neutral': 1, 'bad': 1}\nChanged file labels: {}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-fb82833c7b94c8e5\",\n    \"kind\": \"issue_comment\",\n    \"label\": \"human_feedback_general\",\n    \"polarity\": \"neutral\",\n    \"url\": \"https://github.com/timogilvie/wavemill/pull/197#issuecomment-4192966499\",\n    \"text\": \"GitHub feedback: human_feedback_general\\nPolarity: neutral\\nKind: issue_comment\\nRepo: timogilvie/wavemill\\nAuthor: timogilvie (User)\\nURL: https://github.com/timogilvie/wavemill/pull/197#issuecomment-4192966499\\nTitle: \\nBody:\\nCloses HOK-1122\"\n  },\n  {\n    \"id\": \"github-feedback-comment-a20fa9ce6aee8251\",\n    \"kind\": \"issue_comment\",\n    \"label\": \"api_integration_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/timogilvie/wavemill/pull/197#issuecomment-4192988853\",\n    \"text\": \"GitHub feedback: api_integration_gap\\nPolarity: bad\\nKind: issue_comment\\nRepo: timogilvie/wavemill\\nAuthor: timogilvie (User)\\nURL: https://github.com/timogilvie/wavemill/pull/197#issuecomment-4192988853\\nTitle: \\nBody:\\nChallenge comparison for `HOK-1122`\\n\\nRecommended winner: primary (gpt-5.4)\\nOther PR: https://github.com/timogilvie/wavemill/pull/198\\n\\nPrimary delivers a significantly more complete and correct implementation. It includes proper eval summary building with deduplication and caching, end-to-end integration tests in stage-aware-router, config accessor tests, summary output for challenge recommendations, and correct stage naming (plan/implementation/review). The challenger has multiple issues: uses `unknown` type for challengeRecommendation, reads the evals file twice with two separate functions (no caching), mutates recommendation objects in-place, leaks internal check functions as exports, nests config under `router` instead of top-level (diverging from the task spec), lacks config validation tests, and produces no visible summary output for challenges.\"\n  }\n]\nChanged files:\n[]\nLinked chain ids:\n[\"evidence-chain-comment_to_commit-dacecbbe3de8ee37\", \"evidence-chain-comment_to_commit-74757df77c3c4942\"]\nSource graph evidence:\nSource evidence repo graph summary\nRepo: timogilvie/wavemill\nGraph label: source_backed_multi_s\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/timogilvie/wavemill", "source_id": "comment-chain-pattern-assumption_checks-1f34e4871c2e4831", "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": "timogilvie/wavemill", "source_dataset": "comment_chain_patterns/assumption_checks", "training_usage": "weak_supervision"}}}, {"ruleId": "foundry_assumption_check", "level": "warning", "message": {"text": "Foundry mined assumption checks: timogilvie/wavemill"}, "properties": {"repobilityId": 382831, "scanner": "foundry_dataset", "fingerprint": "4edc9d08764a1d890ee9ab2555b1e358b3acd13676c85fe2d01619bfab4b9a70", "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": "timogilvie/wavemill#196", "human_labels": ["human_feedback_general", "test_ci_gap"], "issue_number": "196", "thread_label": "thread_has_human_issue_and_fix_context", "outcome_label": "ambiguous_needs_more_evidence", "source_backed": true, "max_confidence": 0.607, "repo_full_name": "timogilvie/wavemill", "training_usage": "weak_supervision", "confidence_tier": "weak_supervision", "source_chain_id": "evidence-chain-issue_chain-1d7f5c42d27b1a51", "helicopter_views": {"graphs": 2, "schemas": 2}, "artifact_families": {"docs": 1, "schemas": 1}, "source_chain_kind": "issue_chain", "changed_file_count": 0, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {}, "linked_commit_count": 3, "helicopter_view_count": 4, "source_artifact_count": 2, "classification_reasons": ["source_graph_has_real_artifacts", "source_graph_has_verification_artifacts", "repo_has_isolated_helicopter_views", "link_quality_weak_supervision", "high_risk_human_feedback_label"], "linked_ci_commit_count": 0, "verification_artifact_count": 1, "design_schema_api_artifact_count": 1}, "text": "Comment chain pattern product: assumption_checks\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#196\nOutcome: ambiguous_needs_more_evidence\nThread label: thread_has_human_issue_and_fix_context\nSource graph label: source_backed_multi_signal_graph\nReasons: source_graph_has_real_artifacts, source_graph_has_verification_artifacts, repo_has_isolated_helicopter_views, link_quality_weak_supervision, high_risk_human_feedback_label\nChain evidence:\nIssue/PR evidence chain: timogilvie/wavemill#196\nRepo: timogilvie/wavemill\nThread label: thread_has_human_issue_and_fix_context\nOutcome: ambiguous_needs_more_evidence\nComment count: 2\nLinked commit count: 3\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 0\nLabels: {'human_feedback_general': 1, 'test_ci_gap': 1}\nPolarities: {'neutral': 1, 'bad': 1}\nChanged file labels: {}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-aaf60d3034310294\",\n    \"kind\": \"issue_comment\",\n    \"label\": \"human_feedback_general\",\n    \"polarity\": \"neutral\",\n    \"url\": \"https://github.com/timogilvie/wavemill/pull/196#issuecomment-4192892905\",\n    \"text\": \"GitHub feedback: human_feedback_general\\nPolarity: neutral\\nKind: issue_comment\\nRepo: timogilvie/wavemill\\nAuthor: timogilvie (User)\\nURL: https://github.com/timogilvie/wavemill/pull/196#issuecomment-4192892905\\nTitle: \\nBody:\\nFixes HOK-1119\"\n  },\n  {\n    \"id\": \"github-feedback-comment-3aa69e5e1038f060\",\n    \"kind\": \"issue_comment\",\n    \"label\": \"test_ci_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/timogilvie/wavemill/pull/196#issuecomment-4192906517\",\n    \"text\": \"GitHub feedback: test_ci_gap\\nPolarity: bad\\nKind: issue_comment\\nRepo: timogilvie/wavemill\\nAuthor: timogilvie (User)\\nURL: https://github.com/timogilvie/wavemill/pull/196#issuecomment-4192906517\\nTitle: \\nBody:\\nChallenge comparison for `HOK-1119`\\n\\nRecommended winner: primary (gpt-5.4)\\nOther PR: https://github.com/timogilvie/wavemill/pull/195\\n\\nThe challenger has a critical correctness bug: abort checks are nested inside completion-marker checks (e.g., `if check_plan_approved` \u2192 `if check_workflow_abort`), but the prompts instruct agents NOT to create completion markers when aborting. This means the abort marker is never detected and the workflow polls forever. The primary checks abort BEFORE completion markers at the start of each phase case, correctly prioritizing abort. The primary also covers all phases (including routing and review), handles pane-death scenarios, adds comprehensive regression tests, and updates agent-adapters.sh prompt builders \u2014 all missing from the challenger.\"\n  }\n]\nChanged files:\n[]\nLinked chain ids:\n[\"evidence-chain-comment_to_commit-4555352e7fb1ec82\", \"evidence-chain-comment_to_commit-13be0e0d9286c9b2\"]\nSource graph evidence:\nSource evidence repo graph summary\nRepo: timogilvie/wavemill\nGraph label: source_backed_multi_signal_graph\nNodes: 10\nEdges: 12\nNode types: {\"cooccurrence_profile\": 1, \"github_repo_summary\": 1, \"hel\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/timogilvie/wavemill", "source_id": "comment-chain-pattern-assumption_checks-657b2034ff2525a7", "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": "timogilvie/wavemill", "source_dataset": "comment_chain_patterns/assumption_checks", "training_usage": "weak_supervision"}}}, {"ruleId": "foundry_assumption_check", "level": "warning", "message": {"text": "Foundry mined assumption checks: timogilvie/wavemill"}, "properties": {"repobilityId": 382830, "scanner": "foundry_dataset", "fingerprint": "f1398d6a612c8105210b72cd47b78030e3c1f9696dd56d1f2d0304d3f5649b6a", "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": "timogilvie/wavemill#195", "human_labels": ["human_feedback_general", "test_ci_gap"], "issue_number": "195", "thread_label": "thread_has_human_issue_and_fix_context", "outcome_label": "ambiguous_needs_more_evidence", "source_backed": true, "max_confidence": 0.607, "repo_full_name": "timogilvie/wavemill", "training_usage": "weak_supervision", "confidence_tier": "weak_supervision", "source_chain_id": "evidence-chain-issue_chain-33e81d11416cc328", "helicopter_views": {"graphs": 2, "schemas": 2}, "artifact_families": {"docs": 1, "schemas": 1}, "source_chain_kind": "issue_chain", "changed_file_count": 0, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {}, "linked_commit_count": 3, "helicopter_view_count": 4, "source_artifact_count": 2, "classification_reasons": ["source_graph_has_real_artifacts", "source_graph_has_verification_artifacts", "repo_has_isolated_helicopter_views", "link_quality_weak_supervision", "high_risk_human_feedback_label"], "linked_ci_commit_count": 0, "verification_artifact_count": 1, "design_schema_api_artifact_count": 1}, "text": "Comment chain pattern product: assumption_checks\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#195\nOutcome: ambiguous_needs_more_evidence\nThread label: thread_has_human_issue_and_fix_context\nSource graph label: source_backed_multi_signal_graph\nReasons: source_graph_has_real_artifacts, source_graph_has_verification_artifacts, repo_has_isolated_helicopter_views, link_quality_weak_supervision, high_risk_human_feedback_label\nChain evidence:\nIssue/PR evidence chain: timogilvie/wavemill#195\nRepo: timogilvie/wavemill\nThread label: thread_has_human_issue_and_fix_context\nOutcome: ambiguous_needs_more_evidence\nComment count: 3\nLinked commit count: 3\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 0\nLabels: {'human_feedback_general': 2, 'test_ci_gap': 1}\nPolarities: {'neutral': 2, 'bad': 1}\nChanged file labels: {}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-451bb15f8eac26e5\",\n    \"kind\": \"issue_comment\",\n    \"label\": \"human_feedback_general\",\n    \"polarity\": \"neutral\",\n    \"url\": \"https://github.com/timogilvie/wavemill/pull/195#issuecomment-4192871488\",\n    \"text\": \"GitHub feedback: human_feedback_general\\nPolarity: neutral\\nKind: issue_comment\\nRepo: timogilvie/wavemill\\nAuthor: timogilvie (User)\\nURL: https://github.com/timogilvie/wavemill/pull/195#issuecomment-4192871488\\nTitle: \\nBody:\\nFixes HOK-1119\"\n  },\n  {\n    \"id\": \"github-feedback-comment-ead09ea70bbb03b5\",\n    \"kind\": \"issue_comment\",\n    \"label\": \"test_ci_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/timogilvie/wavemill/pull/195#issuecomment-4192906639\",\n    \"text\": \"GitHub feedback: test_ci_gap\\nPolarity: bad\\nKind: issue_comment\\nRepo: timogilvie/wavemill\\nAuthor: timogilvie (User)\\nURL: https://github.com/timogilvie/wavemill/pull/195#issuecomment-4192906639\\nTitle: \\nBody:\\nChallenge comparison for `HOK-1119`\\n\\nRecommended winner: primary (gpt-5.4)\\nOther PR: https://github.com/timogilvie/wavemill/pull/195\\n\\nThe challenger has a critical correctness bug: abort checks are nested inside completion-marker checks (e.g., `if check_plan_approved` \u2192 `if check_workflow_abort`), but the prompts instruct agents NOT to create completion markers when aborting. This means the abort marker is never detected and the workflow polls forever. The primary checks abort BEFORE completion markers at the start of each phase case, correctly prioritizing abort. The primary also covers all phases (including routing and review), handles pane-death scenarios, adds comprehensive regression tests, and updates agent-adapters.sh prompt builders \u2014 all missing from the challenger.\"\n  },\n  {\n    \"id\": \"github-feedback-comment-e25a309b1725e553\",\n    \"kind\": \"issue_comment\",\n    \"label\": \"human_feedback_general\",\n    \"polarity\": \"neutral\",\n    \"url\": \"https://github.com/timogilvie/wavemill/pull/195#issuecomment-4192939745\",\n    \"text\": \"GitHub feedback: human_feedback_general\\nPolarity: neutral\\nKind: issue_comment\\nRepo: timogilvie/wavemill\\nAuth\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/timogilvie/wavemill", "source_id": "comment-chain-pattern-assumption_checks-096f81b5a77bdf93", "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": "timogilvie/wavemill", "source_dataset": "comment_chain_patterns/assumption_checks", "training_usage": "weak_supervision"}}}, {"ruleId": "foundry_assumption_check", "level": "warning", "message": {"text": "Foundry mined assumption checks: timogilvie/wavemill"}, "properties": {"repobilityId": 382829, "scanner": "foundry_dataset", "fingerprint": "dcd13cc8978afbcb0f509a6e44a5496ba531dcc7c2ab765699e1e73c1e912383", "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": "timogilvie/wavemill#191", "human_labels": ["human_feedback_general"], "issue_number": "191", "thread_label": "thread_needs_classification", "outcome_label": "ambiguous_needs_more_evidence", "source_backed": true, "max_confidence": 0.0, "repo_full_name": "timogilvie/wavemill", "training_usage": "negative_or_unresolved", "confidence_tier": "unresolved", "source_chain_id": "evidence-chain-issue_chain-1e71d87d6e427e06", "helicopter_views": {"graphs": 2, "schemas": 2}, "artifact_families": {"docs": 1, "schemas": 1}, "source_chain_kind": "issue_chain", "changed_file_count": 0, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {}, "linked_commit_count": 0, "helicopter_view_count": 4, "source_artifact_count": 2, "classification_reasons": ["source_graph_has_real_artifacts", "source_graph_has_verification_artifacts", "repo_has_isolated_helicopter_views", "link_quality_unresolved"], "linked_ci_commit_count": 0, "verification_artifact_count": 1, "design_schema_api_artifact_count": 1}, "text": "Comment chain pattern product: assumption_checks\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#191\nOutcome: ambiguous_needs_more_evidence\nThread label: thread_needs_classification\nSource graph label: source_backed_multi_signal_graph\nReasons: source_graph_has_real_artifacts, source_graph_has_verification_artifacts, repo_has_isolated_helicopter_views, link_quality_unresolved\nChain evidence:\nIssue/PR evidence chain: timogilvie/wavemill#191\nRepo: timogilvie/wavemill\nThread label: thread_needs_classification\nOutcome: ambiguous_needs_more_evidence\nComment count: 1\nLinked commit count: 0\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 0\nLabels: {'human_feedback_general': 1}\nPolarities: {'neutral': 1}\nChanged file labels: {}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-ace68967c2cd8b91\",\n    \"kind\": \"issue_comment\",\n    \"label\": \"human_feedback_general\",\n    \"polarity\": \"neutral\",\n    \"url\": \"https://github.com/timogilvie/wavemill/pull/191#issuecomment-4189493426\",\n    \"text\": \"GitHub feedback: human_feedback_general\\nPolarity: neutral\\nKind: issue_comment\\nRepo: timogilvie/wavemill\\nAuthor: timogilvie (User)\\nURL: https://github.com/timogilvie/wavemill/pull/191#issuecomment-4189493426\\nTitle: \\nBody:\\nFixes HOK-1120\"\n  }\n]\nChanged files:\n[]\nLinked chain ids:\n[\"evidence-chain-comment_to_commit-9193b08f942807ab\"]\nSource graph evidence:\nSource evidence repo graph summary\nRepo: timogilvie/wavemill\nGraph label: source_backed_multi_signal_graph\nNodes: 10\nEdges: 12\nNode types: {\"cooccurrence_profile\": 1, \"github_repo_summary\": 1, \"helicopter_repo_view\": 4, \"repo\": 1, \"source_artifact\": 2, \"source_bundle\": 1}\nEdge types: {\"artifact_needs_claim_verification\": 1, \"artifact_supports_verification\": 1, \"repo_has_cooccurrence_profile\": 1, \"repo_has_github_evidence_summary\": 1, \"repo_has_graphs_helicopter_view\": 2, \"repo_has_schemas_helicopter_view\": 2, \"repo_has_source_artifact\": 2, \"repo_has_source_bundle\": 1, \"source_bundle_uses_cooccurrence_profile\": 1}\nArtifact families: {\"docs\": 1, \"schemas\": 1}\nHelicopter views: {\"graphs\": 2, \"schemas\": 2}\nBundle labels: {\"source_backed_fake_real_verification_bundle\": 1}\nCo-occurrence labels: {\"fake_real_data_plus_verification_gap\": 1}", "source": "foundry_mined_dataset", "repo_url": "https://github.com/timogilvie/wavemill", "source_id": "comment-chain-pattern-assumption_checks-6bb06cd60fd0209d", "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": "timogilvie/wavemill", "source_dataset": "comment_chain_patterns/assumption_checks", "training_usage": "negative_or_unresolved"}}}, {"ruleId": "foundry_assumption_check", "level": "warning", "message": {"text": "Foundry mined assumption checks: timogilvie/wavemill"}, "properties": {"repobilityId": 382828, "scanner": "foundry_dataset", "fingerprint": "6636e7cfa8c69d19f4ad155939a5b5dc0a5ad4019725d351759d991635084bec", "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": "timogilvie/wavemill#190", "human_labels": ["human_feedback_general"], "issue_number": "190", "thread_label": "thread_needs_classification", "outcome_label": "ambiguous_needs_more_evidence", "source_backed": true, "max_confidence": 0.0, "repo_full_name": "timogilvie/wavemill", "training_usage": "negative_or_unresolved", "confidence_tier": "unresolved", "source_chain_id": "evidence-chain-issue_chain-40eac82141b1ef87", "helicopter_views": {"graphs": 2, "schemas": 2}, "artifact_families": {"docs": 1, "schemas": 1}, "source_chain_kind": "issue_chain", "changed_file_count": 0, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {}, "linked_commit_count": 0, "helicopter_view_count": 4, "source_artifact_count": 2, "classification_reasons": ["source_graph_has_real_artifacts", "source_graph_has_verification_artifacts", "repo_has_isolated_helicopter_views", "link_quality_unresolved"], "linked_ci_commit_count": 0, "verification_artifact_count": 1, "design_schema_api_artifact_count": 1}, "text": "Comment chain pattern product: assumption_checks\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#190\nOutcome: ambiguous_needs_more_evidence\nThread label: thread_needs_classification\nSource graph label: source_backed_multi_signal_graph\nReasons: source_graph_has_real_artifacts, source_graph_has_verification_artifacts, repo_has_isolated_helicopter_views, link_quality_unresolved\nChain evidence:\nIssue/PR evidence chain: timogilvie/wavemill#190\nRepo: timogilvie/wavemill\nThread label: thread_needs_classification\nOutcome: ambiguous_needs_more_evidence\nComment count: 1\nLinked commit count: 0\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 0\nLabels: {'human_feedback_general': 1}\nPolarities: {'neutral': 1}\nChanged file labels: {}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-bb4875a3096851ac\",\n    \"kind\": \"issue_comment\",\n    \"label\": \"human_feedback_general\",\n    \"polarity\": \"neutral\",\n    \"url\": \"https://github.com/timogilvie/wavemill/pull/190#issuecomment-4188966030\",\n    \"text\": \"GitHub feedback: human_feedback_general\\nPolarity: neutral\\nKind: issue_comment\\nRepo: timogilvie/wavemill\\nAuthor: timogilvie (User)\\nURL: https://github.com/timogilvie/wavemill/pull/190#issuecomment-4188966030\\nTitle: \\nBody:\\nClosing. This was a failure of a PR that went off the rails. \"\n  }\n]\nChanged files:\n[]\nLinked chain ids:\n[\"evidence-chain-comment_to_commit-2b388375e8a9dd25\"]\nSource graph evidence:\nSource evidence repo graph summary\nRepo: timogilvie/wavemill\nGraph label: source_backed_multi_signal_graph\nNodes: 10\nEdges: 12\nNode types: {\"cooccurrence_profile\": 1, \"github_repo_summary\": 1, \"helicopter_repo_view\": 4, \"repo\": 1, \"source_artifact\": 2, \"source_bundle\": 1}\nEdge types: {\"artifact_needs_claim_verification\": 1, \"artifact_supports_verification\": 1, \"repo_has_cooccurrence_profile\": 1, \"repo_has_github_evidence_summary\": 1, \"repo_has_graphs_helicopter_view\": 2, \"repo_has_schemas_helicopter_view\": 2, \"repo_has_source_artifact\": 2, \"repo_has_source_bundle\": 1, \"source_bundle_uses_cooccurrence_profile\": 1}\nArtifact families: {\"docs\": 1, \"schemas\": 1}\nHelicopter views: {\"graphs\": 2, \"schemas\": 2}\nBundle labels: {\"source_backed_fake_real_verification_bundle\": 1}\nCo-occurrence labels: {\"fake_real_data_plus_verification_gap\": 1}", "source": "foundry_mined_dataset", "repo_url": "https://github.com/timogilvie/wavemill", "source_id": "comment-chain-pattern-assumption_checks-1be5483b80889efa", "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": "timogilvie/wavemill", "source_dataset": "comment_chain_patterns/assumption_checks", "training_usage": "negative_or_unresolved"}}}, {"ruleId": "foundry_assumption_check", "level": "warning", "message": {"text": "Foundry mined assumption checks: timogilvie/wavemill"}, "properties": {"repobilityId": 382827, "scanner": "foundry_dataset", "fingerprint": "8d088db481f68ba149985ffffe80ded4c9a141f5a21b4a53ddf38cc008be70c3", "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": "timogilvie/wavemill#188", "human_labels": ["human_feedback_general"], "issue_number": "188", "thread_label": "thread_needs_classification", "outcome_label": "ambiguous_needs_more_evidence", "source_backed": true, "max_confidence": 0.0, "repo_full_name": "timogilvie/wavemill", "training_usage": "negative_or_unresolved", "confidence_tier": "unresolved", "source_chain_id": "evidence-chain-issue_chain-094bfa517ff99517", "helicopter_views": {"graphs": 2, "schemas": 2}, "artifact_families": {"docs": 1, "schemas": 1}, "source_chain_kind": "issue_chain", "changed_file_count": 0, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {}, "linked_commit_count": 0, "helicopter_view_count": 4, "source_artifact_count": 2, "classification_reasons": ["source_graph_has_real_artifacts", "source_graph_has_verification_artifacts", "repo_has_isolated_helicopter_views", "link_quality_unresolved"], "linked_ci_commit_count": 0, "verification_artifact_count": 1, "design_schema_api_artifact_count": 1}, "text": "Comment chain pattern product: assumption_checks\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#188\nOutcome: ambiguous_needs_more_evidence\nThread label: thread_needs_classification\nSource graph label: source_backed_multi_signal_graph\nReasons: source_graph_has_real_artifacts, source_graph_has_verification_artifacts, repo_has_isolated_helicopter_views, link_quality_unresolved\nChain evidence:\nIssue/PR evidence chain: timogilvie/wavemill#188\nRepo: timogilvie/wavemill\nThread label: thread_needs_classification\nOutcome: ambiguous_needs_more_evidence\nComment count: 1\nLinked commit count: 0\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 0\nLabels: {'human_feedback_general': 1}\nPolarities: {'neutral': 1}\nChanged file labels: {}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-f1e2894c761ff712\",\n    \"kind\": \"issue_comment\",\n    \"label\": \"human_feedback_general\",\n    \"polarity\": \"neutral\",\n    \"url\": \"https://github.com/timogilvie/wavemill/pull/188#issuecomment-4188924682\",\n    \"text\": \"GitHub feedback: human_feedback_general\\nPolarity: neutral\\nKind: issue_comment\\nRepo: timogilvie/wavemill\\nAuthor: timogilvie (User)\\nURL: https://github.com/timogilvie/wavemill/pull/188#issuecomment-4188924682\\nTitle: \\nBody:\\nResolves HOK-1109\"\n  }\n]\nChanged files:\n[]\nLinked chain ids:\n[\"evidence-chain-comment_to_commit-60f26c8904a557c9\"]\nSource graph evidence:\nSource evidence repo graph summary\nRepo: timogilvie/wavemill\nGraph label: source_backed_multi_signal_graph\nNodes: 10\nEdges: 12\nNode types: {\"cooccurrence_profile\": 1, \"github_repo_summary\": 1, \"helicopter_repo_view\": 4, \"repo\": 1, \"source_artifact\": 2, \"source_bundle\": 1}\nEdge types: {\"artifact_needs_claim_verification\": 1, \"artifact_supports_verification\": 1, \"repo_has_cooccurrence_profile\": 1, \"repo_has_github_evidence_summary\": 1, \"repo_has_graphs_helicopter_view\": 2, \"repo_has_schemas_helicopter_view\": 2, \"repo_has_source_artifact\": 2, \"repo_has_source_bundle\": 1, \"source_bundle_uses_cooccurrence_profile\": 1}\nArtifact families: {\"docs\": 1, \"schemas\": 1}\nHelicopter views: {\"graphs\": 2, \"schemas\": 2}\nBundle labels: {\"source_backed_fake_real_verification_bundle\": 1}\nCo-occurrence labels: {\"fake_real_data_plus_verification_gap\": 1}", "source": "foundry_mined_dataset", "repo_url": "https://github.com/timogilvie/wavemill", "source_id": "comment-chain-pattern-assumption_checks-ce3fe1dc95e932dd", "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": "timogilvie/wavemill", "source_dataset": "comment_chain_patterns/assumption_checks", "training_usage": "negative_or_unresolved"}}}, {"ruleId": "foundry_assumption_check", "level": "warning", "message": {"text": "Foundry mined assumption checks: timogilvie/wavemill"}, "properties": {"repobilityId": 382826, "scanner": "foundry_dataset", "fingerprint": "8244e010146cae40b8c22d5d21f70ff60b5456114961e8bfb7957ec65cc85b17", "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": "timogilvie/wavemill#185", "human_labels": ["human_feedback_general"], "issue_number": "185", "thread_label": "thread_needs_classification", "outcome_label": "ambiguous_needs_more_evidence", "source_backed": true, "max_confidence": 0.59, "repo_full_name": "timogilvie/wavemill", "training_usage": "weak_supervision", "confidence_tier": "weak_supervision", "source_chain_id": "evidence-chain-issue_chain-654fc6ab8b41c1fa", "helicopter_views": {"graphs": 2, "schemas": 2}, "artifact_families": {"docs": 1, "schemas": 1}, "source_chain_kind": "issue_chain", "changed_file_count": 0, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {}, "linked_commit_count": 1, "helicopter_view_count": 4, "source_artifact_count": 2, "classification_reasons": ["source_graph_has_real_artifacts", "source_graph_has_verification_artifacts", "repo_has_isolated_helicopter_views", "link_quality_weak_supervision"], "linked_ci_commit_count": 0, "verification_artifact_count": 1, "design_schema_api_artifact_count": 1}, "text": "Comment chain pattern product: assumption_checks\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#185\nOutcome: ambiguous_needs_more_evidence\nThread label: thread_needs_classification\nSource graph label: source_backed_multi_signal_graph\nReasons: source_graph_has_real_artifacts, source_graph_has_verification_artifacts, repo_has_isolated_helicopter_views, link_quality_weak_supervision\nChain evidence:\nIssue/PR evidence chain: timogilvie/wavemill#185\nRepo: timogilvie/wavemill\nThread label: thread_needs_classification\nOutcome: ambiguous_needs_more_evidence\nComment count: 2\nLinked commit count: 1\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 0\nLabels: {'human_feedback_general': 2}\nPolarities: {'neutral': 2}\nChanged file labels: {}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-e5281d5273fbd35c\",\n    \"kind\": \"issue_comment\",\n    \"label\": \"human_feedback_general\",\n    \"polarity\": \"neutral\",\n    \"url\": \"https://github.com/timogilvie/wavemill/pull/185#issuecomment-4188912531\",\n    \"text\": \"GitHub feedback: human_feedback_general\\nPolarity: neutral\\nKind: issue_comment\\nRepo: timogilvie/wavemill\\nAuthor: timogilvie (User)\\nURL: https://github.com/timogilvie/wavemill/pull/185#issuecomment-4188912531\\nTitle: \\nBody:\\nChallenge comparison for `HOK-1108`\\n\\nRecommended winner: primary (gpt-5.4)\\nOther PR: https://github.com/timogilvie/wavemill/pull/185\\n\\nPrimary handles type safety correctly with explicit `as string` casts for `execShellCommand` return values, while challenger omits these casts which likely causes TypeScript errors (explaining the lower eval score). Primary also has better scope discipline \u2014 it uses `execShellCommand` directly at inherit-stdio call sites rather than introducing a new `runInherit()` abstraction, which aligns better with the task's goal of removing custom wrappers, not replacing them with new ones.\"\n  },\n  {\n    \"id\": \"github-feedback-comment-4590bc01672fc902\",\n    \"kind\": \"issue_comment\",\n    \"label\": \"human_feedback_general\",\n    \"polarity\": \"neutral\",\n    \"url\": \"https://github.com/timogilvie/wavemill/pull/185#issuecomment-4189054429\",\n    \"text\": \"GitHub feedback: human_feedback_general\\nPolarity: neutral\\nKind: issue_comment\\nRepo: timogilvie/wavemill\\nAuthor: timogilvie (User)\\nURL: https://github.com/timogilvie/wavemill/pull/185#issuecomment-4189054429\\nTitle: \\nBody:\\nlost challenge - closing\"\n  }\n]\nChanged files:\n[]\nLinked chain ids:\n[\"evidence-chain-comment_to_commit-c716e44371daf42c\", \"evidence-chain-comment_to_commit-350e37dadbbe7b32\"]\nSource graph evidence:\nSource evidence repo graph summary\nRepo: timogilvie/wavemill\nGraph label: source_backed_multi_signal_graph\nNodes: 10\nEdges: 12\nNode types: {\"cooccurrence_profile\": 1, \"github_repo_summary\": 1, \"helicopter_repo_view\": 4, \"repo\": 1, \"source_artifact\": 2, \"source_bundle\": 1}\nEdge types: {\"artifact_needs_claim_verification\": 1, \"artifact_supports_verification\": 1, \"repo_has_cooccurrence_profile\": 1, \"repo_h\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/timogilvie/wavemill", "source_id": "comment-chain-pattern-assumption_checks-7c5aa5251987447c", "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": "timogilvie/wavemill", "source_dataset": "comment_chain_patterns/assumption_checks", "training_usage": "weak_supervision"}}}, {"ruleId": "foundry_assumption_check", "level": "warning", "message": {"text": "Foundry mined assumption checks: timogilvie/wavemill"}, "properties": {"repobilityId": 382825, "scanner": "foundry_dataset", "fingerprint": "8736ea74d211aa83cc1ac2ea828d23ea0d212afc73fd383d8c888ed86df62a3b", "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": "timogilvie/wavemill#184", "human_labels": ["human_feedback_general"], "issue_number": "184", "thread_label": "thread_needs_classification", "outcome_label": "ambiguous_needs_more_evidence", "source_backed": true, "max_confidence": 0.59, "repo_full_name": "timogilvie/wavemill", "training_usage": "weak_supervision", "confidence_tier": "weak_supervision", "source_chain_id": "evidence-chain-issue_chain-76910204d22ec804", "helicopter_views": {"graphs": 2, "schemas": 2}, "artifact_families": {"docs": 1, "schemas": 1}, "source_chain_kind": "issue_chain", "changed_file_count": 0, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {}, "linked_commit_count": 1, "helicopter_view_count": 4, "source_artifact_count": 2, "classification_reasons": ["source_graph_has_real_artifacts", "source_graph_has_verification_artifacts", "repo_has_isolated_helicopter_views", "link_quality_weak_supervision"], "linked_ci_commit_count": 0, "verification_artifact_count": 1, "design_schema_api_artifact_count": 1}, "text": "Comment chain pattern product: assumption_checks\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#184\nOutcome: ambiguous_needs_more_evidence\nThread label: thread_needs_classification\nSource graph label: source_backed_multi_signal_graph\nReasons: source_graph_has_real_artifacts, source_graph_has_verification_artifacts, repo_has_isolated_helicopter_views, link_quality_weak_supervision\nChain evidence:\nIssue/PR evidence chain: timogilvie/wavemill#184\nRepo: timogilvie/wavemill\nThread label: thread_needs_classification\nOutcome: ambiguous_needs_more_evidence\nComment count: 1\nLinked commit count: 1\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 0\nLabels: {'human_feedback_general': 1}\nPolarities: {'neutral': 1}\nChanged file labels: {}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-cf1666dceaabee3d\",\n    \"kind\": \"issue_comment\",\n    \"label\": \"human_feedback_general\",\n    \"polarity\": \"neutral\",\n    \"url\": \"https://github.com/timogilvie/wavemill/pull/184#issuecomment-4188912508\",\n    \"text\": \"GitHub feedback: human_feedback_general\\nPolarity: neutral\\nKind: issue_comment\\nRepo: timogilvie/wavemill\\nAuthor: timogilvie (User)\\nURL: https://github.com/timogilvie/wavemill/pull/184#issuecomment-4188912508\\nTitle: \\nBody:\\nChallenge comparison for `HOK-1108`\\n\\nRecommended winner: primary (gpt-5.4)\\nOther PR: https://github.com/timogilvie/wavemill/pull/185\\n\\nPrimary handles type safety correctly with explicit `as string` casts for `execShellCommand` return values, while challenger omits these casts which likely causes TypeScript errors (explaining the lower eval score). Primary also has better scope discipline \u2014 it uses `execShellCommand` directly at inherit-stdio call sites rather than introducing a new `runInherit()` abstraction, which aligns better with the task's goal of removing custom wrappers, not replacing them with new ones.\"\n  }\n]\nChanged files:\n[]\nLinked chain ids:\n[\"evidence-chain-comment_to_commit-8efb35738f001c4d\"]\nSource graph evidence:\nSource evidence repo graph summary\nRepo: timogilvie/wavemill\nGraph label: source_backed_multi_signal_graph\nNodes: 10\nEdges: 12\nNode types: {\"cooccurrence_profile\": 1, \"github_repo_summary\": 1, \"helicopter_repo_view\": 4, \"repo\": 1, \"source_artifact\": 2, \"source_bundle\": 1}\nEdge types: {\"artifact_needs_claim_verification\": 1, \"artifact_supports_verification\": 1, \"repo_has_cooccurrence_profile\": 1, \"repo_has_github_evidence_summary\": 1, \"repo_has_graphs_helicopter_view\": 2, \"repo_has_schemas_helicopter_view\": 2, \"repo_has_source_artifact\": 2, \"repo_has_source_bundle\": 1, \"source_bundle_uses_cooccurrence_profile\": 1}\nArtifact families: {\"docs\": 1, \"schemas\": 1}\nHelicopter views: {\"graphs\": 2, \"schemas\": 2}\nBundle labels: {\"source_backed_fake_real_verification_bundle\": 1}\nCo-occurrence labels: {\"fake_real_data_plus_verification_gap\": 1}", "source": "foundry_mined_dataset", "repo_url": "https://github.com/timogilvie/wavemill", "source_id": "comment-chain-pattern-assumption_checks-9db2fdca9457405e", "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": "timogilvie/wavemill", "source_dataset": "comment_chain_patterns/assumption_checks", "training_usage": "weak_supervision"}}}, {"ruleId": "foundry_assumption_check", "level": "warning", "message": {"text": "Foundry mined assumption checks: timogilvie/wavemill"}, "properties": {"repobilityId": 382824, "scanner": "foundry_dataset", "fingerprint": "ea9ec0052037c3d6d500f6738e2fcca30a7809efa00ad7e3741ec1dfdd67278f", "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": "timogilvie/wavemill#183", "human_labels": ["human_feedback_general"], "issue_number": "183", "thread_label": "thread_needs_classification", "outcome_label": "ambiguous_needs_more_evidence", "source_backed": true, "max_confidence": 0.0, "repo_full_name": "timogilvie/wavemill", "training_usage": "negative_or_unresolved", "confidence_tier": "unresolved", "source_chain_id": "evidence-chain-issue_chain-fee8ef58080e04ef", "helicopter_views": {"graphs": 2, "schemas": 2}, "artifact_families": {"docs": 1, "schemas": 1}, "source_chain_kind": "issue_chain", "changed_file_count": 0, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {}, "linked_commit_count": 0, "helicopter_view_count": 4, "source_artifact_count": 2, "classification_reasons": ["source_graph_has_real_artifacts", "source_graph_has_verification_artifacts", "repo_has_isolated_helicopter_views", "link_quality_unresolved"], "linked_ci_commit_count": 0, "verification_artifact_count": 1, "design_schema_api_artifact_count": 1}, "text": "Comment chain pattern product: assumption_checks\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#183\nOutcome: ambiguous_needs_more_evidence\nThread label: thread_needs_classification\nSource graph label: source_backed_multi_signal_graph\nReasons: source_graph_has_real_artifacts, source_graph_has_verification_artifacts, repo_has_isolated_helicopter_views, link_quality_unresolved\nChain evidence:\nIssue/PR evidence chain: timogilvie/wavemill#183\nRepo: timogilvie/wavemill\nThread label: thread_needs_classification\nOutcome: ambiguous_needs_more_evidence\nComment count: 1\nLinked commit count: 0\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 0\nLabels: {'human_feedback_general': 1}\nPolarities: {'neutral': 1}\nChanged file labels: {}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-e421184ff1cccd95\",\n    \"kind\": \"issue_comment\",\n    \"label\": \"human_feedback_general\",\n    \"polarity\": \"neutral\",\n    \"url\": \"https://github.com/timogilvie/wavemill/pull/183#issuecomment-4187851468\",\n    \"text\": \"GitHub feedback: human_feedback_general\\nPolarity: neutral\\nKind: issue_comment\\nRepo: timogilvie/wavemill\\nAuthor: timogilvie (User)\\nURL: https://github.com/timogilvie/wavemill/pull/183#issuecomment-4187851468\\nTitle: \\nBody:\\nLinear: HOK-1103\"\n  }\n]\nChanged files:\n[]\nLinked chain ids:\n[\"evidence-chain-comment_to_commit-f06ceacf6fefed65\"]\nSource graph evidence:\nSource evidence repo graph summary\nRepo: timogilvie/wavemill\nGraph label: source_backed_multi_signal_graph\nNodes: 10\nEdges: 12\nNode types: {\"cooccurrence_profile\": 1, \"github_repo_summary\": 1, \"helicopter_repo_view\": 4, \"repo\": 1, \"source_artifact\": 2, \"source_bundle\": 1}\nEdge types: {\"artifact_needs_claim_verification\": 1, \"artifact_supports_verification\": 1, \"repo_has_cooccurrence_profile\": 1, \"repo_has_github_evidence_summary\": 1, \"repo_has_graphs_helicopter_view\": 2, \"repo_has_schemas_helicopter_view\": 2, \"repo_has_source_artifact\": 2, \"repo_has_source_bundle\": 1, \"source_bundle_uses_cooccurrence_profile\": 1}\nArtifact families: {\"docs\": 1, \"schemas\": 1}\nHelicopter views: {\"graphs\": 2, \"schemas\": 2}\nBundle labels: {\"source_backed_fake_real_verification_bundle\": 1}\nCo-occurrence labels: {\"fake_real_data_plus_verification_gap\": 1}", "source": "foundry_mined_dataset", "repo_url": "https://github.com/timogilvie/wavemill", "source_id": "comment-chain-pattern-assumption_checks-9d0c613bfc8812ba", "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": "timogilvie/wavemill", "source_dataset": "comment_chain_patterns/assumption_checks", "training_usage": "negative_or_unresolved"}}}, {"ruleId": "foundry_assumption_check", "level": "warning", "message": {"text": "Foundry mined assumption checks: timogilvie/wavemill"}, "properties": {"repobilityId": 382823, "scanner": "foundry_dataset", "fingerprint": "7ace1aae8d68ec3da30294d1898e52f62f02a5e50959381a62809111a64ac91c", "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": "timogilvie/wavemill#182", "human_labels": ["human_feedback_general"], "issue_number": "182", "thread_label": "thread_needs_classification", "outcome_label": "ambiguous_needs_more_evidence", "source_backed": true, "max_confidence": 0.0, "repo_full_name": "timogilvie/wavemill", "training_usage": "negative_or_unresolved", "confidence_tier": "unresolved", "source_chain_id": "evidence-chain-issue_chain-51b17117c0f21324", "helicopter_views": {"graphs": 2, "schemas": 2}, "artifact_families": {"docs": 1, "schemas": 1}, "source_chain_kind": "issue_chain", "changed_file_count": 0, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {}, "linked_commit_count": 0, "helicopter_view_count": 4, "source_artifact_count": 2, "classification_reasons": ["source_graph_has_real_artifacts", "source_graph_has_verification_artifacts", "repo_has_isolated_helicopter_views", "link_quality_unresolved"], "linked_ci_commit_count": 0, "verification_artifact_count": 1, "design_schema_api_artifact_count": 1}, "text": "Comment chain pattern product: assumption_checks\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#182\nOutcome: ambiguous_needs_more_evidence\nThread label: thread_needs_classification\nSource graph label: source_backed_multi_signal_graph\nReasons: source_graph_has_real_artifacts, source_graph_has_verification_artifacts, repo_has_isolated_helicopter_views, link_quality_unresolved\nChain evidence:\nIssue/PR evidence chain: timogilvie/wavemill#182\nRepo: timogilvie/wavemill\nThread label: thread_needs_classification\nOutcome: ambiguous_needs_more_evidence\nComment count: 1\nLinked commit count: 0\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 0\nLabels: {'human_feedback_general': 1}\nPolarities: {'neutral': 1}\nChanged file labels: {}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-518096e574494aa2\",\n    \"kind\": \"issue_comment\",\n    \"label\": \"human_feedback_general\",\n    \"polarity\": \"neutral\",\n    \"url\": \"https://github.com/timogilvie/wavemill/pull/182#issuecomment-4187839704\",\n    \"text\": \"GitHub feedback: human_feedback_general\\nPolarity: neutral\\nKind: issue_comment\\nRepo: timogilvie/wavemill\\nAuthor: timogilvie (User)\\nURL: https://github.com/timogilvie/wavemill/pull/182#issuecomment-4187839704\\nTitle: \\nBody:\\nFixes HOK-1112\"\n  }\n]\nChanged files:\n[]\nLinked chain ids:\n[\"evidence-chain-comment_to_commit-3c278cdcd880c677\"]\nSource graph evidence:\nSource evidence repo graph summary\nRepo: timogilvie/wavemill\nGraph label: source_backed_multi_signal_graph\nNodes: 10\nEdges: 12\nNode types: {\"cooccurrence_profile\": 1, \"github_repo_summary\": 1, \"helicopter_repo_view\": 4, \"repo\": 1, \"source_artifact\": 2, \"source_bundle\": 1}\nEdge types: {\"artifact_needs_claim_verification\": 1, \"artifact_supports_verification\": 1, \"repo_has_cooccurrence_profile\": 1, \"repo_has_github_evidence_summary\": 1, \"repo_has_graphs_helicopter_view\": 2, \"repo_has_schemas_helicopter_view\": 2, \"repo_has_source_artifact\": 2, \"repo_has_source_bundle\": 1, \"source_bundle_uses_cooccurrence_profile\": 1}\nArtifact families: {\"docs\": 1, \"schemas\": 1}\nHelicopter views: {\"graphs\": 2, \"schemas\": 2}\nBundle labels: {\"source_backed_fake_real_verification_bundle\": 1}\nCo-occurrence labels: {\"fake_real_data_plus_verification_gap\": 1}", "source": "foundry_mined_dataset", "repo_url": "https://github.com/timogilvie/wavemill", "source_id": "comment-chain-pattern-assumption_checks-e390172b8e062ab5", "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": "timogilvie/wavemill", "source_dataset": "comment_chain_patterns/assumption_checks", "training_usage": "negative_or_unresolved"}}}, {"ruleId": "foundry_assumption_check", "level": "warning", "message": {"text": "Foundry mined assumption checks: timogilvie/wavemill"}, "properties": {"repobilityId": 382822, "scanner": "foundry_dataset", "fingerprint": "6991355cea83587b56980aa5e06c12aeaf8baeef12a76690dcd0aaec8c930d56", "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": "timogilvie/wavemill#178", "human_labels": ["agent_instruction_gap", "human_feedback_general"], "issue_number": "178", "thread_label": "thread_has_human_issue_without_fix_context", "outcome_label": "ambiguous_needs_more_evidence", "source_backed": true, "max_confidence": 0.0, "repo_full_name": "timogilvie/wavemill", "training_usage": "negative_or_unresolved", "confidence_tier": "unresolved", "source_chain_id": "evidence-chain-issue_chain-67a78e8ff3050c0f", "helicopter_views": {"graphs": 2, "schemas": 2}, "artifact_families": {"docs": 1, "schemas": 1}, "source_chain_kind": "issue_chain", "changed_file_count": 0, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {}, "linked_commit_count": 0, "helicopter_view_count": 4, "source_artifact_count": 2, "classification_reasons": ["source_graph_has_real_artifacts", "source_graph_has_verification_artifacts", "repo_has_isolated_helicopter_views", "link_quality_unresolved"], "linked_ci_commit_count": 0, "verification_artifact_count": 1, "design_schema_api_artifact_count": 1}, "text": "Comment chain pattern product: assumption_checks\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#178\nOutcome: ambiguous_needs_more_evidence\nThread label: thread_has_human_issue_without_fix_context\nSource graph label: source_backed_multi_signal_graph\nReasons: source_graph_has_real_artifacts, source_graph_has_verification_artifacts, repo_has_isolated_helicopter_views, link_quality_unresolved\nChain evidence:\nIssue/PR evidence chain: timogilvie/wavemill#178\nRepo: timogilvie/wavemill\nThread label: thread_has_human_issue_without_fix_context\nOutcome: ambiguous_needs_more_evidence\nComment count: 3\nLinked commit count: 0\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 0\nLabels: {'human_feedback_general': 2, 'agent_instruction_gap': 1}\nPolarities: {'neutral': 2, 'bad': 1}\nChanged file labels: {}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-dd4994574813c58e\",\n    \"kind\": \"issue_comment\",\n    \"label\": \"human_feedback_general\",\n    \"polarity\": \"neutral\",\n    \"url\": \"https://github.com/timogilvie/wavemill/pull/178#issuecomment-4187247535\",\n    \"text\": \"GitHub feedback: human_feedback_general\\nPolarity: neutral\\nKind: issue_comment\\nRepo: timogilvie/wavemill\\nAuthor: timogilvie (User)\\nURL: https://github.com/timogilvie/wavemill/pull/178#issuecomment-4187247535\\nTitle: \\nBody:\\nCloses HOK-1107\"\n  },\n  {\n    \"id\": \"github-feedback-comment-a9b203a29646e35c\",\n    \"kind\": \"issue_comment\",\n    \"label\": \"agent_instruction_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/timogilvie/wavemill/pull/178#issuecomment-4187254651\",\n    \"text\": \"GitHub feedback: agent_instruction_gap\\nPolarity: bad\\nKind: issue_comment\\nRepo: timogilvie/wavemill\\nAuthor: timogilvie (User)\\nURL: https://github.com/timogilvie/wavemill/pull/178#issuecomment-4187254651\\nTitle: \\nBody:\\nChallenge comparison for `HOK-1107`\\n\\nRecommended winner: challenger (claude-haiku-4-5-20251001)\\nOther PR: https://github.com/timogilvie/wavemill/pull/178\\n\\nChallenger stays in scope (no review-pr.ts changes), adds 3 test files with package.json registration, uses proper named type exports (ValidatedComparisonResult), preserves original marker text ('\u2190 strongest signal' vs primary's '\u2190 strongest signal' \u2192 '<- strongest signal'), and better separates template filling logic (fillProjectContextTemplate as a standalone testable function). Primary violates explicit scope exclusion by modifying tools/review-pr.ts.\"\n  },\n  {\n    \"id\": \"github-feedback-comment-440b5011fa39235f\",\n    \"kind\": \"issue_comment\",\n    \"label\": \"human_feedback_general\",\n    \"polarity\": \"neutral\",\n    \"url\": \"https://github.com/timogilvie/wavemill/pull/178#issuecomment-4187269258\",\n    \"text\": \"GitHub feedback: human_feedback_general\\nPolarity: neutral\\nKind: issue_comment\\nRepo: timogilvie/wavemill\\nAuthor: timogilvie (User)\\nURL: https://github.com/timogilvie/wavemill/pull/178#issuecomment-4187269258\\nTitle: \\nBody:\\nClosing: scope violation (modified review-pr.ts which\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/timogilvie/wavemill", "source_id": "comment-chain-pattern-assumption_checks-e82d7af75eb47db4", "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": "timogilvie/wavemill", "source_dataset": "comment_chain_patterns/assumption_checks", "training_usage": "negative_or_unresolved"}}}, {"ruleId": "foundry_assumption_check", "level": "warning", "message": {"text": "Foundry mined assumption checks: timogilvie/wavemill"}, "properties": {"repobilityId": 382821, "scanner": "foundry_dataset", "fingerprint": "b6ef42cc91ebc12d6fb7213eab7a7bfc18e0e63a4d9249e1a0a1b9a7a447bb4a", "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": "timogilvie/wavemill#177", "human_labels": ["agent_instruction_gap", "human_feedback_general"], "issue_number": "177", "thread_label": "thread_has_human_issue_without_fix_context", "outcome_label": "ambiguous_needs_more_evidence", "source_backed": true, "max_confidence": 0.0, "repo_full_name": "timogilvie/wavemill", "training_usage": "negative_or_unresolved", "confidence_tier": "unresolved", "source_chain_id": "evidence-chain-issue_chain-655c6a8ae5da28e6", "helicopter_views": {"graphs": 2, "schemas": 2}, "artifact_families": {"docs": 1, "schemas": 1}, "source_chain_kind": "issue_chain", "changed_file_count": 0, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {}, "linked_commit_count": 0, "helicopter_view_count": 4, "source_artifact_count": 2, "classification_reasons": ["source_graph_has_real_artifacts", "source_graph_has_verification_artifacts", "repo_has_isolated_helicopter_views", "link_quality_unresolved"], "linked_ci_commit_count": 0, "verification_artifact_count": 1, "design_schema_api_artifact_count": 1}, "text": "Comment chain pattern product: assumption_checks\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#177\nOutcome: ambiguous_needs_more_evidence\nThread label: thread_has_human_issue_without_fix_context\nSource graph label: source_backed_multi_signal_graph\nReasons: source_graph_has_real_artifacts, source_graph_has_verification_artifacts, repo_has_isolated_helicopter_views, link_quality_unresolved\nChain evidence:\nIssue/PR evidence chain: timogilvie/wavemill#177\nRepo: timogilvie/wavemill\nThread label: thread_has_human_issue_without_fix_context\nOutcome: ambiguous_needs_more_evidence\nComment count: 2\nLinked commit count: 0\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 0\nLabels: {'human_feedback_general': 1, 'agent_instruction_gap': 1}\nPolarities: {'neutral': 1, 'bad': 1}\nChanged file labels: {}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-454680ca52af63d2\",\n    \"kind\": \"issue_comment\",\n    \"label\": \"human_feedback_general\",\n    \"polarity\": \"neutral\",\n    \"url\": \"https://github.com/timogilvie/wavemill/pull/177#issuecomment-4187246187\",\n    \"text\": \"GitHub feedback: human_feedback_general\\nPolarity: neutral\\nKind: issue_comment\\nRepo: timogilvie/wavemill\\nAuthor: timogilvie (User)\\nURL: https://github.com/timogilvie/wavemill/pull/177#issuecomment-4187246187\\nTitle: \\nBody:\\nFixes HOK-1107__challenger\"\n  },\n  {\n    \"id\": \"github-feedback-comment-9dbfd99fcb85b1b5\",\n    \"kind\": \"issue_comment\",\n    \"label\": \"agent_instruction_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/timogilvie/wavemill/pull/177#issuecomment-4187254683\",\n    \"text\": \"GitHub feedback: agent_instruction_gap\\nPolarity: bad\\nKind: issue_comment\\nRepo: timogilvie/wavemill\\nAuthor: timogilvie (User)\\nURL: https://github.com/timogilvie/wavemill/pull/177#issuecomment-4187254683\\nTitle: \\nBody:\\nChallenge comparison for `HOK-1107`\\n\\nRecommended winner: challenger (claude-haiku-4-5-20251001)\\nOther PR: https://github.com/timogilvie/wavemill/pull/178\\n\\nChallenger stays in scope (no review-pr.ts changes), adds 3 test files with package.json registration, uses proper named type exports (ValidatedComparisonResult), preserves original marker text ('\u2190 strongest signal' vs primary's '\u2190 strongest signal' \u2192 '<- strongest signal'), and better separates template filling logic (fillProjectContextTemplate as a standalone testable function). Primary violates explicit scope exclusion by modifying tools/review-pr.ts.\"\n  }\n]\nChanged files:\n[]\nLinked chain ids:\n[\"evidence-chain-comment_to_commit-5e31c03bb3ce6e0a\", \"evidence-chain-comment_to_commit-8ec7bd7f80127ba6\"]\nSource graph evidence:\nSource evidence repo graph summary\nRepo: timogilvie/wavemill\nGraph label: source_backed_multi_signal_graph\nNodes: 10\nEdges: 12\nNode types: {\"cooccurrence_profile\": 1, \"github_repo_summary\": 1, \"helicopter_repo_view\": 4, \"repo\": 1, \"source_artifact\": 2, \"source_bundle\": 1}\nEdge types: {\"artifact_needs_claim_verification\": 1, \"artifact_supports_verification\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/timogilvie/wavemill", "source_id": "comment-chain-pattern-assumption_checks-f048e4c84eaadb54", "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": "timogilvie/wavemill", "source_dataset": "comment_chain_patterns/assumption_checks", "training_usage": "negative_or_unresolved"}}}, {"ruleId": "foundry_assumption_check", "level": "warning", "message": {"text": "Foundry mined assumption checks: timogilvie/wavemill"}, "properties": {"repobilityId": 382820, "scanner": "foundry_dataset", "fingerprint": "6c5008219889fdf433a978b01ddf4a5669616f3758732c56e11c7a47cff7b99b", "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": "timogilvie/wavemill#176", "human_labels": ["human_feedback_general"], "issue_number": "176", "thread_label": "thread_needs_classification", "outcome_label": "ambiguous_needs_more_evidence", "source_backed": true, "max_confidence": 0.0, "repo_full_name": "timogilvie/wavemill", "training_usage": "negative_or_unresolved", "confidence_tier": "unresolved", "source_chain_id": "evidence-chain-issue_chain-52de1e320ea615f4", "helicopter_views": {"graphs": 2, "schemas": 2}, "artifact_families": {"docs": 1, "schemas": 1}, "source_chain_kind": "issue_chain", "changed_file_count": 0, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {}, "linked_commit_count": 0, "helicopter_view_count": 4, "source_artifact_count": 2, "classification_reasons": ["source_graph_has_real_artifacts", "source_graph_has_verification_artifacts", "repo_has_isolated_helicopter_views", "link_quality_unresolved"], "linked_ci_commit_count": 0, "verification_artifact_count": 1, "design_schema_api_artifact_count": 1}, "text": "Comment chain pattern product: assumption_checks\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#176\nOutcome: ambiguous_needs_more_evidence\nThread label: thread_needs_classification\nSource graph label: source_backed_multi_signal_graph\nReasons: source_graph_has_real_artifacts, source_graph_has_verification_artifacts, repo_has_isolated_helicopter_views, link_quality_unresolved\nChain evidence:\nIssue/PR evidence chain: timogilvie/wavemill#176\nRepo: timogilvie/wavemill\nThread label: thread_needs_classification\nOutcome: ambiguous_needs_more_evidence\nComment count: 2\nLinked commit count: 0\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 0\nLabels: {'human_feedback_general': 2}\nPolarities: {'neutral': 2}\nChanged file labels: {}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-825c7231dc81a53b\",\n    \"kind\": \"issue_comment\",\n    \"label\": \"human_feedback_general\",\n    \"polarity\": \"neutral\",\n    \"url\": \"https://github.com/timogilvie/wavemill/pull/176#issuecomment-4187247990\",\n    \"text\": \"GitHub feedback: human_feedback_general\\nPolarity: neutral\\nKind: issue_comment\\nRepo: timogilvie/wavemill\\nAuthor: timogilvie (User)\\nURL: https://github.com/timogilvie/wavemill/pull/176#issuecomment-4187247990\\nTitle: \\nBody:\\nChallenge comparison for `HOK-1104`\\n\\nRecommended winner: challenger (gpt-5.4)\\nOther PR: https://github.com/timogilvie/wavemill/pull/176\\n\\nBoth PRs are functionally identical in the changes they make \u2014 same files modified, same replacements, same import additions. The only differences are trivial import ordering preferences. Given identical quality, the challenger wins based on the eval scores (challenger: 1, primary: 0).\"\n  },\n  {\n    \"id\": \"github-feedback-comment-7cf44ec4c22e3814\",\n    \"kind\": \"issue_comment\",\n    \"label\": \"human_feedback_general\",\n    \"polarity\": \"neutral\",\n    \"url\": \"https://github.com/timogilvie/wavemill/pull/176#issuecomment-4187799910\",\n    \"text\": \"GitHub feedback: human_feedback_general\\nPolarity: neutral\\nKind: issue_comment\\nRepo: timogilvie/wavemill\\nAuthor: timogilvie (User)\\nURL: https://github.com/timogilvie/wavemill/pull/176#issuecomment-4187799910\\nTitle: \\nBody:\\nClosing losing challenger.\"\n  }\n]\nChanged files:\n[]\nLinked chain ids:\n[\"evidence-chain-comment_to_commit-dbaa1fa4930c81ce\", \"evidence-chain-comment_to_commit-6ab8bb2b9efd63dc\"]\nSource graph evidence:\nSource evidence repo graph summary\nRepo: timogilvie/wavemill\nGraph label: source_backed_multi_signal_graph\nNodes: 10\nEdges: 12\nNode types: {\"cooccurrence_profile\": 1, \"github_repo_summary\": 1, \"helicopter_repo_view\": 4, \"repo\": 1, \"source_artifact\": 2, \"source_bundle\": 1}\nEdge types: {\"artifact_needs_claim_verification\": 1, \"artifact_supports_verification\": 1, \"repo_has_cooccurrence_profile\": 1, \"repo_has_github_evidence_summary\": 1, \"repo_has_graphs_helicopter_view\": 2, \"repo_has_schemas_helicopter_view\": 2, \"repo_has_source_artifact\": 2, \"repo_has_source_bundle\": 1, \"source_bundle_uses_cooccurren\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/timogilvie/wavemill", "source_id": "comment-chain-pattern-assumption_checks-270b4d7ccdd683ff", "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": "timogilvie/wavemill", "source_dataset": "comment_chain_patterns/assumption_checks", "training_usage": "negative_or_unresolved"}}}, {"ruleId": "foundry_assumption_check", "level": "warning", "message": {"text": "Foundry mined assumption checks: timogilvie/wavemill"}, "properties": {"repobilityId": 382819, "scanner": "foundry_dataset", "fingerprint": "ba93190d7830bb9316c3336db8c04b2a38e91ee2175898eee397dce1d51e15a5", "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": "timogilvie/wavemill#173", "human_labels": ["human_feedback_general", "test_ci_gap"], "issue_number": "173", "thread_label": "thread_has_human_issue_and_fix_context", "outcome_label": "ambiguous_needs_more_evidence", "source_backed": true, "max_confidence": 0.65, "repo_full_name": "timogilvie/wavemill", "training_usage": "weak_supervision", "confidence_tier": "weak_supervision", "source_chain_id": "evidence-chain-issue_chain-cdac365774cd708c", "helicopter_views": {"graphs": 2, "schemas": 2}, "artifact_families": {"docs": 1, "schemas": 1}, "source_chain_kind": "issue_chain", "changed_file_count": 0, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {}, "linked_commit_count": 2, "helicopter_view_count": 4, "source_artifact_count": 2, "classification_reasons": ["source_graph_has_real_artifacts", "source_graph_has_verification_artifacts", "repo_has_isolated_helicopter_views", "link_quality_weak_supervision", "high_risk_human_feedback_label"], "linked_ci_commit_count": 0, "verification_artifact_count": 1, "design_schema_api_artifact_count": 1}, "text": "Comment chain pattern product: assumption_checks\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#173\nOutcome: ambiguous_needs_more_evidence\nThread label: thread_has_human_issue_and_fix_context\nSource graph label: source_backed_multi_signal_graph\nReasons: source_graph_has_real_artifacts, source_graph_has_verification_artifacts, repo_has_isolated_helicopter_views, link_quality_weak_supervision, high_risk_human_feedback_label\nChain evidence:\nIssue/PR evidence chain: timogilvie/wavemill#173\nRepo: timogilvie/wavemill\nThread label: thread_has_human_issue_and_fix_context\nOutcome: ambiguous_needs_more_evidence\nComment count: 4\nLinked commit count: 2\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 0\nLabels: {'test_ci_gap': 2, 'human_feedback_general': 2}\nPolarities: {'bad': 2, 'neutral': 2}\nChanged file labels: {}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-37268401f8c57b69\",\n    \"kind\": \"pull_request_body\",\n    \"label\": \"test_ci_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/timogilvie/wavemill/pull/173\",\n    \"text\": \"GitHub feedback: test_ci_gap\\nPolarity: bad\\nKind: pull_request_body\\nRepo: timogilvie/wavemill\\nAuthor: timogilvie (User)\\nURL: https://github.com/timogilvie/wavemill/pull/173\\nTitle: HOK-1100: Extract appendJsonlRecord and consolidate JSONL IO\\nBody:\\n## Summary\\n\\n- Extracted atomic JSONL append logic into shared `appendJsonlRecord()` function\\n- Consolidated duplicate JSONL read implementations to use `readJsonlFile()`\\n- Removed code duplication across 6 files by using centralized utilities\\n\\n## Changes\\n\\n**Core utilities:**\\n- `shared/lib/jsonl-utils.ts`: Added `appendJsonlRecord<T>()` with atomic write-rename pattern\\n- `shared/lib/jsonl-utils.test.ts`: Added comprehensive tests for append and read operations\\n\\n**Refactored files:**\\n- `shared/lib/eval-persistence.ts`: Replaced inline append with `appendJsonlRecord()`\\n- `shared/lib/prompt-registry.ts`: Replaced inline append and read with shared utilities\\n- `shared/lib/challenge-comparison.ts`: Replaced inline append and read with shared utilities\\n- `shared/lib/eval-aggregator.ts`: Replaced inline read with `readJsonlFile()`\\n- `shared/lib/review-metrics.ts`: Replaced inline read with `readJsonlFile()`\\n\\n## Test plan\\n\\n- \u2705 All existing tests pas\"\n  },\n  {\n    \"id\": \"github-feedback-comment-75401c76cf9fe956\",\n    \"kind\": \"issue_comment\",\n    \"label\": \"human_feedback_general\",\n    \"polarity\": \"neutral\",\n    \"url\": \"https://github.com/timogilvie/wavemill/pull/173#issuecomment-4187218052\",\n    \"text\": \"GitHub feedback: human_feedback_general\\nPolarity: neutral\\nKind: issue_comment\\nRepo: timogilvie/wavemill\\nAuthor: timogilvie (User)\\nURL: https://github.com/timogilvie/wavemill/pull/173#issuecomment-4187218052\\nTitle: \\nBody:\\nCloses HOK-1100\"\n  },\n  {\n    \"id\": \"github-feedback-comment-adf1db5a095dedac\",\n    \"kind\": \"issue_comment\",\n    \"label\": \"test_ci_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/timogilvie/wavemill", "source_id": "comment-chain-pattern-assumption_checks-7daf3da380fb5511", "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": "timogilvie/wavemill", "source_dataset": "comment_chain_patterns/assumption_checks", "training_usage": "weak_supervision"}}}, {"ruleId": "foundry_assumption_check", "level": "warning", "message": {"text": "Foundry mined assumption checks: timogilvie/wavemill"}, "properties": {"repobilityId": 382818, "scanner": "foundry_dataset", "fingerprint": "933015c09e6073de9e516778f39a96e660f4bf1ca5d80a471c25f1b00528b566", "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": "timogilvie/wavemill#171", "human_labels": ["human_feedback_general"], "issue_number": "171", "thread_label": "thread_needs_classification", "outcome_label": "ambiguous_needs_more_evidence", "source_backed": true, "max_confidence": 0.0, "repo_full_name": "timogilvie/wavemill", "training_usage": "negative_or_unresolved", "confidence_tier": "unresolved", "source_chain_id": "evidence-chain-issue_chain-7822e781d33d83ff", "helicopter_views": {"graphs": 2, "schemas": 2}, "artifact_families": {"docs": 1, "schemas": 1}, "source_chain_kind": "issue_chain", "changed_file_count": 0, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {}, "linked_commit_count": 0, "helicopter_view_count": 4, "source_artifact_count": 2, "classification_reasons": ["source_graph_has_real_artifacts", "source_graph_has_verification_artifacts", "repo_has_isolated_helicopter_views", "link_quality_unresolved"], "linked_ci_commit_count": 0, "verification_artifact_count": 1, "design_schema_api_artifact_count": 1}, "text": "Comment chain pattern product: assumption_checks\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#171\nOutcome: ambiguous_needs_more_evidence\nThread label: thread_needs_classification\nSource graph label: source_backed_multi_signal_graph\nReasons: source_graph_has_real_artifacts, source_graph_has_verification_artifacts, repo_has_isolated_helicopter_views, link_quality_unresolved\nChain evidence:\nIssue/PR evidence chain: timogilvie/wavemill#171\nRepo: timogilvie/wavemill\nThread label: thread_needs_classification\nOutcome: ambiguous_needs_more_evidence\nComment count: 1\nLinked commit count: 0\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 0\nLabels: {'human_feedback_general': 1}\nPolarities: {'neutral': 1}\nChanged file labels: {}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-4953606b8478940d\",\n    \"kind\": \"issue_comment\",\n    \"label\": \"human_feedback_general\",\n    \"polarity\": \"neutral\",\n    \"url\": \"https://github.com/timogilvie/wavemill/pull/171#issuecomment-4187208039\",\n    \"text\": \"GitHub feedback: human_feedback_general\\nPolarity: neutral\\nKind: issue_comment\\nRepo: timogilvie/wavemill\\nAuthor: timogilvie (User)\\nURL: https://github.com/timogilvie/wavemill/pull/171#issuecomment-4187208039\\nTitle: \\nBody:\\nCloses HOK-1106\"\n  }\n]\nChanged files:\n[]\nLinked chain ids:\n[\"evidence-chain-comment_to_commit-91cbee57e4130d06\"]\nSource graph evidence:\nSource evidence repo graph summary\nRepo: timogilvie/wavemill\nGraph label: source_backed_multi_signal_graph\nNodes: 10\nEdges: 12\nNode types: {\"cooccurrence_profile\": 1, \"github_repo_summary\": 1, \"helicopter_repo_view\": 4, \"repo\": 1, \"source_artifact\": 2, \"source_bundle\": 1}\nEdge types: {\"artifact_needs_claim_verification\": 1, \"artifact_supports_verification\": 1, \"repo_has_cooccurrence_profile\": 1, \"repo_has_github_evidence_summary\": 1, \"repo_has_graphs_helicopter_view\": 2, \"repo_has_schemas_helicopter_view\": 2, \"repo_has_source_artifact\": 2, \"repo_has_source_bundle\": 1, \"source_bundle_uses_cooccurrence_profile\": 1}\nArtifact families: {\"docs\": 1, \"schemas\": 1}\nHelicopter views: {\"graphs\": 2, \"schemas\": 2}\nBundle labels: {\"source_backed_fake_real_verification_bundle\": 1}\nCo-occurrence labels: {\"fake_real_data_plus_verification_gap\": 1}", "source": "foundry_mined_dataset", "repo_url": "https://github.com/timogilvie/wavemill", "source_id": "comment-chain-pattern-assumption_checks-d9861a1acb15c25c", "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": "timogilvie/wavemill", "source_dataset": "comment_chain_patterns/assumption_checks", "training_usage": "negative_or_unresolved"}}}, {"ruleId": "foundry_assumption_check", "level": "warning", "message": {"text": "Foundry mined assumption checks: timogilvie/wavemill"}, "properties": {"repobilityId": 382817, "scanner": "foundry_dataset", "fingerprint": "fe8e4860d9dd2c7bc348c536bc644dd42944c2529066258a5832b1e69786142b", "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": "timogilvie/wavemill#170", "human_labels": ["human_feedback_general"], "issue_number": "170", "thread_label": "thread_needs_classification", "outcome_label": "ambiguous_needs_more_evidence", "source_backed": true, "max_confidence": 0.0, "repo_full_name": "timogilvie/wavemill", "training_usage": "negative_or_unresolved", "confidence_tier": "unresolved", "source_chain_id": "evidence-chain-issue_chain-0ab52c0c8ac20cc7", "helicopter_views": {"graphs": 2, "schemas": 2}, "artifact_families": {"docs": 1, "schemas": 1}, "source_chain_kind": "issue_chain", "changed_file_count": 0, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {}, "linked_commit_count": 0, "helicopter_view_count": 4, "source_artifact_count": 2, "classification_reasons": ["source_graph_has_real_artifacts", "source_graph_has_verification_artifacts", "repo_has_isolated_helicopter_views", "link_quality_unresolved"], "linked_ci_commit_count": 0, "verification_artifact_count": 1, "design_schema_api_artifact_count": 1}, "text": "Comment chain pattern product: assumption_checks\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#170\nOutcome: ambiguous_needs_more_evidence\nThread label: thread_needs_classification\nSource graph label: source_backed_multi_signal_graph\nReasons: source_graph_has_real_artifacts, source_graph_has_verification_artifacts, repo_has_isolated_helicopter_views, link_quality_unresolved\nChain evidence:\nIssue/PR evidence chain: timogilvie/wavemill#170\nRepo: timogilvie/wavemill\nThread label: thread_needs_classification\nOutcome: ambiguous_needs_more_evidence\nComment count: 1\nLinked commit count: 0\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 0\nLabels: {'human_feedback_general': 1}\nPolarities: {'neutral': 1}\nChanged file labels: {}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-2aa97172173164a2\",\n    \"kind\": \"issue_comment\",\n    \"label\": \"human_feedback_general\",\n    \"polarity\": \"neutral\",\n    \"url\": \"https://github.com/timogilvie/wavemill/pull/170#issuecomment-4187248008\",\n    \"text\": \"GitHub feedback: human_feedback_general\\nPolarity: neutral\\nKind: issue_comment\\nRepo: timogilvie/wavemill\\nAuthor: timogilvie (User)\\nURL: https://github.com/timogilvie/wavemill/pull/170#issuecomment-4187248008\\nTitle: \\nBody:\\nChallenge comparison for `HOK-1104`\\n\\nRecommended winner: challenger (gpt-5.4)\\nOther PR: https://github.com/timogilvie/wavemill/pull/176\\n\\nBoth PRs are functionally identical in the changes they make \u2014 same files modified, same replacements, same import additions. The only differences are trivial import ordering preferences. Given identical quality, the challenger wins based on the eval scores (challenger: 1, primary: 0).\"\n  }\n]\nChanged files:\n[]\nLinked chain ids:\n[\"evidence-chain-comment_to_commit-7eee39f793c943e3\"]\nSource graph evidence:\nSource evidence repo graph summary\nRepo: timogilvie/wavemill\nGraph label: source_backed_multi_signal_graph\nNodes: 10\nEdges: 12\nNode types: {\"cooccurrence_profile\": 1, \"github_repo_summary\": 1, \"helicopter_repo_view\": 4, \"repo\": 1, \"source_artifact\": 2, \"source_bundle\": 1}\nEdge types: {\"artifact_needs_claim_verification\": 1, \"artifact_supports_verification\": 1, \"repo_has_cooccurrence_profile\": 1, \"repo_has_github_evidence_summary\": 1, \"repo_has_graphs_helicopter_view\": 2, \"repo_has_schemas_helicopter_view\": 2, \"repo_has_source_artifact\": 2, \"repo_has_source_bundle\": 1, \"source_bundle_uses_cooccurrence_profile\": 1}\nArtifact families: {\"docs\": 1, \"schemas\": 1}\nHelicopter views: {\"graphs\": 2, \"schemas\": 2}\nBundle labels: {\"source_backed_fake_real_verification_bundle\": 1}\nCo-occurrence labels: {\"fake_real_data_plus_verification_gap\": 1}", "source": "foundry_mined_dataset", "repo_url": "https://github.com/timogilvie/wavemill", "source_id": "comment-chain-pattern-assumption_checks-4d0721b51d03e0bc", "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": "timogilvie/wavemill", "source_dataset": "comment_chain_patterns/assumption_checks", "training_usage": "negative_or_unresolved"}}}, {"ruleId": "foundry_assumption_check", "level": "warning", "message": {"text": "Foundry mined assumption checks: timogilvie/wavemill"}, "properties": {"repobilityId": 382816, "scanner": "foundry_dataset", "fingerprint": "b87b1a36e5173e7d9159898a25b757d07de2046ba30e63ad27cb1a30b6d20f65", "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": "timogilvie/wavemill#169", "human_labels": ["human_feedback_general"], "issue_number": "169", "thread_label": "thread_needs_classification", "outcome_label": "ambiguous_needs_more_evidence", "source_backed": true, "max_confidence": 0.0, "repo_full_name": "timogilvie/wavemill", "training_usage": "negative_or_unresolved", "confidence_tier": "unresolved", "source_chain_id": "evidence-chain-issue_chain-555e8704d5a9cb8a", "helicopter_views": {"graphs": 2, "schemas": 2}, "artifact_families": {"docs": 1, "schemas": 1}, "source_chain_kind": "issue_chain", "changed_file_count": 0, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {}, "linked_commit_count": 0, "helicopter_view_count": 4, "source_artifact_count": 2, "classification_reasons": ["source_graph_has_real_artifacts", "source_graph_has_verification_artifacts", "repo_has_isolated_helicopter_views", "link_quality_unresolved"], "linked_ci_commit_count": 0, "verification_artifact_count": 1, "design_schema_api_artifact_count": 1}, "text": "Comment chain pattern product: assumption_checks\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#169\nOutcome: ambiguous_needs_more_evidence\nThread label: thread_needs_classification\nSource graph label: source_backed_multi_signal_graph\nReasons: source_graph_has_real_artifacts, source_graph_has_verification_artifacts, repo_has_isolated_helicopter_views, link_quality_unresolved\nChain evidence:\nIssue/PR evidence chain: timogilvie/wavemill#169\nRepo: timogilvie/wavemill\nThread label: thread_needs_classification\nOutcome: ambiguous_needs_more_evidence\nComment count: 1\nLinked commit count: 0\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 0\nLabels: {'human_feedback_general': 1}\nPolarities: {'neutral': 1}\nChanged file labels: {}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-972b973df1c5eb88\",\n    \"kind\": \"issue_comment\",\n    \"label\": \"human_feedback_general\",\n    \"polarity\": \"neutral\",\n    \"url\": \"https://github.com/timogilvie/wavemill/pull/169#issuecomment-4187205579\",\n    \"text\": \"GitHub feedback: human_feedback_general\\nPolarity: neutral\\nKind: issue_comment\\nRepo: timogilvie/wavemill\\nAuthor: timogilvie (User)\\nURL: https://github.com/timogilvie/wavemill/pull/169#issuecomment-4187205579\\nTitle: \\nBody:\\nFixes HOK-1102\"\n  }\n]\nChanged files:\n[]\nLinked chain ids:\n[\"evidence-chain-comment_to_commit-c4dc98d7d728615b\"]\nSource graph evidence:\nSource evidence repo graph summary\nRepo: timogilvie/wavemill\nGraph label: source_backed_multi_signal_graph\nNodes: 10\nEdges: 12\nNode types: {\"cooccurrence_profile\": 1, \"github_repo_summary\": 1, \"helicopter_repo_view\": 4, \"repo\": 1, \"source_artifact\": 2, \"source_bundle\": 1}\nEdge types: {\"artifact_needs_claim_verification\": 1, \"artifact_supports_verification\": 1, \"repo_has_cooccurrence_profile\": 1, \"repo_has_github_evidence_summary\": 1, \"repo_has_graphs_helicopter_view\": 2, \"repo_has_schemas_helicopter_view\": 2, \"repo_has_source_artifact\": 2, \"repo_has_source_bundle\": 1, \"source_bundle_uses_cooccurrence_profile\": 1}\nArtifact families: {\"docs\": 1, \"schemas\": 1}\nHelicopter views: {\"graphs\": 2, \"schemas\": 2}\nBundle labels: {\"source_backed_fake_real_verification_bundle\": 1}\nCo-occurrence labels: {\"fake_real_data_plus_verification_gap\": 1}", "source": "foundry_mined_dataset", "repo_url": "https://github.com/timogilvie/wavemill", "source_id": "comment-chain-pattern-assumption_checks-3a7ac7ac317016d4", "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": "timogilvie/wavemill", "source_dataset": "comment_chain_patterns/assumption_checks", "training_usage": "negative_or_unresolved"}}}, {"ruleId": "foundry_assumption_check", "level": "warning", "message": {"text": "Foundry mined assumption checks: timogilvie/wavemill"}, "properties": {"repobilityId": 382815, "scanner": "foundry_dataset", "fingerprint": "78648ccf424d43eabc052f9fc68ade239114d3c4573d501bffaa166578b4796d", "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": "timogilvie/wavemill#168", "human_labels": ["human_feedback_general"], "issue_number": "168", "thread_label": "thread_needs_classification", "outcome_label": "ambiguous_needs_more_evidence", "source_backed": true, "max_confidence": 0.0, "repo_full_name": "timogilvie/wavemill", "training_usage": "negative_or_unresolved", "confidence_tier": "unresolved", "source_chain_id": "evidence-chain-issue_chain-c5e5db3614056a1c", "helicopter_views": {"graphs": 2, "schemas": 2}, "artifact_families": {"docs": 1, "schemas": 1}, "source_chain_kind": "issue_chain", "changed_file_count": 0, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {}, "linked_commit_count": 0, "helicopter_view_count": 4, "source_artifact_count": 2, "classification_reasons": ["source_graph_has_real_artifacts", "source_graph_has_verification_artifacts", "repo_has_isolated_helicopter_views", "link_quality_unresolved"], "linked_ci_commit_count": 0, "verification_artifact_count": 1, "design_schema_api_artifact_count": 1}, "text": "Comment chain pattern product: assumption_checks\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#168\nOutcome: ambiguous_needs_more_evidence\nThread label: thread_needs_classification\nSource graph label: source_backed_multi_signal_graph\nReasons: source_graph_has_real_artifacts, source_graph_has_verification_artifacts, repo_has_isolated_helicopter_views, link_quality_unresolved\nChain evidence:\nIssue/PR evidence chain: timogilvie/wavemill#168\nRepo: timogilvie/wavemill\nThread label: thread_needs_classification\nOutcome: ambiguous_needs_more_evidence\nComment count: 1\nLinked commit count: 0\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 0\nLabels: {'human_feedback_general': 1}\nPolarities: {'neutral': 1}\nChanged file labels: {}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-8927b3dae0def497\",\n    \"kind\": \"issue_comment\",\n    \"label\": \"human_feedback_general\",\n    \"polarity\": \"neutral\",\n    \"url\": \"https://github.com/timogilvie/wavemill/pull/168#issuecomment-4187156989\",\n    \"text\": \"GitHub feedback: human_feedback_general\\nPolarity: neutral\\nKind: issue_comment\\nRepo: timogilvie/wavemill\\nAuthor: timogilvie (User)\\nURL: https://github.com/timogilvie/wavemill/pull/168#issuecomment-4187156989\\nTitle: \\nBody:\\nResolves HOK-1099\"\n  }\n]\nChanged files:\n[]\nLinked chain ids:\n[\"evidence-chain-comment_to_commit-4e40923a51f7bcf4\"]\nSource graph evidence:\nSource evidence repo graph summary\nRepo: timogilvie/wavemill\nGraph label: source_backed_multi_signal_graph\nNodes: 10\nEdges: 12\nNode types: {\"cooccurrence_profile\": 1, \"github_repo_summary\": 1, \"helicopter_repo_view\": 4, \"repo\": 1, \"source_artifact\": 2, \"source_bundle\": 1}\nEdge types: {\"artifact_needs_claim_verification\": 1, \"artifact_supports_verification\": 1, \"repo_has_cooccurrence_profile\": 1, \"repo_has_github_evidence_summary\": 1, \"repo_has_graphs_helicopter_view\": 2, \"repo_has_schemas_helicopter_view\": 2, \"repo_has_source_artifact\": 2, \"repo_has_source_bundle\": 1, \"source_bundle_uses_cooccurrence_profile\": 1}\nArtifact families: {\"docs\": 1, \"schemas\": 1}\nHelicopter views: {\"graphs\": 2, \"schemas\": 2}\nBundle labels: {\"source_backed_fake_real_verification_bundle\": 1}\nCo-occurrence labels: {\"fake_real_data_plus_verification_gap\": 1}", "source": "foundry_mined_dataset", "repo_url": "https://github.com/timogilvie/wavemill", "source_id": "comment-chain-pattern-assumption_checks-6a9bbaf63903f883", "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": "timogilvie/wavemill", "source_dataset": "comment_chain_patterns/assumption_checks", "training_usage": "negative_or_unresolved"}}}, {"ruleId": "foundry_assumption_check", "level": "warning", "message": {"text": "Foundry mined assumption checks: timogilvie/wavemill"}, "properties": {"repobilityId": 382814, "scanner": "foundry_dataset", "fingerprint": "fad19e57d2ca6f8d9a1963b4ad9ae642459eaf031d016777764f7ce6f27d0a2b", "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": "timogilvie/wavemill#167", "human_labels": ["human_feedback_general"], "issue_number": "167", "thread_label": "thread_needs_classification", "outcome_label": "ambiguous_needs_more_evidence", "source_backed": true, "max_confidence": 0.65, "repo_full_name": "timogilvie/wavemill", "training_usage": "weak_supervision", "confidence_tier": "weak_supervision", "source_chain_id": "evidence-chain-issue_chain-019d5ba2dc632430", "helicopter_views": {"graphs": 2, "schemas": 2}, "artifact_families": {"docs": 1, "schemas": 1}, "source_chain_kind": "issue_chain", "changed_file_count": 0, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {}, "linked_commit_count": 5, "helicopter_view_count": 4, "source_artifact_count": 2, "classification_reasons": ["source_graph_has_real_artifacts", "source_graph_has_verification_artifacts", "repo_has_isolated_helicopter_views", "link_quality_weak_supervision"], "linked_ci_commit_count": 0, "verification_artifact_count": 1, "design_schema_api_artifact_count": 1}, "text": "Comment chain pattern product: assumption_checks\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#167\nOutcome: ambiguous_needs_more_evidence\nThread label: thread_needs_classification\nSource graph label: source_backed_multi_signal_graph\nReasons: source_graph_has_real_artifacts, source_graph_has_verification_artifacts, repo_has_isolated_helicopter_views, link_quality_weak_supervision\nChain evidence:\nIssue/PR evidence chain: timogilvie/wavemill#167\nRepo: timogilvie/wavemill\nThread label: thread_needs_classification\nOutcome: ambiguous_needs_more_evidence\nComment count: 1\nLinked commit count: 5\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 0\nLabels: {'human_feedback_general': 1}\nPolarities: {'neutral': 1}\nChanged file labels: {}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-745a0e4fc8d98918\",\n    \"kind\": \"issue_comment\",\n    \"label\": \"human_feedback_general\",\n    \"polarity\": \"neutral\",\n    \"url\": \"https://github.com/timogilvie/wavemill/pull/167#issuecomment-4187145620\",\n    \"text\": \"GitHub feedback: human_feedback_general\\nPolarity: neutral\\nKind: issue_comment\\nRepo: timogilvie/wavemill\\nAuthor: timogilvie (User)\\nURL: https://github.com/timogilvie/wavemill/pull/167#issuecomment-4187145620\\nTitle: \\nBody:\\nChallenge comparison for `HOK-1076`\\n\\nRecommended winner: challenger (gpt-5.4)\\nOther PR: https://github.com/timogilvie/wavemill/pull/166\\n\\nThe challenger more completely addresses the task requirements: it adds debug logging throughout the router (REQ-F3), auto-aggregates eval data when missing (directly solving the 'insufficient data' false negative), and improves the shell script log message to show actual reasoning. The primary's worktree-path fix is architecturally clean but addresses only one narrow cause (worktree path resolution) without adding the required debug logging or tests.\"\n  }\n]\nChanged files:\n[]\nLinked chain ids:\n[\"evidence-chain-comment_to_commit-f33e33a7e9734bf3\"]\nSource graph evidence:\nSource evidence repo graph summary\nRepo: timogilvie/wavemill\nGraph label: source_backed_multi_signal_graph\nNodes: 10\nEdges: 12\nNode types: {\"cooccurrence_profile\": 1, \"github_repo_summary\": 1, \"helicopter_repo_view\": 4, \"repo\": 1, \"source_artifact\": 2, \"source_bundle\": 1}\nEdge types: {\"artifact_needs_claim_verification\": 1, \"artifact_supports_verification\": 1, \"repo_has_cooccurrence_profile\": 1, \"repo_has_github_evidence_summary\": 1, \"repo_has_graphs_helicopter_view\": 2, \"repo_has_schemas_helicopter_view\": 2, \"repo_has_source_artifact\": 2, \"repo_has_source_bundle\": 1, \"source_bundle_uses_cooccurrence_profile\": 1}\nArtifact families: {\"docs\": 1, \"schemas\": 1}\nHelicopter views: {\"graphs\": 2, \"schemas\": 2}\nBundle labels: {\"source_backed_fake_real_verification_bundle\": 1}\nCo-occurrence labels: {\"fake_real_data_plus_verification_gap\": 1}", "source": "foundry_mined_dataset", "repo_url": "https://github.com/timogilvie/wavemill", "source_id": "comment-chain-pattern-assumption_checks-9470792e0915bcd5", "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": "timogilvie/wavemill", "source_dataset": "comment_chain_patterns/assumption_checks", "training_usage": "weak_supervision"}}}, {"ruleId": "foundry_assumption_check", "level": "warning", "message": {"text": "Foundry mined assumption checks: timogilvie/wavemill"}, "properties": {"repobilityId": 382813, "scanner": "foundry_dataset", "fingerprint": "d22b2406bb5d1839358a85e8ee209e6ae326712e8d641e7902731fcc8f6a6f3d", "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": "timogilvie/wavemill#166", "human_labels": ["human_feedback_general"], "issue_number": "166", "thread_label": "thread_needs_classification", "outcome_label": "ambiguous_needs_more_evidence", "source_backed": true, "max_confidence": 0.65, "repo_full_name": "timogilvie/wavemill", "training_usage": "weak_supervision", "confidence_tier": "weak_supervision", "source_chain_id": "evidence-chain-issue_chain-59cde761b357e002", "helicopter_views": {"graphs": 2, "schemas": 2}, "artifact_families": {"docs": 1, "schemas": 1}, "source_chain_kind": "issue_chain", "changed_file_count": 0, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {}, "linked_commit_count": 5, "helicopter_view_count": 4, "source_artifact_count": 2, "classification_reasons": ["source_graph_has_real_artifacts", "source_graph_has_verification_artifacts", "repo_has_isolated_helicopter_views", "link_quality_weak_supervision"], "linked_ci_commit_count": 0, "verification_artifact_count": 1, "design_schema_api_artifact_count": 1}, "text": "Comment chain pattern product: assumption_checks\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#166\nOutcome: ambiguous_needs_more_evidence\nThread label: thread_needs_classification\nSource graph label: source_backed_multi_signal_graph\nReasons: source_graph_has_real_artifacts, source_graph_has_verification_artifacts, repo_has_isolated_helicopter_views, link_quality_weak_supervision\nChain evidence:\nIssue/PR evidence chain: timogilvie/wavemill#166\nRepo: timogilvie/wavemill\nThread label: thread_needs_classification\nOutcome: ambiguous_needs_more_evidence\nComment count: 2\nLinked commit count: 5\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 0\nLabels: {'human_feedback_general': 2}\nPolarities: {'neutral': 2}\nChanged file labels: {}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-6a3bea280b5c6e86\",\n    \"kind\": \"issue_comment\",\n    \"label\": \"human_feedback_general\",\n    \"polarity\": \"neutral\",\n    \"url\": \"https://github.com/timogilvie/wavemill/pull/166#issuecomment-4187145598\",\n    \"text\": \"GitHub feedback: human_feedback_general\\nPolarity: neutral\\nKind: issue_comment\\nRepo: timogilvie/wavemill\\nAuthor: timogilvie (User)\\nURL: https://github.com/timogilvie/wavemill/pull/166#issuecomment-4187145598\\nTitle: \\nBody:\\nChallenge comparison for `HOK-1076`\\n\\nRecommended winner: challenger (gpt-5.4)\\nOther PR: https://github.com/timogilvie/wavemill/pull/166\\n\\nThe challenger more completely addresses the task requirements: it adds debug logging throughout the router (REQ-F3), auto-aggregates eval data when missing (directly solving the 'insufficient data' false negative), and improves the shell script log message to show actual reasoning. The primary's worktree-path fix is architecturally clean but addresses only one narrow cause (worktree path resolution) without adding the required debug logging or tests.\"\n  },\n  {\n    \"id\": \"github-feedback-comment-313a12f9b93d4a23\",\n    \"kind\": \"issue_comment\",\n    \"label\": \"human_feedback_general\",\n    \"polarity\": \"neutral\",\n    \"url\": \"https://github.com/timogilvie/wavemill/pull/166#issuecomment-4187153993\",\n    \"text\": \"GitHub feedback: human_feedback_general\\nPolarity: neutral\\nKind: issue_comment\\nRepo: timogilvie/wavemill\\nAuthor: timogilvie (User)\\nURL: https://github.com/timogilvie/wavemill/pull/166#issuecomment-4187153993\\nTitle: \\nBody:\\nClosing in favor of #167 which includes these worktree path fixes via cherry-pick.\"\n  }\n]\nChanged files:\n[]\nLinked chain ids:\n[\"evidence-chain-comment_to_commit-ee49af186560948e\", \"evidence-chain-comment_to_commit-abb5fedb3bd9befd\"]\nSource graph evidence:\nSource evidence repo graph summary\nRepo: timogilvie/wavemill\nGraph label: source_backed_multi_signal_graph\nNodes: 10\nEdges: 12\nNode types: {\"cooccurrence_profile\": 1, \"github_repo_summary\": 1, \"helicopter_repo_view\": 4, \"repo\": 1, \"source_artifact\": 2, \"source_bundle\": 1}\nEdge types: {\"artifact_needs_claim_verification\": 1, \"artifact_supports_verification\": 1, \"repo_has_c\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/timogilvie/wavemill", "source_id": "comment-chain-pattern-assumption_checks-c0629156c8ba60e1", "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": "timogilvie/wavemill", "source_dataset": "comment_chain_patterns/assumption_checks", "training_usage": "weak_supervision"}}}, {"ruleId": "foundry_assumption_check", "level": "warning", "message": {"text": "Foundry mined assumption checks: timogilvie/wavemill"}, "properties": {"repobilityId": 382812, "scanner": "foundry_dataset", "fingerprint": "abb4f6f2a1fd053f920beb52f60c6121dfb8b9e33034b497d2a0b5bb2c26f9a8", "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": "timogilvie/wavemill#165", "human_labels": ["data_schema_persistence"], "issue_number": "165", "thread_label": "thread_has_human_issue_and_fix_context", "outcome_label": "ambiguous_needs_more_evidence", "source_backed": true, "max_confidence": 0.65, "repo_full_name": "timogilvie/wavemill", "training_usage": "weak_supervision", "confidence_tier": "weak_supervision", "source_chain_id": "evidence-chain-issue_chain-eb39de8fd38ef4bf", "helicopter_views": {"graphs": 2, "schemas": 2}, "artifact_families": {"docs": 1, "schemas": 1}, "source_chain_kind": "issue_chain", "changed_file_count": 0, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {}, "linked_commit_count": 6, "helicopter_view_count": 4, "source_artifact_count": 2, "classification_reasons": ["source_graph_has_real_artifacts", "source_graph_has_verification_artifacts", "repo_has_isolated_helicopter_views", "link_quality_weak_supervision", "high_risk_human_feedback_label"], "linked_ci_commit_count": 0, "verification_artifact_count": 1, "design_schema_api_artifact_count": 1}, "text": "Comment chain pattern product: assumption_checks\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#165\nOutcome: ambiguous_needs_more_evidence\nThread label: thread_has_human_issue_and_fix_context\nSource graph label: source_backed_multi_signal_graph\nReasons: source_graph_has_real_artifacts, source_graph_has_verification_artifacts, repo_has_isolated_helicopter_views, link_quality_weak_supervision, high_risk_human_feedback_label\nChain evidence:\nIssue/PR evidence chain: timogilvie/wavemill#165\nRepo: timogilvie/wavemill\nThread label: thread_has_human_issue_and_fix_context\nOutcome: ambiguous_needs_more_evidence\nComment count: 2\nLinked commit count: 6\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 0\nLabels: {'data_schema_persistence': 2}\nPolarities: {'bad': 2}\nChanged file labels: {}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-8807c31e52150f9e\",\n    \"kind\": \"pull_request_body\",\n    \"label\": \"data_schema_persistence\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/timogilvie/wavemill/pull/165\",\n    \"text\": \"GitHub feedback: data_schema_persistence\\nPolarity: bad\\nKind: pull_request_body\\nRepo: timogilvie/wavemill\\nAuthor: timogilvie (User)\\nURL: https://github.com/timogilvie/wavemill/pull/165\\nTitle: fix: Use repo-specific tmux session names by default (HOK-1075)\\nBody:\\n## Summary\\n\\n- Changed default tmux session name from hardcoded \\\"wavemill\\\" to empty string\\n- System now derives unique session names per repository\\n- Prevents tmux session conflicts when running mill in multiple repos simultaneously\\n- Cleaned up obsolete window recreation logic\\n\\n## Changes\\n\\n- `shared/lib/config-sync.ts`: Changed default `mill.session` from \\\"wavemill\\\" to \\\"\\\"\\n- `wavemill-config.schema.json`: Updated schema default to match\\n- `shared/lib/wavemill-mill.sh`: Removed `_ensure_window_exists()` function and its calls (no longer needed with repo-specific sessions)\\n\\n## Test plan\\n\\n- Verified that mill mode now uses repo-specific session names\\n- Tested parallel mill execution in different repos without session conflicts\\n- Confirmed existing functionality remains intact\\n\\n## Self-review\\n\\n- Review verdict: ready\\n- Iterations: 1\\n- Findings: None\"\n  },\n  {\n    \"id\": \"github-feedback-comment-3e0ba611b9b336e9\",\n    \"kind\": \"issue_comment\",\n    \"label\": \"data_schema_persistence\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/timogilvie/wavemill/pull/165#issuecomment-4187134884\",\n    \"text\": \"GitHub feedback: data_schema_persistence\\nPolarity: bad\\nKind: issue_comment\\nRepo: timogilvie/wavemill\\nAuthor: timogilvie (User)\\nURL: https://github.com/timogilvie/wavemill/pull/165#issuecomment-4187134884\\nTitle: \\nBody:\\nChallenge comparison for `HOK-1075`\\n\\nRecommended winner: primary (claude-sonnet-4-5-20250929)\\nOther PR: https://github.com/timogilvie/wavemill/pull/164\\n\\nBoth PRs change the session default from 'wavemill' to '' in config-sync.ts and the schema. The primary is surgically scop\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/timogilvie/wavemill", "source_id": "comment-chain-pattern-assumption_checks-cfe924c197084598", "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": "timogilvie/wavemill", "source_dataset": "comment_chain_patterns/assumption_checks", "training_usage": "weak_supervision"}}}, {"ruleId": "foundry_assumption_check", "level": "warning", "message": {"text": "Foundry mined assumption checks: timogilvie/wavemill"}, "properties": {"repobilityId": 382811, "scanner": "foundry_dataset", "fingerprint": "446ed09395d03d4ff7ff2a908b900912a21b355e75dea4602e0fb49979025957", "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": "timogilvie/wavemill#164", "human_labels": ["data_schema_persistence", "human_feedback_general"], "issue_number": "164", "thread_label": "thread_has_human_issue_and_fix_context", "outcome_label": "ambiguous_needs_more_evidence", "source_backed": true, "max_confidence": 0.65, "repo_full_name": "timogilvie/wavemill", "training_usage": "weak_supervision", "confidence_tier": "weak_supervision", "source_chain_id": "evidence-chain-issue_chain-a1d991c07f70b1f3", "helicopter_views": {"graphs": 2, "schemas": 2}, "artifact_families": {"docs": 1, "schemas": 1}, "source_chain_kind": "issue_chain", "changed_file_count": 0, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {}, "linked_commit_count": 9, "helicopter_view_count": 4, "source_artifact_count": 2, "classification_reasons": ["source_graph_has_real_artifacts", "source_graph_has_verification_artifacts", "repo_has_isolated_helicopter_views", "link_quality_weak_supervision", "high_risk_human_feedback_label"], "linked_ci_commit_count": 0, "verification_artifact_count": 1, "design_schema_api_artifact_count": 1}, "text": "Comment chain pattern product: assumption_checks\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#164\nOutcome: ambiguous_needs_more_evidence\nThread label: thread_has_human_issue_and_fix_context\nSource graph label: source_backed_multi_signal_graph\nReasons: source_graph_has_real_artifacts, source_graph_has_verification_artifacts, repo_has_isolated_helicopter_views, link_quality_weak_supervision, high_risk_human_feedback_label\nChain evidence:\nIssue/PR evidence chain: timogilvie/wavemill#164\nRepo: timogilvie/wavemill\nThread label: thread_has_human_issue_and_fix_context\nOutcome: ambiguous_needs_more_evidence\nComment count: 4\nLinked commit count: 9\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 0\nLabels: {'data_schema_persistence': 2, 'human_feedback_general': 2}\nPolarities: {'bad': 2, 'neutral': 2}\nChanged file labels: {}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-0356add7968c7229\",\n    \"kind\": \"pull_request_body\",\n    \"label\": \"data_schema_persistence\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/timogilvie/wavemill/pull/164\",\n    \"text\": \"GitHub feedback: data_schema_persistence\\nPolarity: bad\\nKind: pull_request_body\\nRepo: timogilvie/wavemill\\nAuthor: timogilvie (User)\\nURL: https://github.com/timogilvie/wavemill/pull/164\\nTitle: fix: Use repo-specific session names by default\\nBody:\\n## Summary\\n\\n- Changed default tmux session name from hardcoded \\\"wavemill\\\" to empty string\\n- Empty string now auto-generates repo-specific session names (e.g., \\\"wavemill-blue-horseshoe\\\")\\n- Prevents tmux session conflicts when running mill mode in multiple repositories\\n- Removed unused `_ensure_window_exists()` helper function\\n\\n## Changes\\n\\n**Config files:**\\n- `.wavemill-config.json` - Changed default session from \\\"wavemill\\\" to \\\"\\\"\\n- `wavemill-config.schema.json` - Updated schema default and description\\n- `shared/lib/config-sync.ts` - Updated canonical config template\\n\\n**Code cleanup:**\\n- `shared/lib/wavemill-mill.sh` - Removed unused `_ensure_window_exists()` function and its call sites\\n\\n## Test plan\\n\\n- Verified the error message from HOK-1075 was caused by hardcoded \\\"wavemill\\\" session name\\n- Tested that empty string triggers auto-generation of repo-specific session names\\n- Confirmed schema validation accepts empty string as valid value\\n\\n## Sel\"\n  },\n  {\n    \"id\": \"github-feedback-comment-12fb827f9ce2f79e\",\n    \"kind\": \"issue_comment\",\n    \"label\": \"human_feedback_general\",\n    \"polarity\": \"neutral\",\n    \"url\": \"https://github.com/timogilvie/wavemill/pull/164#issuecomment-4185482606\",\n    \"text\": \"GitHub feedback: human_feedback_general\\nPolarity: neutral\\nKind: issue_comment\\nRepo: timogilvie/wavemill\\nAuthor: timogilvie (User)\\nURL: https://github.com/timogilvie/wavemill/pull/164#issuecomment-4185482606\\nTitle: \\nBody:\\nFixes: https://linear.app/hokusai/issue/HOK-1075/separate-repos-should-use-distinct-session-names\"\n  },\n  {\n    \"id\": \"github-feedback-comment-e\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/timogilvie/wavemill", "source_id": "comment-chain-pattern-assumption_checks-3300c3d41136e2ec", "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": "timogilvie/wavemill", "source_dataset": "comment_chain_patterns/assumption_checks", "training_usage": "weak_supervision"}}}, {"ruleId": "foundry_assumption_check", "level": "warning", "message": {"text": "Foundry mined assumption checks: timogilvie/wavemill"}, "properties": {"repobilityId": 382810, "scanner": "foundry_dataset", "fingerprint": "816b779ff3974cbfbf3a22f2f60f958233bee56389b73bf97beac0372a555054", "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": "timogilvie/wavemill#158", "human_labels": ["human_feedback_general"], "issue_number": "158", "thread_label": "thread_needs_classification", "outcome_label": "ambiguous_needs_more_evidence", "source_backed": true, "max_confidence": 0.58, "repo_full_name": "timogilvie/wavemill", "training_usage": "weak_supervision", "confidence_tier": "weak_supervision", "source_chain_id": "evidence-chain-issue_chain-914056c2788320e1", "helicopter_views": {"graphs": 2, "schemas": 2}, "artifact_families": {"docs": 1, "schemas": 1}, "source_chain_kind": "issue_chain", "changed_file_count": 0, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {}, "linked_commit_count": 1, "helicopter_view_count": 4, "source_artifact_count": 2, "classification_reasons": ["source_graph_has_real_artifacts", "source_graph_has_verification_artifacts", "repo_has_isolated_helicopter_views", "link_quality_weak_supervision"], "linked_ci_commit_count": 0, "verification_artifact_count": 1, "design_schema_api_artifact_count": 1}, "text": "Comment chain pattern product: assumption_checks\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#158\nOutcome: ambiguous_needs_more_evidence\nThread label: thread_needs_classification\nSource graph label: source_backed_multi_signal_graph\nReasons: source_graph_has_real_artifacts, source_graph_has_verification_artifacts, repo_has_isolated_helicopter_views, link_quality_weak_supervision\nChain evidence:\nIssue/PR evidence chain: timogilvie/wavemill#158\nRepo: timogilvie/wavemill\nThread label: thread_needs_classification\nOutcome: ambiguous_needs_more_evidence\nComment count: 2\nLinked commit count: 1\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 0\nLabels: {'human_feedback_general': 2}\nPolarities: {'neutral': 2}\nChanged file labels: {}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-fdca5b69db5c4d73\",\n    \"kind\": \"issue_comment\",\n    \"label\": \"human_feedback_general\",\n    \"polarity\": \"neutral\",\n    \"url\": \"https://github.com/timogilvie/wavemill/pull/158#issuecomment-4158061534\",\n    \"text\": \"GitHub feedback: human_feedback_general\\nPolarity: neutral\\nKind: issue_comment\\nRepo: timogilvie/wavemill\\nAuthor: timogilvie (User)\\nURL: https://github.com/timogilvie/wavemill/pull/158#issuecomment-4158061534\\nTitle: \\nBody:\\nChallenge comparison for `HOK-1044`\\n\\nRecommended winner: challenger (gpt-5.3-codex)\\nOther PR: https://github.com/timogilvie/wavemill/pull/158\\n\\nChallenger delivers a more complete end-to-end implementation: it updates compare-prs.ts to accept and persist routing metadata, updates maybe_run_challenge_comparison() to pass routing fields through, and adds error handling with fallback in resolve-challenge-task.ts. Primary has better test infrastructure (injectable routeFn) but misses the compare-prs.ts and comparison flow updates needed for routing metadata to actually reach ChallengeComparison records.\"\n  },\n  {\n    \"id\": \"github-feedback-comment-926cf20c8eccb707\",\n    \"kind\": \"issue_comment\",\n    \"label\": \"human_feedback_general\",\n    \"polarity\": \"neutral\",\n    \"url\": \"https://github.com/timogilvie/wavemill/pull/158#issuecomment-4158133620\",\n    \"text\": \"GitHub feedback: human_feedback_general\\nPolarity: neutral\\nKind: issue_comment\\nRepo: timogilvie/wavemill\\nAuthor: timogilvie (User)\\nURL: https://github.com/timogilvie/wavemill/pull/158#issuecomment-4158133620\\nTitle: \\nBody:\\nClosing in favor of #157 (challenge mode winner). Injectable routeFn pattern cherry-picked into #157.\"\n  }\n]\nChanged files:\n[]\nLinked chain ids:\n[\"evidence-chain-comment_to_commit-63fd29e63e6a6344\", \"evidence-chain-comment_to_commit-2c99384513da9fb4\"]\nSource graph evidence:\nSource evidence repo graph summary\nRepo: timogilvie/wavemill\nGraph label: source_backed_multi_signal_graph\nNodes: 10\nEdges: 12\nNode types: {\"cooccurrence_profile\": 1, \"github_repo_summary\": 1, \"helicopter_repo_view\": 4, \"repo\": 1, \"source_artifact\": 2, \"source_bundle\": 1}\nEdge types: {\"artifact_needs_claim_verification\": 1, \"artifact_suppor\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/timogilvie/wavemill", "source_id": "comment-chain-pattern-assumption_checks-c41ee55807c548c1", "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": "timogilvie/wavemill", "source_dataset": "comment_chain_patterns/assumption_checks", "training_usage": "weak_supervision"}}}, {"ruleId": "foundry_assumption_check", "level": "warning", "message": {"text": "Foundry mined assumption checks: timogilvie/wavemill"}, "properties": {"repobilityId": 382809, "scanner": "foundry_dataset", "fingerprint": "18bf32228e28973e15e4aec694dba80347cdee8145b2fe3468d9b29ba1070060", "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": "timogilvie/wavemill#157", "human_labels": ["human_feedback_general"], "issue_number": "157", "thread_label": "thread_needs_classification", "outcome_label": "ambiguous_needs_more_evidence", "source_backed": true, "max_confidence": 0.58, "repo_full_name": "timogilvie/wavemill", "training_usage": "weak_supervision", "confidence_tier": "weak_supervision", "source_chain_id": "evidence-chain-issue_chain-6f3fe2b53355a029", "helicopter_views": {"graphs": 2, "schemas": 2}, "artifact_families": {"docs": 1, "schemas": 1}, "source_chain_kind": "issue_chain", "changed_file_count": 0, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {}, "linked_commit_count": 1, "helicopter_view_count": 4, "source_artifact_count": 2, "classification_reasons": ["source_graph_has_real_artifacts", "source_graph_has_verification_artifacts", "repo_has_isolated_helicopter_views", "link_quality_weak_supervision"], "linked_ci_commit_count": 0, "verification_artifact_count": 1, "design_schema_api_artifact_count": 1}, "text": "Comment chain pattern product: assumption_checks\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#157\nOutcome: ambiguous_needs_more_evidence\nThread label: thread_needs_classification\nSource graph label: source_backed_multi_signal_graph\nReasons: source_graph_has_real_artifacts, source_graph_has_verification_artifacts, repo_has_isolated_helicopter_views, link_quality_weak_supervision\nChain evidence:\nIssue/PR evidence chain: timogilvie/wavemill#157\nRepo: timogilvie/wavemill\nThread label: thread_needs_classification\nOutcome: ambiguous_needs_more_evidence\nComment count: 1\nLinked commit count: 1\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 0\nLabels: {'human_feedback_general': 1}\nPolarities: {'neutral': 1}\nChanged file labels: {}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-81a74a1980b9c3dc\",\n    \"kind\": \"issue_comment\",\n    \"label\": \"human_feedback_general\",\n    \"polarity\": \"neutral\",\n    \"url\": \"https://github.com/timogilvie/wavemill/pull/157#issuecomment-4158061610\",\n    \"text\": \"GitHub feedback: human_feedback_general\\nPolarity: neutral\\nKind: issue_comment\\nRepo: timogilvie/wavemill\\nAuthor: timogilvie (User)\\nURL: https://github.com/timogilvie/wavemill/pull/157#issuecomment-4158061610\\nTitle: \\nBody:\\nChallenge comparison for `HOK-1044`\\n\\nRecommended winner: challenger (gpt-5.3-codex)\\nOther PR: https://github.com/timogilvie/wavemill/pull/158\\n\\nChallenger delivers a more complete end-to-end implementation: it updates compare-prs.ts to accept and persist routing metadata, updates maybe_run_challenge_comparison() to pass routing fields through, and adds error handling with fallback in resolve-challenge-task.ts. Primary has better test infrastructure (injectable routeFn) but misses the compare-prs.ts and comparison flow updates needed for routing metadata to actually reach ChallengeComparison records.\"\n  }\n]\nChanged files:\n[]\nLinked chain ids:\n[\"evidence-chain-comment_to_commit-e82ce94d123363c7\"]\nSource graph evidence:\nSource evidence repo graph summary\nRepo: timogilvie/wavemill\nGraph label: source_backed_multi_signal_graph\nNodes: 10\nEdges: 12\nNode types: {\"cooccurrence_profile\": 1, \"github_repo_summary\": 1, \"helicopter_repo_view\": 4, \"repo\": 1, \"source_artifact\": 2, \"source_bundle\": 1}\nEdge types: {\"artifact_needs_claim_verification\": 1, \"artifact_supports_verification\": 1, \"repo_has_cooccurrence_profile\": 1, \"repo_has_github_evidence_summary\": 1, \"repo_has_graphs_helicopter_view\": 2, \"repo_has_schemas_helicopter_view\": 2, \"repo_has_source_artifact\": 2, \"repo_has_source_bundle\": 1, \"source_bundle_uses_cooccurrence_profile\": 1}\nArtifact families: {\"docs\": 1, \"schemas\": 1}\nHelicopter views: {\"graphs\": 2, \"schemas\": 2}\nBundle labels: {\"source_backed_fake_real_verification_bundle\": 1}\nCo-occurrence labels: {\"fake_real_data_plus_verification_gap\": 1}", "source": "foundry_mined_dataset", "repo_url": "https://github.com/timogilvie/wavemill", "source_id": "comment-chain-pattern-assumption_checks-f3d5c07c0b6eadd0", "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": "timogilvie/wavemill", "source_dataset": "comment_chain_patterns/assumption_checks", "training_usage": "weak_supervision"}}}, {"ruleId": "foundry_assumption_check", "level": "warning", "message": {"text": "Foundry mined assumption checks: timogilvie/wavemill"}, "properties": {"repobilityId": 382808, "scanner": "foundry_dataset", "fingerprint": "78decbc313522c4d05efc12c1846a360f3edc4cd3ab6b236592a7416338fb109", "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": "timogilvie/wavemill#154", "human_labels": ["human_feedback_general"], "issue_number": "154", "thread_label": "thread_needs_classification", "outcome_label": "ambiguous_needs_more_evidence", "source_backed": true, "max_confidence": 0.0, "repo_full_name": "timogilvie/wavemill", "training_usage": "negative_or_unresolved", "confidence_tier": "unresolved", "source_chain_id": "evidence-chain-issue_chain-ed12cad6af5b11b0", "helicopter_views": {"graphs": 2, "schemas": 2}, "artifact_families": {"docs": 1, "schemas": 1}, "source_chain_kind": "issue_chain", "changed_file_count": 0, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {}, "linked_commit_count": 0, "helicopter_view_count": 4, "source_artifact_count": 2, "classification_reasons": ["source_graph_has_real_artifacts", "source_graph_has_verification_artifacts", "repo_has_isolated_helicopter_views", "link_quality_unresolved"], "linked_ci_commit_count": 0, "verification_artifact_count": 1, "design_schema_api_artifact_count": 1}, "text": "Comment chain pattern product: assumption_checks\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#154\nOutcome: ambiguous_needs_more_evidence\nThread label: thread_needs_classification\nSource graph label: source_backed_multi_signal_graph\nReasons: source_graph_has_real_artifacts, source_graph_has_verification_artifacts, repo_has_isolated_helicopter_views, link_quality_unresolved\nChain evidence:\nIssue/PR evidence chain: timogilvie/wavemill#154\nRepo: timogilvie/wavemill\nThread label: thread_needs_classification\nOutcome: ambiguous_needs_more_evidence\nComment count: 1\nLinked commit count: 0\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 0\nLabels: {'human_feedback_general': 1}\nPolarities: {'neutral': 1}\nChanged file labels: {}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-ff4f552e96654c95\",\n    \"kind\": \"issue_comment\",\n    \"label\": \"human_feedback_general\",\n    \"polarity\": \"neutral\",\n    \"url\": \"https://github.com/timogilvie/wavemill/pull/154#issuecomment-4090217655\",\n    \"text\": \"GitHub feedback: human_feedback_general\\nPolarity: neutral\\nKind: issue_comment\\nRepo: timogilvie/wavemill\\nAuthor: timogilvie (User)\\nURL: https://github.com/timogilvie/wavemill/pull/154#issuecomment-4090217655\\nTitle: \\nBody:\\nFixes HOK-1012\"\n  }\n]\nChanged files:\n[]\nLinked chain ids:\n[\"evidence-chain-comment_to_commit-86d7045b6bc73722\"]\nSource graph evidence:\nSource evidence repo graph summary\nRepo: timogilvie/wavemill\nGraph label: source_backed_multi_signal_graph\nNodes: 10\nEdges: 12\nNode types: {\"cooccurrence_profile\": 1, \"github_repo_summary\": 1, \"helicopter_repo_view\": 4, \"repo\": 1, \"source_artifact\": 2, \"source_bundle\": 1}\nEdge types: {\"artifact_needs_claim_verification\": 1, \"artifact_supports_verification\": 1, \"repo_has_cooccurrence_profile\": 1, \"repo_has_github_evidence_summary\": 1, \"repo_has_graphs_helicopter_view\": 2, \"repo_has_schemas_helicopter_view\": 2, \"repo_has_source_artifact\": 2, \"repo_has_source_bundle\": 1, \"source_bundle_uses_cooccurrence_profile\": 1}\nArtifact families: {\"docs\": 1, \"schemas\": 1}\nHelicopter views: {\"graphs\": 2, \"schemas\": 2}\nBundle labels: {\"source_backed_fake_real_verification_bundle\": 1}\nCo-occurrence labels: {\"fake_real_data_plus_verification_gap\": 1}", "source": "foundry_mined_dataset", "repo_url": "https://github.com/timogilvie/wavemill", "source_id": "comment-chain-pattern-assumption_checks-1a978e91ae62a587", "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": "timogilvie/wavemill", "source_dataset": "comment_chain_patterns/assumption_checks", "training_usage": "negative_or_unresolved"}}}, {"ruleId": "foundry_assumption_check", "level": "warning", "message": {"text": "Foundry mined assumption checks: timogilvie/wavemill"}, "properties": {"repobilityId": 382807, "scanner": "foundry_dataset", "fingerprint": "4c5012da0710eb92b1765d983020433e5975b249783f2db15dfd7260cab5ef6d", "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": "timogilvie/wavemill#152", "human_labels": ["test_ci_gap"], "issue_number": "152", "thread_label": "thread_has_human_issue_and_fix_context", "outcome_label": "ambiguous_needs_more_evidence", "source_backed": true, "max_confidence": 0.58, "repo_full_name": "timogilvie/wavemill", "training_usage": "weak_supervision", "confidence_tier": "weak_supervision", "source_chain_id": "evidence-chain-issue_chain-d0bf1c23bb7120c8", "helicopter_views": {"graphs": 2, "schemas": 2}, "artifact_families": {"docs": 1, "schemas": 1}, "source_chain_kind": "issue_chain", "changed_file_count": 0, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {}, "linked_commit_count": 5, "helicopter_view_count": 4, "source_artifact_count": 2, "classification_reasons": ["source_graph_has_real_artifacts", "source_graph_has_verification_artifacts", "repo_has_isolated_helicopter_views", "link_quality_weak_supervision", "high_risk_human_feedback_label"], "linked_ci_commit_count": 0, "verification_artifact_count": 1, "design_schema_api_artifact_count": 1}, "text": "Comment chain pattern product: assumption_checks\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#152\nOutcome: ambiguous_needs_more_evidence\nThread label: thread_has_human_issue_and_fix_context\nSource graph label: source_backed_multi_signal_graph\nReasons: source_graph_has_real_artifacts, source_graph_has_verification_artifacts, repo_has_isolated_helicopter_views, link_quality_weak_supervision, high_risk_human_feedback_label\nChain evidence:\nIssue/PR evidence chain: timogilvie/wavemill#152\nRepo: timogilvie/wavemill\nThread label: thread_has_human_issue_and_fix_context\nOutcome: ambiguous_needs_more_evidence\nComment count: 1\nLinked commit count: 5\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 0\nLabels: {'test_ci_gap': 1}\nPolarities: {'bad': 1}\nChanged file labels: {}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-23d6319ee0c2eceb\",\n    \"kind\": \"pull_request_body\",\n    \"label\": \"test_ci_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/timogilvie/wavemill/pull/152\",\n    \"text\": \"GitHub feedback: test_ci_gap\\nPolarity: bad\\nKind: pull_request_body\\nRepo: timogilvie/wavemill\\nAuthor: timogilvie (User)\\nURL: https://github.com/timogilvie/wavemill/pull/152\\nTitle: HOK-1002: Review and expand route data output combined with eval\\nBody:\\n## Summary\\n\\n- Implemented auto-loading of routing decisions from `.routing-complete` files into eval records\\n- Added `fetchRoutingDecision()` and `convertToRoutingDecision()` to read and transform routing data\\n- Enhanced eval context gathering to include stage artifacts (task packet, plan, self-review summary)\\n- Added prompt version registry for GEPA training attribution\\n- Added comprehensive test coverage for routing decision loading and conversion\\n\\n## Changes\\n\\n**Core routing decision loading (per plan):**\\n- `shared/lib/eval-context-gatherer.ts`: Added `fetchRoutingDecision()` and `convertToRoutingDecision()` functions\\n- `shared/lib/eval-orchestrator.ts`: Auto-load routing decision when not explicitly provided\\n- `shared/lib/eval-context-gatherer.test.ts`: Added 152 tests including routing function coverage\\n\\n**Additional enhancements (beyond plan scope):**\\n- `shared/lib/prompt-registry.ts`: New prompt version registry for tracking templ\"\n  }\n]\nChanged files:\n[]\nLinked chain ids:\n[\"evidence-chain-comment_to_commit-301e1ab60d290ad7\"]\nSource graph evidence:\nSource evidence repo graph summary\nRepo: timogilvie/wavemill\nGraph label: source_backed_multi_signal_graph\nNodes: 10\nEdges: 12\nNode types: {\"cooccurrence_profile\": 1, \"github_repo_summary\": 1, \"helicopter_repo_view\": 4, \"repo\": 1, \"source_artifact\": 2, \"source_bundle\": 1}\nEdge types: {\"artifact_needs_claim_verification\": 1, \"artifact_supports_verification\": 1, \"repo_has_cooccurrence_profile\": 1, \"repo_has_github_evidence_summary\": 1, \"repo_has_graphs_helicopter_view\": 2, \"repo_has_schemas_helicopter_view\": 2, \"repo_has_source_artifact\": 2, \"repo_has_source_bundle\": 1, \"source_bundle_uses_\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/timogilvie/wavemill", "source_id": "comment-chain-pattern-assumption_checks-b2711f003ce71368", "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": "timogilvie/wavemill", "source_dataset": "comment_chain_patterns/assumption_checks", "training_usage": "weak_supervision"}}}, {"ruleId": "foundry_assumption_check", "level": "warning", "message": {"text": "Foundry mined assumption checks: timogilvie/wavemill"}, "properties": {"repobilityId": 382806, "scanner": "foundry_dataset", "fingerprint": "cb0a7c08bbbef2001d82c88bbbd42063b578303e296c6f4270e66de56db82f69", "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": "timogilvie/wavemill#151", "human_labels": ["human_feedback_general"], "issue_number": "151", "thread_label": "thread_needs_classification", "outcome_label": "ambiguous_needs_more_evidence", "source_backed": true, "max_confidence": 0.0, "repo_full_name": "timogilvie/wavemill", "training_usage": "negative_or_unresolved", "confidence_tier": "unresolved", "source_chain_id": "evidence-chain-issue_chain-be83c74add4809d1", "helicopter_views": {"graphs": 2, "schemas": 2}, "artifact_families": {"docs": 1, "schemas": 1}, "source_chain_kind": "issue_chain", "changed_file_count": 0, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {}, "linked_commit_count": 0, "helicopter_view_count": 4, "source_artifact_count": 2, "classification_reasons": ["source_graph_has_real_artifacts", "source_graph_has_verification_artifacts", "repo_has_isolated_helicopter_views", "link_quality_unresolved"], "linked_ci_commit_count": 0, "verification_artifact_count": 1, "design_schema_api_artifact_count": 1}, "text": "Comment chain pattern product: assumption_checks\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#151\nOutcome: ambiguous_needs_more_evidence\nThread label: thread_needs_classification\nSource graph label: source_backed_multi_signal_graph\nReasons: source_graph_has_real_artifacts, source_graph_has_verification_artifacts, repo_has_isolated_helicopter_views, link_quality_unresolved\nChain evidence:\nIssue/PR evidence chain: timogilvie/wavemill#151\nRepo: timogilvie/wavemill\nThread label: thread_needs_classification\nOutcome: ambiguous_needs_more_evidence\nComment count: 1\nLinked commit count: 0\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 0\nLabels: {'human_feedback_general': 1}\nPolarities: {'neutral': 1}\nChanged file labels: {}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-888fcc9a32fdc838\",\n    \"kind\": \"issue_comment\",\n    \"label\": \"human_feedback_general\",\n    \"polarity\": \"neutral\",\n    \"url\": \"https://github.com/timogilvie/wavemill/pull/151#issuecomment-4086033381\",\n    \"text\": \"GitHub feedback: human_feedback_general\\nPolarity: neutral\\nKind: issue_comment\\nRepo: timogilvie/wavemill\\nAuthor: timogilvie (User)\\nURL: https://github.com/timogilvie/wavemill/pull/151#issuecomment-4086033381\\nTitle: \\nBody:\\nResolves HOK-1004\"\n  }\n]\nChanged files:\n[]\nLinked chain ids:\n[\"evidence-chain-comment_to_commit-c819e380026d0939\"]\nSource graph evidence:\nSource evidence repo graph summary\nRepo: timogilvie/wavemill\nGraph label: source_backed_multi_signal_graph\nNodes: 10\nEdges: 12\nNode types: {\"cooccurrence_profile\": 1, \"github_repo_summary\": 1, \"helicopter_repo_view\": 4, \"repo\": 1, \"source_artifact\": 2, \"source_bundle\": 1}\nEdge types: {\"artifact_needs_claim_verification\": 1, \"artifact_supports_verification\": 1, \"repo_has_cooccurrence_profile\": 1, \"repo_has_github_evidence_summary\": 1, \"repo_has_graphs_helicopter_view\": 2, \"repo_has_schemas_helicopter_view\": 2, \"repo_has_source_artifact\": 2, \"repo_has_source_bundle\": 1, \"source_bundle_uses_cooccurrence_profile\": 1}\nArtifact families: {\"docs\": 1, \"schemas\": 1}\nHelicopter views: {\"graphs\": 2, \"schemas\": 2}\nBundle labels: {\"source_backed_fake_real_verification_bundle\": 1}\nCo-occurrence labels: {\"fake_real_data_plus_verification_gap\": 1}", "source": "foundry_mined_dataset", "repo_url": "https://github.com/timogilvie/wavemill", "source_id": "comment-chain-pattern-assumption_checks-4082554b4d207804", "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": "timogilvie/wavemill", "source_dataset": "comment_chain_patterns/assumption_checks", "training_usage": "negative_or_unresolved"}}}, {"ruleId": "foundry_assumption_check", "level": "warning", "message": {"text": "Foundry mined assumption checks: timogilvie/wavemill"}, "properties": {"repobilityId": 382805, "scanner": "foundry_dataset", "fingerprint": "d0c04609f919269c43949afd6b0b0b6a7d82e626fd3b51de4a27fb7d392d7d84", "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": "timogilvie/wavemill#142", "human_labels": ["human_feedback_general"], "issue_number": "142", "thread_label": "thread_needs_classification", "outcome_label": "ambiguous_needs_more_evidence", "source_backed": true, "max_confidence": 0.0, "repo_full_name": "timogilvie/wavemill", "training_usage": "negative_or_unresolved", "confidence_tier": "unresolved", "source_chain_id": "evidence-chain-issue_chain-ee97b6ac09c25a19", "helicopter_views": {"graphs": 2, "schemas": 2}, "artifact_families": {"docs": 1, "schemas": 1}, "source_chain_kind": "issue_chain", "changed_file_count": 0, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {}, "linked_commit_count": 0, "helicopter_view_count": 4, "source_artifact_count": 2, "classification_reasons": ["source_graph_has_real_artifacts", "source_graph_has_verification_artifacts", "repo_has_isolated_helicopter_views", "link_quality_unresolved"], "linked_ci_commit_count": 0, "verification_artifact_count": 1, "design_schema_api_artifact_count": 1}, "text": "Comment chain pattern product: assumption_checks\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#142\nOutcome: ambiguous_needs_more_evidence\nThread label: thread_needs_classification\nSource graph label: source_backed_multi_signal_graph\nReasons: source_graph_has_real_artifacts, source_graph_has_verification_artifacts, repo_has_isolated_helicopter_views, link_quality_unresolved\nChain evidence:\nIssue/PR evidence chain: timogilvie/wavemill#142\nRepo: timogilvie/wavemill\nThread label: thread_needs_classification\nOutcome: ambiguous_needs_more_evidence\nComment count: 1\nLinked commit count: 0\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 0\nLabels: {'human_feedback_general': 1}\nPolarities: {'neutral': 1}\nChanged file labels: {}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-6908ab946202cbc6\",\n    \"kind\": \"issue_comment\",\n    \"label\": \"human_feedback_general\",\n    \"polarity\": \"neutral\",\n    \"url\": \"https://github.com/timogilvie/wavemill/pull/142#issuecomment-4051002753\",\n    \"text\": \"GitHub feedback: human_feedback_general\\nPolarity: neutral\\nKind: issue_comment\\nRepo: timogilvie/wavemill\\nAuthor: timogilvie (User)\\nURL: https://github.com/timogilvie/wavemill/pull/142#issuecomment-4051002753\\nTitle: \\nBody:\\nImplements HOK-997\"\n  }\n]\nChanged files:\n[]\nLinked chain ids:\n[\"evidence-chain-comment_to_commit-97bfcbe2759e538a\"]\nSource graph evidence:\nSource evidence repo graph summary\nRepo: timogilvie/wavemill\nGraph label: source_backed_multi_signal_graph\nNodes: 10\nEdges: 12\nNode types: {\"cooccurrence_profile\": 1, \"github_repo_summary\": 1, \"helicopter_repo_view\": 4, \"repo\": 1, \"source_artifact\": 2, \"source_bundle\": 1}\nEdge types: {\"artifact_needs_claim_verification\": 1, \"artifact_supports_verification\": 1, \"repo_has_cooccurrence_profile\": 1, \"repo_has_github_evidence_summary\": 1, \"repo_has_graphs_helicopter_view\": 2, \"repo_has_schemas_helicopter_view\": 2, \"repo_has_source_artifact\": 2, \"repo_has_source_bundle\": 1, \"source_bundle_uses_cooccurrence_profile\": 1}\nArtifact families: {\"docs\": 1, \"schemas\": 1}\nHelicopter views: {\"graphs\": 2, \"schemas\": 2}\nBundle labels: {\"source_backed_fake_real_verification_bundle\": 1}\nCo-occurrence labels: {\"fake_real_data_plus_verification_gap\": 1}", "source": "foundry_mined_dataset", "repo_url": "https://github.com/timogilvie/wavemill", "source_id": "comment-chain-pattern-assumption_checks-7da2b94ed2816ae8", "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": "timogilvie/wavemill", "source_dataset": "comment_chain_patterns/assumption_checks", "training_usage": "negative_or_unresolved"}}}, {"ruleId": "foundry_assumption_check", "level": "warning", "message": {"text": "Foundry mined assumption checks: timogilvie/wavemill"}, "properties": {"repobilityId": 382804, "scanner": "foundry_dataset", "fingerprint": "ff32442a533f631f44e87f2f4a6ed38ddf828ebfd44a82058b8733b33c35f079", "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": "timogilvie/wavemill#141", "human_labels": ["test_ci_gap"], "issue_number": "141", "thread_label": "thread_has_human_issue_and_fix_context", "outcome_label": "ambiguous_needs_more_evidence", "source_backed": true, "max_confidence": 0.58, "repo_full_name": "timogilvie/wavemill", "training_usage": "weak_supervision", "confidence_tier": "weak_supervision", "source_chain_id": "evidence-chain-issue_chain-7a8cbea9e4f2e38f", "helicopter_views": {"graphs": 2, "schemas": 2}, "artifact_families": {"docs": 1, "schemas": 1}, "source_chain_kind": "issue_chain", "changed_file_count": 0, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {}, "linked_commit_count": 5, "helicopter_view_count": 4, "source_artifact_count": 2, "classification_reasons": ["source_graph_has_real_artifacts", "source_graph_has_verification_artifacts", "repo_has_isolated_helicopter_views", "link_quality_weak_supervision", "high_risk_human_feedback_label"], "linked_ci_commit_count": 0, "verification_artifact_count": 1, "design_schema_api_artifact_count": 1}, "text": "Comment chain pattern product: assumption_checks\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#141\nOutcome: ambiguous_needs_more_evidence\nThread label: thread_has_human_issue_and_fix_context\nSource graph label: source_backed_multi_signal_graph\nReasons: source_graph_has_real_artifacts, source_graph_has_verification_artifacts, repo_has_isolated_helicopter_views, link_quality_weak_supervision, high_risk_human_feedback_label\nChain evidence:\nIssue/PR evidence chain: timogilvie/wavemill#141\nRepo: timogilvie/wavemill\nThread label: thread_has_human_issue_and_fix_context\nOutcome: ambiguous_needs_more_evidence\nComment count: 1\nLinked commit count: 5\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 0\nLabels: {'test_ci_gap': 1}\nPolarities: {'bad': 1}\nChanged file labels: {}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-86d6f57eb810e06b\",\n    \"kind\": \"pull_request_body\",\n    \"label\": \"test_ci_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/timogilvie/wavemill/pull/141\",\n    \"text\": \"GitHub feedback: test_ci_gap\\nPolarity: bad\\nKind: pull_request_body\\nRepo: timogilvie/wavemill\\nAuthor: timogilvie (User)\\nURL: https://github.com/timogilvie/wavemill/pull/141\\nTitle: HOK-999: Integrate workflow routing into mill task launches\\nBody:\\n## Summary\\n\\nIntegrated `wavemill route` (workflow-router.ts) into the `wavemill mill` task launch pipeline to enable stage-aware model routing instead of single-model routing.\\n\\n- Tasks now use different models for planning, coding, and review phases\\n- Planner model (with depth: light/deep) handles the planning phase\\n- Coder model (with depth: light/medium/deep) handles implementation\\n- Reviewer model (with mode: static/llm/static+llm) is documented in prompts\\n- All routing metadata is persisted to state file for eval analysis\\n\\n## Changes\\n\\n### Core Routing Logic (`shared/lib/wavemill-mill.sh`)\\n- Replaced `suggest-model.ts` call with `route-task.ts` in `launch_task()`\\n- Extract planner, coder, and reviewer models from routing decision\\n- Added fallback to single-model routing when workflow routing fails\\n- Updated agent launch calls to use stage-specific models:\\n  - Planning phase \u2192 planner model\\n  - Implementation phase \u2192 coder model\\n- Extended\"\n  }\n]\nChanged files:\n[]\nLinked chain ids:\n[\"evidence-chain-comment_to_commit-d0ce4a2dac9d83a8\"]\nSource graph evidence:\nSource evidence repo graph summary\nRepo: timogilvie/wavemill\nGraph label: source_backed_multi_signal_graph\nNodes: 10\nEdges: 12\nNode types: {\"cooccurrence_profile\": 1, \"github_repo_summary\": 1, \"helicopter_repo_view\": 4, \"repo\": 1, \"source_artifact\": 2, \"source_bundle\": 1}\nEdge types: {\"artifact_needs_claim_verification\": 1, \"artifact_supports_verification\": 1, \"repo_has_cooccurrence_profile\": 1, \"repo_has_github_evidence_summary\": 1, \"repo_has_graphs_helicopter_view\": 2, \"repo_has_schemas_helicopter_view\": 2, \"repo_has_source_artifact\": 2, \"repo_has_source_bundle\": 1, \"source_bundle_us\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/timogilvie/wavemill", "source_id": "comment-chain-pattern-assumption_checks-6056f2682c6b27ad", "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": "timogilvie/wavemill", "source_dataset": "comment_chain_patterns/assumption_checks", "training_usage": "weak_supervision"}}}, {"ruleId": "foundry_assumption_check", "level": "warning", "message": {"text": "Foundry mined assumption checks: timogilvie/wavemill"}, "properties": {"repobilityId": 382803, "scanner": "foundry_dataset", "fingerprint": "2b3deb93e025979df4f99d750111dd03ba838f60a0645c77a302fba77c219707", "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": "timogilvie/wavemill#120", "human_labels": ["test_ci_gap"], "issue_number": "120", "thread_label": "thread_has_human_issue_and_fix_context", "outcome_label": "ambiguous_needs_more_evidence", "source_backed": true, "max_confidence": 0.58, "repo_full_name": "timogilvie/wavemill", "training_usage": "weak_supervision", "confidence_tier": "weak_supervision", "source_chain_id": "evidence-chain-issue_chain-daa5f23f3838d5de", "helicopter_views": {"graphs": 2, "schemas": 2}, "artifact_families": {"docs": 1, "schemas": 1}, "source_chain_kind": "issue_chain", "changed_file_count": 0, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {}, "linked_commit_count": 5, "helicopter_view_count": 4, "source_artifact_count": 2, "classification_reasons": ["source_graph_has_real_artifacts", "source_graph_has_verification_artifacts", "repo_has_isolated_helicopter_views", "link_quality_weak_supervision", "high_risk_human_feedback_label"], "linked_ci_commit_count": 0, "verification_artifact_count": 1, "design_schema_api_artifact_count": 1}, "text": "Comment chain pattern product: assumption_checks\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#120\nOutcome: ambiguous_needs_more_evidence\nThread label: thread_has_human_issue_and_fix_context\nSource graph label: source_backed_multi_signal_graph\nReasons: source_graph_has_real_artifacts, source_graph_has_verification_artifacts, repo_has_isolated_helicopter_views, link_quality_weak_supervision, high_risk_human_feedback_label\nChain evidence:\nIssue/PR evidence chain: timogilvie/wavemill#120\nRepo: timogilvie/wavemill\nThread label: thread_has_human_issue_and_fix_context\nOutcome: ambiguous_needs_more_evidence\nComment count: 1\nLinked commit count: 5\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 0\nLabels: {'test_ci_gap': 1}\nPolarities: {'bad': 1}\nChanged file labels: {}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-4490938e163404dc\",\n    \"kind\": \"pull_request_body\",\n    \"label\": \"test_ci_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/timogilvie/wavemill/pull/120\",\n    \"text\": \"GitHub feedback: test_ci_gap\\nPolarity: bad\\nKind: pull_request_body\\nRepo: timogilvie/wavemill\\nAuthor: timogilvie (User)\\nURL: https://github.com/timogilvie/wavemill/pull/120\\nTitle: HOK-957: Use absolute TOOLS_DIR path for review tool in mill mode\\nBody:\\n## Summary\\n\\n- PR 119 changed review tool paths from `$TOOLS_DIR/review-changes.ts` to `tools/review-changes.ts` (relative) to prevent agents from cd'ing to the wrong directory\\n- But in mill mode, agents work in worktrees of the **target repo** (e.g., blue-horseshoe), which doesn't have a `tools/` directory \u2014 causing `ERR_MODULE_NOT_FOUND`\\n- Restored `$TOOLS_DIR/review-changes.ts` (absolute path) in mill mode prompt templates while keeping the \\\"run from current directory\\\" instructions that prevent the original PR 119 bug\\n\\n## Changes\\n\\n- **shared/lib/wavemill-mill.sh** \u2014 Updated 4 review tool path references in prompt templates (interactive plan prompt + autonomous prompt) from relative back to absolute `$TOOLS_DIR` paths\\n\\n## Test plan\\n\\n- Verified all 4 occurrences were updated via grep\\n- Confirmed `commands/workflow.md` is unaffected (it already has a graceful skip for missing tool and only runs in wavemill repo worktrees where the relat\"\n  }\n]\nChanged files:\n[]\nLinked chain ids:\n[\"evidence-chain-comment_to_commit-65d914b5ee9ac615\"]\nSource graph evidence:\nSource evidence repo graph summary\nRepo: timogilvie/wavemill\nGraph label: source_backed_multi_signal_graph\nNodes: 10\nEdges: 12\nNode types: {\"cooccurrence_profile\": 1, \"github_repo_summary\": 1, \"helicopter_repo_view\": 4, \"repo\": 1, \"source_artifact\": 2, \"source_bundle\": 1}\nEdge types: {\"artifact_needs_claim_verification\": 1, \"artifact_supports_verification\": 1, \"repo_has_cooccurrence_profile\": 1, \"repo_has_github_evidence_summary\": 1, \"repo_has_graphs_helicopter_view\": 2, \"repo_has_schemas_helicopter_view\": 2, \"repo_has_source_artifact\": 2, \"repo_has_source_bundle\": 1, \"source_bundle_uses_c\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/timogilvie/wavemill", "source_id": "comment-chain-pattern-assumption_checks-8f22ec02dc958e76", "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": "timogilvie/wavemill", "source_dataset": "comment_chain_patterns/assumption_checks", "training_usage": "weak_supervision"}}}, {"ruleId": "foundry_assumption_check", "level": "warning", "message": {"text": "Foundry mined assumption checks: timogilvie/wavemill"}, "properties": {"repobilityId": 382802, "scanner": "foundry_dataset", "fingerprint": "c8f3d49c02d81d96dd36f45b706ecafac1640f434763651e0ed387a95e89e8a3", "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": "timogilvie/wavemill#119", "human_labels": ["human_feedback_general"], "issue_number": "119", "thread_label": "thread_needs_classification", "outcome_label": "ambiguous_needs_more_evidence", "source_backed": true, "max_confidence": 0.0, "repo_full_name": "timogilvie/wavemill", "training_usage": "negative_or_unresolved", "confidence_tier": "unresolved", "source_chain_id": "evidence-chain-issue_chain-b15c2aa462ba8312", "helicopter_views": {"graphs": 2, "schemas": 2}, "artifact_families": {"docs": 1, "schemas": 1}, "source_chain_kind": "issue_chain", "changed_file_count": 0, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {}, "linked_commit_count": 0, "helicopter_view_count": 4, "source_artifact_count": 2, "classification_reasons": ["source_graph_has_real_artifacts", "source_graph_has_verification_artifacts", "repo_has_isolated_helicopter_views", "link_quality_unresolved"], "linked_ci_commit_count": 0, "verification_artifact_count": 1, "design_schema_api_artifact_count": 1}, "text": "Comment chain pattern product: assumption_checks\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#119\nOutcome: ambiguous_needs_more_evidence\nThread label: thread_needs_classification\nSource graph label: source_backed_multi_signal_graph\nReasons: source_graph_has_real_artifacts, source_graph_has_verification_artifacts, repo_has_isolated_helicopter_views, link_quality_unresolved\nChain evidence:\nIssue/PR evidence chain: timogilvie/wavemill#119\nRepo: timogilvie/wavemill\nThread label: thread_needs_classification\nOutcome: ambiguous_needs_more_evidence\nComment count: 1\nLinked commit count: 0\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 0\nLabels: {'human_feedback_general': 1}\nPolarities: {'neutral': 1}\nChanged file labels: {}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-faace001f35ccb54\",\n    \"kind\": \"issue_comment\",\n    \"label\": \"human_feedback_general\",\n    \"polarity\": \"neutral\",\n    \"url\": \"https://github.com/timogilvie/wavemill/pull/119#issuecomment-4006471782\",\n    \"text\": \"GitHub feedback: human_feedback_general\\nPolarity: neutral\\nKind: issue_comment\\nRepo: timogilvie/wavemill\\nAuthor: timogilvie (User)\\nURL: https://github.com/timogilvie/wavemill/pull/119#issuecomment-4006471782\\nTitle: \\nBody:\\nFixes HOK-954\"\n  }\n]\nChanged files:\n[]\nLinked chain ids:\n[\"evidence-chain-comment_to_commit-cda042e4282ef53d\"]\nSource graph evidence:\nSource evidence repo graph summary\nRepo: timogilvie/wavemill\nGraph label: source_backed_multi_signal_graph\nNodes: 10\nEdges: 12\nNode types: {\"cooccurrence_profile\": 1, \"github_repo_summary\": 1, \"helicopter_repo_view\": 4, \"repo\": 1, \"source_artifact\": 2, \"source_bundle\": 1}\nEdge types: {\"artifact_needs_claim_verification\": 1, \"artifact_supports_verification\": 1, \"repo_has_cooccurrence_profile\": 1, \"repo_has_github_evidence_summary\": 1, \"repo_has_graphs_helicopter_view\": 2, \"repo_has_schemas_helicopter_view\": 2, \"repo_has_source_artifact\": 2, \"repo_has_source_bundle\": 1, \"source_bundle_uses_cooccurrence_profile\": 1}\nArtifact families: {\"docs\": 1, \"schemas\": 1}\nHelicopter views: {\"graphs\": 2, \"schemas\": 2}\nBundle labels: {\"source_backed_fake_real_verification_bundle\": 1}\nCo-occurrence labels: {\"fake_real_data_plus_verification_gap\": 1}", "source": "foundry_mined_dataset", "repo_url": "https://github.com/timogilvie/wavemill", "source_id": "comment-chain-pattern-assumption_checks-bf22d3a19bf5ee2e", "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": "timogilvie/wavemill", "source_dataset": "comment_chain_patterns/assumption_checks", "training_usage": "negative_or_unresolved"}}}, {"ruleId": "foundry_assumption_check", "level": "warning", "message": {"text": "Foundry mined assumption checks: timogilvie/wavemill"}, "properties": {"repobilityId": 382801, "scanner": "foundry_dataset", "fingerprint": "19ef0c4c2c5f85e73da1b5c34a1e35e579d706ec20b653ab806887b367201998", "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": "timogilvie/wavemill#118", "human_labels": ["test_ci_gap"], "issue_number": "118", "thread_label": "thread_has_human_issue_and_fix_context", "outcome_label": "ambiguous_needs_more_evidence", "source_backed": true, "max_confidence": 0.58, "repo_full_name": "timogilvie/wavemill", "training_usage": "weak_supervision", "confidence_tier": "weak_supervision", "source_chain_id": "evidence-chain-issue_chain-c403317891c0e730", "helicopter_views": {"graphs": 2, "schemas": 2}, "artifact_families": {"docs": 1, "schemas": 1}, "source_chain_kind": "issue_chain", "changed_file_count": 0, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {}, "linked_commit_count": 5, "helicopter_view_count": 4, "source_artifact_count": 2, "classification_reasons": ["source_graph_has_real_artifacts", "source_graph_has_verification_artifacts", "repo_has_isolated_helicopter_views", "link_quality_weak_supervision", "high_risk_human_feedback_label"], "linked_ci_commit_count": 0, "verification_artifact_count": 1, "design_schema_api_artifact_count": 1}, "text": "Comment chain pattern product: assumption_checks\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#118\nOutcome: ambiguous_needs_more_evidence\nThread label: thread_has_human_issue_and_fix_context\nSource graph label: source_backed_multi_signal_graph\nReasons: source_graph_has_real_artifacts, source_graph_has_verification_artifacts, repo_has_isolated_helicopter_views, link_quality_weak_supervision, high_risk_human_feedback_label\nChain evidence:\nIssue/PR evidence chain: timogilvie/wavemill#118\nRepo: timogilvie/wavemill\nThread label: thread_has_human_issue_and_fix_context\nOutcome: ambiguous_needs_more_evidence\nComment count: 1\nLinked commit count: 5\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 0\nLabels: {'test_ci_gap': 1}\nPolarities: {'bad': 1}\nChanged file labels: {}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-2c8209a927dc279a\",\n    \"kind\": \"pull_request_body\",\n    \"label\": \"test_ci_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/timogilvie/wavemill/pull/118\",\n    \"text\": \"GitHub feedback: test_ci_gap\\nPolarity: bad\\nKind: pull_request_body\\nRepo: timogilvie/wavemill\\nAuthor: timogilvie (User)\\nURL: https://github.com/timogilvie/wavemill/pull/118\\nTitle: HOK-952: Create comprehensive config in wavemill init\\nBody:\\n## Summary\\n\\n- `wavemill init` now creates a comprehensive config with all available sections (12 sections total)\\n- Added config versioning system to track format compatibility\\n- Automatic upgrade detection and prompting before workflows run\\n- New tools for version checking and safe config synchronization\\n\\nPreviously, `wavemill init` created a minimal 3-section config (`linear`, `mill`, `expand`). Users missed out on features like eval, review, router, permissions, validation, constraints, UI settings, and plan configuration.\\n\\n## Changes\\n\\n### Core Implementation\\n\\n**Schema & Types** (`wavemill-config.schema.json`, `shared/lib/config.ts`)\\n- Added `configVersion` field to track config format (currently \\\"1.0.0\\\")\\n- Exported `CURRENT_CONFIG_VERSION` constant for programmatic access\\n- All fields remain optional for backward compatibility\\n\\n**Init Template** (`wavemill` script)\\n- Comprehensive config template with 12 sections:\\n  - `linear` - Project configu\"\n  }\n]\nChanged files:\n[]\nLinked chain ids:\n[\"evidence-chain-comment_to_commit-a6c3706984a7468f\"]\nSource graph evidence:\nSource evidence repo graph summary\nRepo: timogilvie/wavemill\nGraph label: source_backed_multi_signal_graph\nNodes: 10\nEdges: 12\nNode types: {\"cooccurrence_profile\": 1, \"github_repo_summary\": 1, \"helicopter_repo_view\": 4, \"repo\": 1, \"source_artifact\": 2, \"source_bundle\": 1}\nEdge types: {\"artifact_needs_claim_verification\": 1, \"artifact_supports_verification\": 1, \"repo_has_cooccurrence_profile\": 1, \"repo_has_github_evidence_summary\": 1, \"repo_has_graphs_helicopter_view\": 2, \"repo_has_schemas_helicopter_view\": 2, \"repo_has_source_artifact\": 2, \"repo_has_source_bundle\": 1, \"source_bundle\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/timogilvie/wavemill", "source_id": "comment-chain-pattern-assumption_checks-d3def46cb67e720c", "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": "timogilvie/wavemill", "source_dataset": "comment_chain_patterns/assumption_checks", "training_usage": "weak_supervision"}}}, {"ruleId": "foundry_test_ci_gap", "level": "error", "message": {"text": "Foundry mined test ci gap after feedback: timogilvie/wavemill"}, "properties": {"repobilityId": 420390, "scanner": "foundry_dataset", "fingerprint": "0f72e8c9fee28eec123fb4bcb9078c14d6fc8b46e17a5d49750255a5b5eb321a", "category": "testing", "severity": "high", "confidence": 0.78, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Imported from mined Foundry/Fable5 evidence with real GitHub/source provenance. Review source_id before acting.", "evidence": {"meta": {"kind": "graph_query_record", "title": "Feedback exposes missing tests or CI", "intent": "Hard negatives for feedback/fix chains without adequate guardrails.", "labels": {"test_ci_gap": 1, "weak blueprint fit": 2, "partial blueprint fit": 1, "verification_or_tests": 5, "issue_or_pull_request_thread": 1, "ambiguous_needs_more_evidence": 3, "blueprint_human_gap_alignment": 3, "comment_has_related_commit_context": 1, "thread_has_human_issue_and_fix_context": 2}, "source": "graph_query_export", "motif_id": "test_ci_gap_after_feedback", "outcomes": {"ambiguous_needs_more_evidence": 6}, "polarity": "bad", "query_id": "test_ci_gap_after_feedback", "severity": "high", "ci_labels": {}, "synthetic": false, "edge_count": 28, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 1, "thread_has_comment": 1, "alignment_uses_comment": 3, "alignment_uses_finding": 3, "chain_has_link_quality": 6, "comment_aligns_finding": 3, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 1, "comment_chain_links_commit": 5, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 1}, "node_count": 23, "node_types": {"repo": 1, "commit": 5, "thread": 1, "comment": 1, "alignment": 3, "fix_outcome": 1, "issue_chain": 1, "link_quality": 6, "comment_chain": 1, "blueprint_finding": 3}, "query_type": "motif_query", "thread_key": "timogilvie/wavemill#98", "issue_number": "98", "quality_tiers": {"assumption_check": 3, "weak_supervision": 3}, "repo_full_name": "timogilvie/wavemill", "training_usage": "hard_negative", "source_motif_id": "graph-pattern-motif-thread-d0e3af81321e7c47", "graph_gold_label": "weak_supervision_needs_review", "changed_file_labels": {}}, "text": "Graph query export: Feedback exposes missing tests or CI\nQuery id: test_ci_gap_after_feedback\nQuery type: motif_query\nIntent: Hard negatives for feedback/fix chains without adequate guardrails.\nMotif: test_ci_gap_after_feedback\nTraining usage: hard_negative\nGraph gold label: weak_supervision_needs_review\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#98\nEvidence:\nGraph motif: Feedback or fix context exposes missing test/CI guardrails\nMotif id: test_ci_gap_after_feedback\nPolarity: bad\nTraining usage: hard_negative\nSeverity: high\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#98\nGraph gold label: weak_supervision_needs_review\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: timogilvie/wavemill#98\nRepo: timogilvie/wavemill\nIssue/PR number: 98\nGraph consistency label: weak_supervision_needs_review\nNodes: 23\nEdges: 28\nNode types: {'link_quality': 6, 'commit': 5, 'alignment': 3, 'blueprint_finding': 3, 'thread': 1, 'repo': 1, 'comment': 1, 'comment_chain': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'chain_has_link_quality': 6, 'comment_chain_links_commit': 5, 'alignment_uses_comment': 3, 'alignment_uses_finding': 3, 'comment_aligns_finding': 3, 'repo_has_thread': 1, 'thread_has_comment': 1, 'thread_has_comment_chain': 1, 'comment_has_chain': 1, 'thread_has_issue_chain': 1, 'issue_chain_has_comment_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'verification_or_tests': 5, 'ambiguous_needs_more_evidence': 3, 'blueprint_human_gap_alignment': 3, 'thread_has_human_issue_and_fix_context': 2, 'weak blueprint fit': 2, 'issue_or_pull_request_thread': 1, 'test_ci_gap': 1, 'comment_has_related_commit_context': 1, 'partial blueprint fit': 1}\nOutcomes: {'ambiguous_needs_more_evidence': 6}\nQuality tiers: {'weak_supervision': 3, 'assumption_check': 3}\nCI labels: {}\nCurriculum targets:\n- Turn human feedback into regression tests and CI gates.\n- Penalize fixes that do not add or exercise verification for affected workflows.\nAssumption checks:\n- Did the fix add tests for the exact complaint?\n- Does CI run those tests, or is verification only implied?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/timogilvie/wavemill", "source_id": "graph-query-motif_query-b29f7066ce596ad6", "synthetic": false, "gold_label": "", "graph_label": "", "source_path": "/data/distillate/foundry_data/graph_queries/test_ci_gap_after_feedback/shard-0.jsonl", "bundle_label": "", "priority_band": "", "priority_score": 0, "repo_full_name": "timogilvie/wavemill", "source_dataset": "graph_queries/test_ci_gap_after_feedback", "training_usage": "hard_negative"}}}, {"ruleId": "foundry_test_ci_gap", "level": "error", "message": {"text": "Foundry mined test ci gap after feedback: timogilvie/wavemill"}, "properties": {"repobilityId": 420389, "scanner": "foundry_dataset", "fingerprint": "5dd9cfa8a84eedd20a04efc5162914076feb0d27f2179ffdb27909e6f049eb62", "category": "testing", "severity": "high", "confidence": 0.78, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Imported from mined Foundry/Fable5 evidence with real GitHub/source provenance. Review source_id before acting.", "evidence": {"meta": {"kind": "graph_query_record", "title": "Feedback exposes missing tests or CI", "intent": "Hard negatives for feedback/fix chains without adequate guardrails.", "labels": {"test_ci_gap": 1, "weak blueprint fit": 2, "partial blueprint fit": 1, "verification_or_tests": 3, "issue_or_pull_request_thread": 1, "ambiguous_needs_more_evidence": 3, "blueprint_human_gap_alignment": 3, "comment_has_related_commit_context": 1, "thread_has_human_issue_and_fix_context": 2}, "source": "graph_query_export", "motif_id": "test_ci_gap_after_feedback", "outcomes": {"ambiguous_needs_more_evidence": 6}, "polarity": "bad", "query_id": "test_ci_gap_after_feedback", "severity": "high", "ci_labels": {}, "synthetic": false, "edge_count": 26, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 1, "thread_has_comment": 1, "alignment_uses_comment": 3, "alignment_uses_finding": 3, "chain_has_link_quality": 6, "comment_aligns_finding": 3, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 1, "comment_chain_links_commit": 3, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 1}, "node_count": 21, "node_types": {"repo": 1, "commit": 3, "thread": 1, "comment": 1, "alignment": 3, "fix_outcome": 1, "issue_chain": 1, "link_quality": 6, "comment_chain": 1, "blueprint_finding": 3}, "query_type": "motif_query", "thread_key": "timogilvie/wavemill#89", "issue_number": "89", "quality_tiers": {"assumption_check": 3, "weak_supervision": 3}, "repo_full_name": "timogilvie/wavemill", "training_usage": "hard_negative", "source_motif_id": "graph-pattern-motif-thread-b3662dbba433123b", "graph_gold_label": "weak_supervision_needs_review", "changed_file_labels": {}}, "text": "Graph query export: Feedback exposes missing tests or CI\nQuery id: test_ci_gap_after_feedback\nQuery type: motif_query\nIntent: Hard negatives for feedback/fix chains without adequate guardrails.\nMotif: test_ci_gap_after_feedback\nTraining usage: hard_negative\nGraph gold label: weak_supervision_needs_review\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#89\nEvidence:\nGraph motif: Feedback or fix context exposes missing test/CI guardrails\nMotif id: test_ci_gap_after_feedback\nPolarity: bad\nTraining usage: hard_negative\nSeverity: high\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#89\nGraph gold label: weak_supervision_needs_review\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: timogilvie/wavemill#89\nRepo: timogilvie/wavemill\nIssue/PR number: 89\nGraph consistency label: weak_supervision_needs_review\nNodes: 21\nEdges: 26\nNode types: {'link_quality': 6, 'commit': 3, 'alignment': 3, 'blueprint_finding': 3, 'thread': 1, 'repo': 1, 'comment': 1, 'comment_chain': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'chain_has_link_quality': 6, 'comment_chain_links_commit': 3, 'alignment_uses_comment': 3, 'alignment_uses_finding': 3, 'comment_aligns_finding': 3, 'repo_has_thread': 1, 'thread_has_comment': 1, 'thread_has_comment_chain': 1, 'comment_has_chain': 1, 'thread_has_issue_chain': 1, 'issue_chain_has_comment_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'verification_or_tests': 3, 'ambiguous_needs_more_evidence': 3, 'blueprint_human_gap_alignment': 3, 'thread_has_human_issue_and_fix_context': 2, 'weak blueprint fit': 2, 'issue_or_pull_request_thread': 1, 'test_ci_gap': 1, 'comment_has_related_commit_context': 1, 'partial blueprint fit': 1}\nOutcomes: {'ambiguous_needs_more_evidence': 6}\nQuality tiers: {'weak_supervision': 3, 'assumption_check': 3}\nCI labels: {}\nCurriculum targets:\n- Turn human feedback into regression tests and CI gates.\n- Penalize fixes that do not add or exercise verification for affected workflows.\nAssumption checks:\n- Did the fix add tests for the exact complaint?\n- Does CI run those tests, or is verification only implied?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/timogilvie/wavemill", "source_id": "graph-query-motif_query-18cff61c5d1df4d7", "synthetic": false, "gold_label": "", "graph_label": "", "source_path": "/data/distillate/foundry_data/graph_queries/test_ci_gap_after_feedback/shard-0.jsonl", "bundle_label": "", "priority_band": "", "priority_score": 0, "repo_full_name": "timogilvie/wavemill", "source_dataset": "graph_queries/test_ci_gap_after_feedback", "training_usage": "hard_negative"}}}, {"ruleId": "foundry_test_ci_gap", "level": "error", "message": {"text": "Foundry mined test ci gap after feedback: timogilvie/wavemill"}, "properties": {"repobilityId": 420388, "scanner": "foundry_dataset", "fingerprint": "6c5b9245d242a97ae77ee68f7c9446675076e55985184fb737b8fa2db7c758c3", "category": "testing", "severity": "high", "confidence": 0.78, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Imported from mined Foundry/Fable5 evidence with real GitHub/source provenance. Review source_id before acting.", "evidence": {"meta": {"kind": "graph_query_record", "title": "Feedback exposes missing tests or CI", "intent": "Hard negatives for feedback/fix chains without adequate guardrails.", "labels": {"bug_fix": 1, "test_or_ci": 2, "test_ci_gap": 1, "docs_or_chore": 1, "docs_or_claims": 2, "source_or_other": 3, "weak blueprint fit": 2, "dependency_or_build": 1, "partial blueprint fit": 1, "verification_or_tests": 1, "ci_pending_or_incomplete": 1, "issue_or_pull_request_thread": 1, "blueprint_human_gap_alignment": 3, "thread_has_human_issue_and_fix_context": 2, "claimed_resolved_with_verification_signal": 3, "human_reported_issue_then_verified_fix_attempt": 1}, "source": "graph_query_export", "motif_id": "test_ci_gap_after_feedback", "outcomes": {"claimed_resolved_with_verification_signal": 6}, "polarity": "bad", "query_id": "test_ci_gap_after_feedback", "severity": "high", "ci_labels": {"ci_pending_or_incomplete": 2}, "synthetic": false, "edge_count": 51, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 1, "thread_has_comment": 1, "thread_touches_file": 8, "comment_chain_has_ci": 1, "alignment_uses_comment": 3, "alignment_uses_finding": 3, "chain_has_link_quality": 6, "comment_aligns_finding": 3, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "issue_chain_touches_file": 8, "thread_has_comment_chain": 1, "comment_chain_links_commit": 3, "comment_chain_touches_file": 8, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 1}, "node_count": 30, "node_types": {"repo": 1, "commit": 3, "thread": 1, "comment": 1, "pr_file": 8, "alignment": 3, "ci_summary": 1, "fix_outcome": 1, "issue_chain": 1, "link_quality": 6, "comment_chain": 1, "blueprint_finding": 3}, "query_type": "motif_query", "thread_key": "timogilvie/wavemill#750", "issue_number": "750", "quality_tiers": {"assumption_check": 3, "weak_supervision": 3}, "repo_full_name": "timogilvie/wavemill", "training_usage": "hard_negative", "source_motif_id": "graph-pattern-motif-thread-1ab3fbf522a01423", "graph_gold_label": "supported_by_verification_signal", "changed_file_labels": {"test_or_ci": 8, "docs_or_claims": 8, "source_or_other": 12, "dependency_or_build": 4}}, "text": "Graph query export: Feedback exposes missing tests or CI\nQuery id: test_ci_gap_after_feedback\nQuery type: motif_query\nIntent: Hard negatives for feedback/fix chains without adequate guardrails.\nMotif: test_ci_gap_after_feedback\nTraining usage: hard_negative\nGraph gold label: supported_by_verification_signal\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#750\nEvidence:\nGraph motif: Feedback or fix context exposes missing test/CI guardrails\nMotif id: test_ci_gap_after_feedback\nPolarity: bad\nTraining usage: hard_negative\nSeverity: high\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#750\nGraph gold label: supported_by_verification_signal\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: timogilvie/wavemill#750\nRepo: timogilvie/wavemill\nIssue/PR number: 750\nGraph consistency label: supported_by_verification_signal\nNodes: 30\nEdges: 51\nNode types: {'pr_file': 8, 'link_quality': 6, 'commit': 3, 'alignment': 3, 'blueprint_finding': 3, 'thread': 1, 'repo': 1, 'comment': 1, 'comment_chain': 1, 'ci_summary': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'thread_touches_file': 8, 'comment_chain_touches_file': 8, 'issue_chain_touches_file': 8, 'chain_has_link_quality': 6, 'comment_chain_links_commit': 3, 'alignment_uses_comment': 3, 'alignment_uses_finding': 3, 'comment_aligns_finding': 3, 'repo_has_thread': 1, 'thread_has_comment': 1, 'thread_has_comment_chain': 1, 'comment_has_chain': 1, 'comment_chain_has_ci': 1, 'thread_has_issue_chain': 1, 'issue_chain_has_comment_chain': 1, 'thread_has_fix_outcome': 1}\nLabels: {'source_or_other': 3, 'claimed_resolved_with_verification_signal': 3, 'blueprint_human_gap_alignment': 3, 'docs_or_claims': 2, 'test_or_ci': 2, 'thread_has_human_issue_and_fix_context': 2, 'weak blueprint fit': 2, 'issue_or_pull_request_thread': 1, 'test_ci_gap': 1, 'dependency_or_build': 1, 'human_reported_issue_then_verified_fix_attempt': 1, 'docs_or_chore': 1, 'ci_pending_or_incomplete': 1, 'verification_or_tests': 1, 'bug_fix': 1, 'partial blueprint fit': 1}\nOutcomes: {'claimed_resolved_with_verification_signal': 6}\nQuality tiers: {'weak_supervision': 3, 'assumption_check': 3}\nCI labels: {'ci_pending_or_incomplete': 2}\nCurriculum targets:\n- Turn human feedback into regression tests and CI gates.\n- Penalize fixes that do not add or exercise verification for affected workflows.\nAssumption checks:\n- Did the fix add tests for the exact complaint?\n- Does CI run those tests, or is verification only implied?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/timogilvie/wavemill", "source_id": "graph-query-motif_query-1ef2441690932fd3", "synthetic": false, "gold_label": "", "graph_label": "", "source_path": "/data/distillate/foundry_data/graph_queries/test_ci_gap_after_feedback/shard-0.jsonl", "bundle_label": "", "priority_band": "", "priority_score": 0, "repo_full_name": "timogilvie/wavemill", "source_dataset": "graph_queries/test_ci_gap_after_feedback", "training_usage": "hard_negative"}}}, {"ruleId": "foundry_test_ci_gap", "level": "error", "message": {"text": "Foundry mined test ci gap after feedback: timogilvie/wavemill"}, "properties": {"repobilityId": 420387, "scanner": "foundry_dataset", "fingerprint": "6b3c6dc5ffb9c76d81015874a1c715007d02b806bf4e9b3581190e5775c92a2b", "category": "testing", "severity": "high", "confidence": 0.78, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Imported from mined Foundry/Fable5 evidence with real GitHub/source provenance. Review source_id before acting.", "evidence": {"meta": {"kind": "graph_query_record", "title": "Feedback exposes missing tests or CI", "intent": "Hard negatives for feedback/fix chains without adequate guardrails.", "labels": {"test_or_ci": 1, "test_ci_gap": 1, "commit_general": 1, "docs_or_claims": 2, "source_or_other": 2, "weak blueprint fit": 2, "dependency_or_build": 1, "partial blueprint fit": 1, "verification_or_tests": 2, "issue_or_pull_request_thread": 1, "ambiguous_needs_more_evidence": 3, "blueprint_human_gap_alignment": 3, "comment_has_related_commit_context": 1, "thread_has_human_issue_and_fix_context": 2}, "source": "graph_query_export", "motif_id": "test_ci_gap_after_feedback", "outcomes": {"ambiguous_needs_more_evidence": 6}, "polarity": "bad", "query_id": "test_ci_gap_after_feedback", "severity": "high", "ci_labels": {}, "synthetic": false, "edge_count": 44, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 1, "thread_has_comment": 1, "thread_touches_file": 6, "alignment_uses_comment": 3, "alignment_uses_finding": 3, "chain_has_link_quality": 6, "comment_aligns_finding": 3, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "issue_chain_touches_file": 6, "thread_has_comment_chain": 1, "comment_chain_links_commit": 3, "comment_chain_touches_file": 6, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 1}, "node_count": 27, "node_types": {"repo": 1, "commit": 3, "thread": 1, "comment": 1, "pr_file": 6, "alignment": 3, "fix_outcome": 1, "issue_chain": 1, "link_quality": 6, "comment_chain": 1, "blueprint_finding": 3}, "query_type": "motif_query", "thread_key": "timogilvie/wavemill#747", "issue_number": "747", "quality_tiers": {"assumption_check": 3, "weak_supervision": 3}, "repo_full_name": "timogilvie/wavemill", "training_usage": "hard_negative", "source_motif_id": "graph-pattern-motif-thread-d25fef59ce730d98", "graph_gold_label": "weak_supervision_needs_review", "changed_file_labels": {"test_or_ci": 4, "docs_or_claims": 8, "source_or_other": 8, "dependency_or_build": 4}}, "text": "Graph query export: Feedback exposes missing tests or CI\nQuery id: test_ci_gap_after_feedback\nQuery type: motif_query\nIntent: Hard negatives for feedback/fix chains without adequate guardrails.\nMotif: test_ci_gap_after_feedback\nTraining usage: hard_negative\nGraph gold label: weak_supervision_needs_review\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#747\nEvidence:\nGraph motif: Feedback or fix context exposes missing test/CI guardrails\nMotif id: test_ci_gap_after_feedback\nPolarity: bad\nTraining usage: hard_negative\nSeverity: high\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#747\nGraph gold label: weak_supervision_needs_review\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: timogilvie/wavemill#747\nRepo: timogilvie/wavemill\nIssue/PR number: 747\nGraph consistency label: weak_supervision_needs_review\nNodes: 27\nEdges: 44\nNode types: {'pr_file': 6, 'link_quality': 6, 'commit': 3, 'alignment': 3, 'blueprint_finding': 3, 'thread': 1, 'repo': 1, 'comment': 1, 'comment_chain': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'thread_touches_file': 6, 'comment_chain_touches_file': 6, 'chain_has_link_quality': 6, 'issue_chain_touches_file': 6, 'comment_chain_links_commit': 3, 'alignment_uses_comment': 3, 'alignment_uses_finding': 3, 'comment_aligns_finding': 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: {'ambiguous_needs_more_evidence': 3, 'blueprint_human_gap_alignment': 3, 'docs_or_claims': 2, 'source_or_other': 2, 'verification_or_tests': 2, 'thread_has_human_issue_and_fix_context': 2, 'weak blueprint fit': 2, 'issue_or_pull_request_thread': 1, 'test_ci_gap': 1, 'dependency_or_build': 1, 'test_or_ci': 1, 'comment_has_related_commit_context': 1, 'commit_general': 1, 'partial blueprint fit': 1}\nOutcomes: {'ambiguous_needs_more_evidence': 6}\nQuality tiers: {'weak_supervision': 3, 'assumption_check': 3}\nCI labels: {}\nCurriculum targets:\n- Turn human feedback into regression tests and CI gates.\n- Penalize fixes that do not add or exercise verification for affected workflows.\nAssumption checks:\n- Did the fix add tests for the exact complaint?\n- Does CI run those tests, or is verification only implied?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/timogilvie/wavemill", "source_id": "graph-query-motif_query-a9aa78266cd16f12", "synthetic": false, "gold_label": "", "graph_label": "", "source_path": "/data/distillate/foundry_data/graph_queries/test_ci_gap_after_feedback/shard-0.jsonl", "bundle_label": "", "priority_band": "", "priority_score": 0, "repo_full_name": "timogilvie/wavemill", "source_dataset": "graph_queries/test_ci_gap_after_feedback", "training_usage": "hard_negative"}}}, {"ruleId": "foundry_test_ci_gap", "level": "error", "message": {"text": "Foundry mined test ci gap after feedback: timogilvie/wavemill"}, "properties": {"repobilityId": 420386, "scanner": "foundry_dataset", "fingerprint": "f7e03555c0f02bf8a4c10f43a605b0365322c264e57c19e24b7c8097a46bf014", "category": "testing", "severity": "high", "confidence": 0.78, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Imported from mined Foundry/Fable5 evidence with real GitHub/source provenance. Review source_id before acting.", "evidence": {"meta": {"kind": "graph_query_record", "title": "Feedback exposes missing tests or CI", "intent": "Hard negatives for feedback/fix chains without adequate guardrails.", "labels": {"test_or_ci": 1, "test_ci_gap": 1, "source_or_other": 1, "weak blueprint fit": 2, "partial blueprint fit": 1, "verification_or_tests": 4, "issue_or_pull_request_thread": 1, "ambiguous_needs_more_evidence": 3, "blueprint_human_gap_alignment": 3, "comment_has_related_commit_context": 1, "thread_has_human_issue_and_fix_context": 2}, "source": "graph_query_export", "motif_id": "test_ci_gap_after_feedback", "outcomes": {"ambiguous_needs_more_evidence": 6}, "polarity": "bad", "query_id": "test_ci_gap_after_feedback", "severity": "high", "ci_labels": {}, "synthetic": false, "edge_count": 33, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 1, "thread_has_comment": 1, "thread_touches_file": 2, "alignment_uses_comment": 3, "alignment_uses_finding": 3, "chain_has_link_quality": 6, "comment_aligns_finding": 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": 24, "node_types": {"repo": 1, "commit": 4, "thread": 1, "comment": 1, "pr_file": 2, "alignment": 3, "fix_outcome": 1, "issue_chain": 1, "link_quality": 6, "comment_chain": 1, "blueprint_finding": 3}, "query_type": "motif_query", "thread_key": "timogilvie/wavemill#740", "issue_number": "740", "quality_tiers": {"assumption_check": 3, "weak_supervision": 3}, "repo_full_name": "timogilvie/wavemill", "training_usage": "hard_negative", "source_motif_id": "graph-pattern-motif-thread-4d62003fb2a5ca02", "graph_gold_label": "weak_supervision_needs_review", "changed_file_labels": {"test_or_ci": 4, "source_or_other": 4}}, "text": "Graph query export: Feedback exposes missing tests or CI\nQuery id: test_ci_gap_after_feedback\nQuery type: motif_query\nIntent: Hard negatives for feedback/fix chains without adequate guardrails.\nMotif: test_ci_gap_after_feedback\nTraining usage: hard_negative\nGraph gold label: weak_supervision_needs_review\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#740\nEvidence:\nGraph motif: Feedback or fix context exposes missing test/CI guardrails\nMotif id: test_ci_gap_after_feedback\nPolarity: bad\nTraining usage: hard_negative\nSeverity: high\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#740\nGraph gold label: weak_supervision_needs_review\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: timogilvie/wavemill#740\nRepo: timogilvie/wavemill\nIssue/PR number: 740\nGraph consistency label: weak_supervision_needs_review\nNodes: 24\nEdges: 33\nNode types: {'link_quality': 6, 'commit': 4, 'alignment': 3, 'blueprint_finding': 3, 'pr_file': 2, 'thread': 1, 'repo': 1, 'comment': 1, 'comment_chain': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'chain_has_link_quality': 6, 'comment_chain_links_commit': 4, 'alignment_uses_comment': 3, 'alignment_uses_finding': 3, 'comment_aligns_finding': 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: {'verification_or_tests': 4, 'ambiguous_needs_more_evidence': 3, 'blueprint_human_gap_alignment': 3, 'thread_has_human_issue_and_fix_context': 2, 'weak blueprint fit': 2, 'issue_or_pull_request_thread': 1, 'test_ci_gap': 1, 'test_or_ci': 1, 'source_or_other': 1, 'comment_has_related_commit_context': 1, 'partial blueprint fit': 1}\nOutcomes: {'ambiguous_needs_more_evidence': 6}\nQuality tiers: {'weak_supervision': 3, 'assumption_check': 3}\nCI labels: {}\nCurriculum targets:\n- Turn human feedback into regression tests and CI gates.\n- Penalize fixes that do not add or exercise verification for affected workflows.\nAssumption checks:\n- Did the fix add tests for the exact complaint?\n- Does CI run those tests, or is verification only implied?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/timogilvie/wavemill", "source_id": "graph-query-motif_query-eec3a81507108947", "synthetic": false, "gold_label": "", "graph_label": "", "source_path": "/data/distillate/foundry_data/graph_queries/test_ci_gap_after_feedback/shard-0.jsonl", "bundle_label": "", "priority_band": "", "priority_score": 0, "repo_full_name": "timogilvie/wavemill", "source_dataset": "graph_queries/test_ci_gap_after_feedback", "training_usage": "hard_negative"}}}, {"ruleId": "foundry_test_ci_gap", "level": "error", "message": {"text": "Foundry mined test ci gap after feedback: timogilvie/wavemill"}, "properties": {"repobilityId": 420385, "scanner": "foundry_dataset", "fingerprint": "77374e80137c1fa83e5179d06ca60bdbb59191e21dbf72afd65428e9f6533f50", "category": "testing", "severity": "high", "confidence": 0.78, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Imported from mined Foundry/Fable5 evidence with real GitHub/source provenance. Review source_id before acting.", "evidence": {"meta": {"kind": "graph_query_record", "title": "Feedback exposes missing tests or CI", "intent": "Hard negatives for feedback/fix chains without adequate guardrails.", "labels": {"test_or_ci": 7, "test_ci_gap": 1, "api_or_backend": 7, "schema_or_data": 2, "source_or_other": 7, "weak blueprint fit": 2, "dependency_or_build": 1, "partial blueprint fit": 1, "verification_or_tests": 5, "issue_or_pull_request_thread": 1, "ambiguous_needs_more_evidence": 3, "blueprint_human_gap_alignment": 3, "comment_has_related_commit_context": 1, "thread_has_human_issue_and_fix_context": 2}, "source": "graph_query_export", "motif_id": "test_ci_gap_after_feedback", "outcomes": {"ambiguous_needs_more_evidence": 6}, "polarity": "bad", "query_id": "test_ci_gap_after_feedback", "severity": "high", "ci_labels": {}, "synthetic": false, "edge_count": 76, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 1, "thread_has_comment": 1, "thread_touches_file": 24, "alignment_uses_comment": 3, "alignment_uses_finding": 3, "chain_has_link_quality": 6, "comment_aligns_finding": 3, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "issue_chain_touches_file": 12, "thread_has_comment_chain": 1, "comment_chain_links_commit": 5, "comment_chain_touches_file": 12, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 1}, "node_count": 47, "node_types": {"repo": 1, "commit": 5, "thread": 1, "comment": 1, "pr_file": 24, "alignment": 3, "fix_outcome": 1, "issue_chain": 1, "link_quality": 6, "comment_chain": 1, "blueprint_finding": 3}, "query_type": "motif_query", "thread_key": "timogilvie/wavemill#739", "issue_number": "739", "quality_tiers": {"assumption_check": 3, "weak_supervision": 3}, "repo_full_name": "timogilvie/wavemill", "training_usage": "hard_negative", "source_motif_id": "graph-pattern-motif-thread-b829423da8e6b307", "graph_gold_label": "weak_supervision_needs_review", "changed_file_labels": {"test_or_ci": 28, "api_or_backend": 28, "schema_or_data": 8, "source_or_other": 28, "dependency_or_build": 4}}, "text": "Graph query export: Feedback exposes missing tests or CI\nQuery id: test_ci_gap_after_feedback\nQuery type: motif_query\nIntent: Hard negatives for feedback/fix chains without adequate guardrails.\nMotif: test_ci_gap_after_feedback\nTraining usage: hard_negative\nGraph gold label: weak_supervision_needs_review\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#739\nEvidence:\nGraph motif: Feedback or fix context exposes missing test/CI guardrails\nMotif id: test_ci_gap_after_feedback\nPolarity: bad\nTraining usage: hard_negative\nSeverity: high\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#739\nGraph gold label: weak_supervision_needs_review\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: timogilvie/wavemill#739\nRepo: timogilvie/wavemill\nIssue/PR number: 739\nGraph consistency label: weak_supervision_needs_review\nNodes: 47\nEdges: 76\nNode types: {'pr_file': 24, 'link_quality': 6, 'commit': 5, 'alignment': 3, 'blueprint_finding': 3, 'thread': 1, 'repo': 1, 'comment': 1, 'comment_chain': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'thread_touches_file': 24, 'comment_chain_touches_file': 12, 'issue_chain_touches_file': 12, 'chain_has_link_quality': 6, 'comment_chain_links_commit': 5, 'alignment_uses_comment': 3, 'alignment_uses_finding': 3, 'comment_aligns_finding': 3, 'repo_has_thread': 1, 'thread_has_comment': 1, 'thread_has_comment_chain': 1, 'comment_has_chain': 1, 'thread_has_issue_chain': 1, 'issue_chain_has_comment_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'source_or_other': 7, 'test_or_ci': 7, 'api_or_backend': 7, 'verification_or_tests': 5, 'ambiguous_needs_more_evidence': 3, 'blueprint_human_gap_alignment': 3, 'schema_or_data': 2, 'thread_has_human_issue_and_fix_context': 2, 'weak blueprint fit': 2, 'issue_or_pull_request_thread': 1, 'test_ci_gap': 1, 'dependency_or_build': 1, 'comment_has_related_commit_context': 1, 'partial blueprint fit': 1}\nOutcomes: {'ambiguous_needs_more_evidence': 6}\nQuality tiers: {'weak_supervision': 3, 'assumption_check': 3}\nCI labels: {}\nCurriculum targets:\n- Turn human feedback into regression tests and CI gates.\n- Penalize fixes that do not add or exercise verification for affected workflows.\nAssumption checks:\n- Did the fix add tests for the exact complaint?\n- Does CI run those tests, or is verification only implied?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/timogilvie/wavemill", "source_id": "graph-query-motif_query-e23d8c440e7a9d49", "synthetic": false, "gold_label": "", "graph_label": "", "source_path": "/data/distillate/foundry_data/graph_queries/test_ci_gap_after_feedback/shard-0.jsonl", "bundle_label": "", "priority_band": "", "priority_score": 0, "repo_full_name": "timogilvie/wavemill", "source_dataset": "graph_queries/test_ci_gap_after_feedback", "training_usage": "hard_negative"}}}, {"ruleId": "foundry_test_ci_gap", "level": "error", "message": {"text": "Foundry mined test ci gap after feedback: timogilvie/wavemill"}, "properties": {"repobilityId": 420384, "scanner": "foundry_dataset", "fingerprint": "8f61a6c0debb1c85f8112b796ae626b87f39d3ae0f6de6e17888e05aff59c64c", "category": "testing", "severity": "high", "confidence": 0.78, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Imported from mined Foundry/Fable5 evidence with real GitHub/source provenance. Review source_id before acting.", "evidence": {"meta": {"kind": "graph_query_record", "title": "Feedback exposes missing tests or CI", "intent": "Hard negatives for feedback/fix chains without adequate guardrails.", "labels": {"test_or_ci": 14, "test_ci_gap": 1, "api_or_backend": 4, "schema_or_data": 1, "source_or_other": 6, "weak blueprint fit": 2, "dependency_or_build": 1, "partial blueprint fit": 1, "verification_or_tests": 5, "issue_or_pull_request_thread": 1, "ambiguous_needs_more_evidence": 3, "blueprint_human_gap_alignment": 3, "comment_has_related_commit_context": 1, "thread_has_human_issue_and_fix_context": 2}, "source": "graph_query_export", "motif_id": "test_ci_gap_after_feedback", "outcomes": {"ambiguous_needs_more_evidence": 6}, "polarity": "bad", "query_id": "test_ci_gap_after_feedback", "severity": "high", "ci_labels": {}, "synthetic": false, "edge_count": 78, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 1, "thread_has_comment": 1, "thread_touches_file": 26, "alignment_uses_comment": 3, "alignment_uses_finding": 3, "chain_has_link_quality": 6, "comment_aligns_finding": 3, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "issue_chain_touches_file": 12, "thread_has_comment_chain": 1, "comment_chain_links_commit": 5, "comment_chain_touches_file": 12, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 1}, "node_count": 49, "node_types": {"repo": 1, "commit": 5, "thread": 1, "comment": 1, "pr_file": 26, "alignment": 3, "fix_outcome": 1, "issue_chain": 1, "link_quality": 6, "comment_chain": 1, "blueprint_finding": 3}, "query_type": "motif_query", "thread_key": "timogilvie/wavemill#738", "issue_number": "738", "quality_tiers": {"assumption_check": 3, "weak_supervision": 3}, "repo_full_name": "timogilvie/wavemill", "training_usage": "hard_negative", "source_motif_id": "graph-pattern-motif-thread-b37189b111695ab8", "graph_gold_label": "weak_supervision_needs_review", "changed_file_labels": {"test_or_ci": 56, "api_or_backend": 16, "schema_or_data": 4, "source_or_other": 24, "dependency_or_build": 4}}, "text": "Graph query export: Feedback exposes missing tests or CI\nQuery id: test_ci_gap_after_feedback\nQuery type: motif_query\nIntent: Hard negatives for feedback/fix chains without adequate guardrails.\nMotif: test_ci_gap_after_feedback\nTraining usage: hard_negative\nGraph gold label: weak_supervision_needs_review\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#738\nEvidence:\nGraph motif: Feedback or fix context exposes missing test/CI guardrails\nMotif id: test_ci_gap_after_feedback\nPolarity: bad\nTraining usage: hard_negative\nSeverity: high\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#738\nGraph gold label: weak_supervision_needs_review\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: timogilvie/wavemill#738\nRepo: timogilvie/wavemill\nIssue/PR number: 738\nGraph consistency label: weak_supervision_needs_review\nNodes: 49\nEdges: 78\nNode types: {'pr_file': 26, 'link_quality': 6, 'commit': 5, 'alignment': 3, 'blueprint_finding': 3, 'thread': 1, 'repo': 1, 'comment': 1, 'comment_chain': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'thread_touches_file': 26, 'comment_chain_touches_file': 12, 'issue_chain_touches_file': 12, 'chain_has_link_quality': 6, 'comment_chain_links_commit': 5, 'alignment_uses_comment': 3, 'alignment_uses_finding': 3, 'comment_aligns_finding': 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: {'test_or_ci': 14, 'source_or_other': 6, 'verification_or_tests': 5, 'api_or_backend': 4, 'ambiguous_needs_more_evidence': 3, 'blueprint_human_gap_alignment': 3, 'thread_has_human_issue_and_fix_context': 2, 'weak blueprint fit': 2, 'issue_or_pull_request_thread': 1, 'test_ci_gap': 1, 'dependency_or_build': 1, 'schema_or_data': 1, 'comment_has_related_commit_context': 1, 'partial blueprint fit': 1}\nOutcomes: {'ambiguous_needs_more_evidence': 6}\nQuality tiers: {'weak_supervision': 3, 'assumption_check': 3}\nCI labels: {}\nCurriculum targets:\n- Turn human feedback into regression tests and CI gates.\n- Penalize fixes that do not add or exercise verification for affected workflows.\nAssumption checks:\n- Did the fix add tests for the exact complaint?\n- Does CI run those tests, or is verification only implied?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/timogilvie/wavemill", "source_id": "graph-query-motif_query-237c0498ecc1bdba", "synthetic": false, "gold_label": "", "graph_label": "", "source_path": "/data/distillate/foundry_data/graph_queries/test_ci_gap_after_feedback/shard-0.jsonl", "bundle_label": "", "priority_band": "", "priority_score": 0, "repo_full_name": "timogilvie/wavemill", "source_dataset": "graph_queries/test_ci_gap_after_feedback", "training_usage": "hard_negative"}}}, {"ruleId": "foundry_test_ci_gap", "level": "error", "message": {"text": "Foundry mined test ci gap after feedback: timogilvie/wavemill"}, "properties": {"repobilityId": 420383, "scanner": "foundry_dataset", "fingerprint": "c3172171415e3bc0e956720223c607fd4080238be8c3579e715c76398ad4fe77", "category": "testing", "severity": "high", "confidence": 0.78, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Imported from mined Foundry/Fable5 evidence with real GitHub/source provenance. Review source_id before acting.", "evidence": {"meta": {"kind": "graph_query_record", "title": "Feedback exposes missing tests or CI", "intent": "Hard negatives for feedback/fix chains without adequate guardrails.", "labels": {"test_or_ci": 3, "test_ci_gap": 1, "api_or_backend": 2, "schema_or_data": 2, "weak blueprint fit": 2, "dependency_or_build": 1, "partial blueprint fit": 1, "verification_or_tests": 5, "issue_or_pull_request_thread": 1, "ambiguous_needs_more_evidence": 3, "blueprint_human_gap_alignment": 3, "comment_has_related_commit_context": 1, "thread_has_human_issue_and_fix_context": 2}, "source": "graph_query_export", "motif_id": "test_ci_gap_after_feedback", "outcomes": {"ambiguous_needs_more_evidence": 6}, "polarity": "bad", "query_id": "test_ci_gap_after_feedback", "severity": "high", "ci_labels": {}, "synthetic": false, "edge_count": 52, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 1, "thread_has_comment": 1, "thread_touches_file": 8, "alignment_uses_comment": 3, "alignment_uses_finding": 3, "chain_has_link_quality": 6, "comment_aligns_finding": 3, "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": 31, "node_types": {"repo": 1, "commit": 5, "thread": 1, "comment": 1, "pr_file": 8, "alignment": 3, "fix_outcome": 1, "issue_chain": 1, "link_quality": 6, "comment_chain": 1, "blueprint_finding": 3}, "query_type": "motif_query", "thread_key": "timogilvie/wavemill#736", "issue_number": "736", "quality_tiers": {"assumption_check": 3, "weak_supervision": 3}, "repo_full_name": "timogilvie/wavemill", "training_usage": "hard_negative", "source_motif_id": "graph-pattern-motif-thread-e0a332e92b6cbac8", "graph_gold_label": "weak_supervision_needs_review", "changed_file_labels": {"test_or_ci": 12, "api_or_backend": 8, "schema_or_data": 8, "dependency_or_build": 4}}, "text": "Graph query export: Feedback exposes missing tests or CI\nQuery id: test_ci_gap_after_feedback\nQuery type: motif_query\nIntent: Hard negatives for feedback/fix chains without adequate guardrails.\nMotif: test_ci_gap_after_feedback\nTraining usage: hard_negative\nGraph gold label: weak_supervision_needs_review\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#736\nEvidence:\nGraph motif: Feedback or fix context exposes missing test/CI guardrails\nMotif id: test_ci_gap_after_feedback\nPolarity: bad\nTraining usage: hard_negative\nSeverity: high\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#736\nGraph gold label: weak_supervision_needs_review\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: timogilvie/wavemill#736\nRepo: timogilvie/wavemill\nIssue/PR number: 736\nGraph consistency label: weak_supervision_needs_review\nNodes: 31\nEdges: 52\nNode types: {'pr_file': 8, 'link_quality': 6, 'commit': 5, 'alignment': 3, 'blueprint_finding': 3, '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, 'chain_has_link_quality': 6, 'comment_chain_links_commit': 5, 'alignment_uses_comment': 3, 'alignment_uses_finding': 3, 'comment_aligns_finding': 3, 'repo_has_thread': 1, 'thread_has_comment': 1, 'thread_has_comment_chain': 1, 'comment_has_chain': 1, 'thread_has_issue_chain': 1, 'issue_chain_has_comment_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'verification_or_tests': 5, 'test_or_ci': 3, 'ambiguous_needs_more_evidence': 3, 'blueprint_human_gap_alignment': 3, 'schema_or_data': 2, 'api_or_backend': 2, 'thread_has_human_issue_and_fix_context': 2, 'weak blueprint fit': 2, 'issue_or_pull_request_thread': 1, 'test_ci_gap': 1, 'dependency_or_build': 1, 'comment_has_related_commit_context': 1, 'partial blueprint fit': 1}\nOutcomes: {'ambiguous_needs_more_evidence': 6}\nQuality tiers: {'weak_supervision': 3, 'assumption_check': 3}\nCI labels: {}\nCurriculum targets:\n- Turn human feedback into regression tests and CI gates.\n- Penalize fixes that do not add or exercise verification for affected workflows.\nAssumption checks:\n- Did the fix add tests for the exact complaint?\n- Does CI run those tests, or is verification only implied?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/timogilvie/wavemill", "source_id": "graph-query-motif_query-08aea754b1e13678", "synthetic": false, "gold_label": "", "graph_label": "", "source_path": "/data/distillate/foundry_data/graph_queries/test_ci_gap_after_feedback/shard-0.jsonl", "bundle_label": "", "priority_band": "", "priority_score": 0, "repo_full_name": "timogilvie/wavemill", "source_dataset": "graph_queries/test_ci_gap_after_feedback", "training_usage": "hard_negative"}}}, {"ruleId": "foundry_test_ci_gap", "level": "error", "message": {"text": "Foundry mined test ci gap after feedback: timogilvie/wavemill"}, "properties": {"repobilityId": 420382, "scanner": "foundry_dataset", "fingerprint": "12ceb7a45f7f01289429bf52a9eea87ce9db7c4bd185870b5663f172679c55f5", "category": "testing", "severity": "high", "confidence": 0.78, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Imported from mined Foundry/Fable5 evidence with real GitHub/source provenance. Review source_id before acting.", "evidence": {"meta": {"kind": "graph_query_record", "title": "Feedback exposes missing tests or CI", "intent": "Hard negatives for feedback/fix chains without adequate guardrails.", "labels": {"test_ci_gap": 1, "weak blueprint fit": 2, "partial blueprint fit": 1, "verification_or_tests": 5, "issue_or_pull_request_thread": 1, "ambiguous_needs_more_evidence": 3, "blueprint_human_gap_alignment": 3, "comment_has_related_commit_context": 1, "thread_has_human_issue_and_fix_context": 2}, "source": "graph_query_export", "motif_id": "test_ci_gap_after_feedback", "outcomes": {"ambiguous_needs_more_evidence": 6}, "polarity": "bad", "query_id": "test_ci_gap_after_feedback", "severity": "high", "ci_labels": {}, "synthetic": false, "edge_count": 28, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 1, "thread_has_comment": 1, "alignment_uses_comment": 3, "alignment_uses_finding": 3, "chain_has_link_quality": 6, "comment_aligns_finding": 3, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 1, "comment_chain_links_commit": 5, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 1}, "node_count": 23, "node_types": {"repo": 1, "commit": 5, "thread": 1, "comment": 1, "alignment": 3, "fix_outcome": 1, "issue_chain": 1, "link_quality": 6, "comment_chain": 1, "blueprint_finding": 3}, "query_type": "motif_query", "thread_key": "timogilvie/wavemill#733", "issue_number": "733", "quality_tiers": {"assumption_check": 3, "weak_supervision": 3}, "repo_full_name": "timogilvie/wavemill", "training_usage": "hard_negative", "source_motif_id": "graph-pattern-motif-thread-4f4cf14471a43a80", "graph_gold_label": "weak_supervision_needs_review", "changed_file_labels": {}}, "text": "Graph query export: Feedback exposes missing tests or CI\nQuery id: test_ci_gap_after_feedback\nQuery type: motif_query\nIntent: Hard negatives for feedback/fix chains without adequate guardrails.\nMotif: test_ci_gap_after_feedback\nTraining usage: hard_negative\nGraph gold label: weak_supervision_needs_review\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#733\nEvidence:\nGraph motif: Feedback or fix context exposes missing test/CI guardrails\nMotif id: test_ci_gap_after_feedback\nPolarity: bad\nTraining usage: hard_negative\nSeverity: high\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#733\nGraph gold label: weak_supervision_needs_review\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: timogilvie/wavemill#733\nRepo: timogilvie/wavemill\nIssue/PR number: 733\nGraph consistency label: weak_supervision_needs_review\nNodes: 23\nEdges: 28\nNode types: {'link_quality': 6, 'commit': 5, 'alignment': 3, 'blueprint_finding': 3, 'thread': 1, 'repo': 1, 'comment': 1, 'comment_chain': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'chain_has_link_quality': 6, 'comment_chain_links_commit': 5, 'alignment_uses_comment': 3, 'alignment_uses_finding': 3, 'comment_aligns_finding': 3, 'repo_has_thread': 1, 'thread_has_comment': 1, 'thread_has_comment_chain': 1, 'comment_has_chain': 1, 'thread_has_issue_chain': 1, 'issue_chain_has_comment_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'verification_or_tests': 5, 'ambiguous_needs_more_evidence': 3, 'blueprint_human_gap_alignment': 3, 'thread_has_human_issue_and_fix_context': 2, 'weak blueprint fit': 2, 'issue_or_pull_request_thread': 1, 'test_ci_gap': 1, 'comment_has_related_commit_context': 1, 'partial blueprint fit': 1}\nOutcomes: {'ambiguous_needs_more_evidence': 6}\nQuality tiers: {'weak_supervision': 3, 'assumption_check': 3}\nCI labels: {}\nCurriculum targets:\n- Turn human feedback into regression tests and CI gates.\n- Penalize fixes that do not add or exercise verification for affected workflows.\nAssumption checks:\n- Did the fix add tests for the exact complaint?\n- Does CI run those tests, or is verification only implied?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/timogilvie/wavemill", "source_id": "graph-query-motif_query-8177c50f4a6ec895", "synthetic": false, "gold_label": "", "graph_label": "", "source_path": "/data/distillate/foundry_data/graph_queries/test_ci_gap_after_feedback/shard-0.jsonl", "bundle_label": "", "priority_band": "", "priority_score": 0, "repo_full_name": "timogilvie/wavemill", "source_dataset": "graph_queries/test_ci_gap_after_feedback", "training_usage": "hard_negative"}}}, {"ruleId": "foundry_test_ci_gap", "level": "error", "message": {"text": "Foundry mined test ci gap after feedback: timogilvie/wavemill"}, "properties": {"repobilityId": 420381, "scanner": "foundry_dataset", "fingerprint": "d971ecd22413ad5764b2397a354b81760369c365a9f2361039b6f9f6d2c7dd4f", "category": "testing", "severity": "high", "confidence": 0.78, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Imported from mined Foundry/Fable5 evidence with real GitHub/source provenance. Review source_id before acting.", "evidence": {"meta": {"kind": "graph_query_record", "title": "Feedback exposes missing tests or CI", "intent": "Hard negatives for feedback/fix chains without adequate guardrails.", "labels": {"test_or_ci": 3, "test_ci_gap": 1, "docs_or_claims": 2, "schema_or_data": 2, "source_or_other": 2, "weak blueprint fit": 2, "partial blueprint fit": 1, "verification_or_tests": 5, "issue_or_pull_request_thread": 1, "ambiguous_needs_more_evidence": 3, "blueprint_human_gap_alignment": 3, "comment_has_related_commit_context": 1, "thread_has_human_issue_and_fix_context": 2}, "source": "graph_query_export", "motif_id": "test_ci_gap_after_feedback", "outcomes": {"ambiguous_needs_more_evidence": 6}, "polarity": "bad", "query_id": "test_ci_gap_after_feedback", "severity": "high", "ci_labels": {}, "synthetic": false, "edge_count": 55, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 1, "thread_has_comment": 1, "thread_touches_file": 9, "alignment_uses_comment": 3, "alignment_uses_finding": 3, "chain_has_link_quality": 6, "comment_aligns_finding": 3, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "issue_chain_touches_file": 9, "thread_has_comment_chain": 1, "comment_chain_links_commit": 5, "comment_chain_touches_file": 9, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 1}, "node_count": 32, "node_types": {"repo": 1, "commit": 5, "thread": 1, "comment": 1, "pr_file": 9, "alignment": 3, "fix_outcome": 1, "issue_chain": 1, "link_quality": 6, "comment_chain": 1, "blueprint_finding": 3}, "query_type": "motif_query", "thread_key": "timogilvie/wavemill#732", "issue_number": "732", "quality_tiers": {"assumption_check": 3, "weak_supervision": 3}, "repo_full_name": "timogilvie/wavemill", "training_usage": "hard_negative", "source_motif_id": "graph-pattern-motif-thread-fcd2029fdcd375bc", "graph_gold_label": "weak_supervision_needs_review", "changed_file_labels": {"test_or_ci": 12, "docs_or_claims": 8, "schema_or_data": 8, "source_or_other": 8}}, "text": "Graph query export: Feedback exposes missing tests or CI\nQuery id: test_ci_gap_after_feedback\nQuery type: motif_query\nIntent: Hard negatives for feedback/fix chains without adequate guardrails.\nMotif: test_ci_gap_after_feedback\nTraining usage: hard_negative\nGraph gold label: weak_supervision_needs_review\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#732\nEvidence:\nGraph motif: Feedback or fix context exposes missing test/CI guardrails\nMotif id: test_ci_gap_after_feedback\nPolarity: bad\nTraining usage: hard_negative\nSeverity: high\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#732\nGraph gold label: weak_supervision_needs_review\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: timogilvie/wavemill#732\nRepo: timogilvie/wavemill\nIssue/PR number: 732\nGraph consistency label: weak_supervision_needs_review\nNodes: 32\nEdges: 55\nNode types: {'pr_file': 9, 'link_quality': 6, 'commit': 5, 'alignment': 3, 'blueprint_finding': 3, 'thread': 1, 'repo': 1, 'comment': 1, 'comment_chain': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'thread_touches_file': 9, 'comment_chain_touches_file': 9, 'issue_chain_touches_file': 9, 'chain_has_link_quality': 6, 'comment_chain_links_commit': 5, 'alignment_uses_comment': 3, 'alignment_uses_finding': 3, 'comment_aligns_finding': 3, 'repo_has_thread': 1, 'thread_has_comment': 1, 'thread_has_comment_chain': 1, 'comment_has_chain': 1, 'thread_has_issue_chain': 1, 'issue_chain_has_comment_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'verification_or_tests': 5, 'test_or_ci': 3, 'ambiguous_needs_more_evidence': 3, 'blueprint_human_gap_alignment': 3, 'docs_or_claims': 2, 'source_or_other': 2, 'schema_or_data': 2, 'thread_has_human_issue_and_fix_context': 2, 'weak blueprint fit': 2, 'issue_or_pull_request_thread': 1, 'test_ci_gap': 1, 'comment_has_related_commit_context': 1, 'partial blueprint fit': 1}\nOutcomes: {'ambiguous_needs_more_evidence': 6}\nQuality tiers: {'weak_supervision': 3, 'assumption_check': 3}\nCI labels: {}\nCurriculum targets:\n- Turn human feedback into regression tests and CI gates.\n- Penalize fixes that do not add or exercise verification for affected workflows.\nAssumption checks:\n- Did the fix add tests for the exact complaint?\n- Does CI run those tests, or is verification only implied?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/timogilvie/wavemill", "source_id": "graph-query-motif_query-cef9025ff6f9f1a5", "synthetic": false, "gold_label": "", "graph_label": "", "source_path": "/data/distillate/foundry_data/graph_queries/test_ci_gap_after_feedback/shard-0.jsonl", "bundle_label": "", "priority_band": "", "priority_score": 0, "repo_full_name": "timogilvie/wavemill", "source_dataset": "graph_queries/test_ci_gap_after_feedback", "training_usage": "hard_negative"}}}, {"ruleId": "foundry_test_ci_gap", "level": "error", "message": {"text": "Foundry mined test ci gap after feedback: timogilvie/wavemill"}, "properties": {"repobilityId": 420380, "scanner": "foundry_dataset", "fingerprint": "a0bd502e5a0b27c653e7c2de9166006e92bcb1727942c5b6c620463fcb3ae84f", "category": "testing", "severity": "high", "confidence": 0.78, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Imported from mined Foundry/Fable5 evidence with real GitHub/source provenance. Review source_id before acting.", "evidence": {"meta": {"kind": "graph_query_record", "title": "Feedback exposes missing tests or CI", "intent": "Hard negatives for feedback/fix chains without adequate guardrails.", "labels": {"test_ci_gap": 1, "weak blueprint fit": 2, "partial blueprint fit": 1, "verification_or_tests": 5, "issue_or_pull_request_thread": 1, "ambiguous_needs_more_evidence": 3, "blueprint_human_gap_alignment": 3, "comment_has_related_commit_context": 1, "thread_has_human_issue_and_fix_context": 2}, "source": "graph_query_export", "motif_id": "test_ci_gap_after_feedback", "outcomes": {"ambiguous_needs_more_evidence": 6}, "polarity": "bad", "query_id": "test_ci_gap_after_feedback", "severity": "high", "ci_labels": {}, "synthetic": false, "edge_count": 28, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 1, "thread_has_comment": 1, "alignment_uses_comment": 3, "alignment_uses_finding": 3, "chain_has_link_quality": 6, "comment_aligns_finding": 3, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 1, "comment_chain_links_commit": 5, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 1}, "node_count": 23, "node_types": {"repo": 1, "commit": 5, "thread": 1, "comment": 1, "alignment": 3, "fix_outcome": 1, "issue_chain": 1, "link_quality": 6, "comment_chain": 1, "blueprint_finding": 3}, "query_type": "motif_query", "thread_key": "timogilvie/wavemill#718", "issue_number": "718", "quality_tiers": {"high_confidence": 3, "assumption_check": 3}, "repo_full_name": "timogilvie/wavemill", "training_usage": "hard_negative", "source_motif_id": "graph-pattern-motif-thread-a319d284c0c4126b", "graph_gold_label": "supported_by_high_confidence_link", "changed_file_labels": {}}, "text": "Graph query export: Feedback exposes missing tests or CI\nQuery id: test_ci_gap_after_feedback\nQuery type: motif_query\nIntent: Hard negatives for feedback/fix chains without adequate guardrails.\nMotif: test_ci_gap_after_feedback\nTraining usage: hard_negative\nGraph gold label: supported_by_high_confidence_link\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#718\nEvidence:\nGraph motif: Feedback or fix context exposes missing test/CI guardrails\nMotif id: test_ci_gap_after_feedback\nPolarity: bad\nTraining usage: hard_negative\nSeverity: high\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#718\nGraph gold label: supported_by_high_confidence_link\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: timogilvie/wavemill#718\nRepo: timogilvie/wavemill\nIssue/PR number: 718\nGraph consistency label: supported_by_high_confidence_link\nNodes: 23\nEdges: 28\nNode types: {'link_quality': 6, 'commit': 5, 'alignment': 3, 'blueprint_finding': 3, 'thread': 1, 'repo': 1, 'comment': 1, 'comment_chain': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'chain_has_link_quality': 6, 'comment_chain_links_commit': 5, 'alignment_uses_comment': 3, 'alignment_uses_finding': 3, 'comment_aligns_finding': 3, 'repo_has_thread': 1, 'thread_has_comment': 1, 'thread_has_comment_chain': 1, 'comment_has_chain': 1, 'thread_has_issue_chain': 1, 'issue_chain_has_comment_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'verification_or_tests': 5, 'ambiguous_needs_more_evidence': 3, 'blueprint_human_gap_alignment': 3, 'thread_has_human_issue_and_fix_context': 2, 'weak blueprint fit': 2, 'issue_or_pull_request_thread': 1, 'test_ci_gap': 1, 'comment_has_related_commit_context': 1, 'partial blueprint fit': 1}\nOutcomes: {'ambiguous_needs_more_evidence': 6}\nQuality tiers: {'high_confidence': 3, 'assumption_check': 3}\nCI labels: {}\nCurriculum targets:\n- Turn human feedback into regression tests and CI gates.\n- Penalize fixes that do not add or exercise verification for affected workflows.\nAssumption checks:\n- Did the fix add tests for the exact complaint?\n- Does CI run those tests, or is verification only implied?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/timogilvie/wavemill", "source_id": "graph-query-motif_query-51ea0c6007c3c41a", "synthetic": false, "gold_label": "", "graph_label": "", "source_path": "/data/distillate/foundry_data/graph_queries/test_ci_gap_after_feedback/shard-0.jsonl", "bundle_label": "", "priority_band": "", "priority_score": 0, "repo_full_name": "timogilvie/wavemill", "source_dataset": "graph_queries/test_ci_gap_after_feedback", "training_usage": "hard_negative"}}}, {"ruleId": "foundry_test_ci_gap", "level": "error", "message": {"text": "Foundry mined test ci gap after feedback: timogilvie/wavemill"}, "properties": {"repobilityId": 420379, "scanner": "foundry_dataset", "fingerprint": "3f9c4a0e82c312413937fd4976a21ffdcfe7aee3c78da9f5b3eef3d4898ff4b2", "category": "testing", "severity": "high", "confidence": 0.78, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Imported from mined Foundry/Fable5 evidence with real GitHub/source provenance. Review source_id before acting.", "evidence": {"meta": {"kind": "graph_query_record", "title": "Feedback exposes missing tests or CI", "intent": "Hard negatives for feedback/fix chains without adequate guardrails.", "labels": {"test_ci_gap": 1, "weak blueprint fit": 2, "partial blueprint fit": 1, "verification_or_tests": 5, "issue_or_pull_request_thread": 1, "ambiguous_needs_more_evidence": 3, "blueprint_human_gap_alignment": 3, "comment_has_related_commit_context": 1, "thread_has_human_issue_and_fix_context": 2}, "source": "graph_query_export", "motif_id": "test_ci_gap_after_feedback", "outcomes": {"ambiguous_needs_more_evidence": 6}, "polarity": "bad", "query_id": "test_ci_gap_after_feedback", "severity": "high", "ci_labels": {}, "synthetic": false, "edge_count": 28, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 1, "thread_has_comment": 1, "alignment_uses_comment": 3, "alignment_uses_finding": 3, "chain_has_link_quality": 6, "comment_aligns_finding": 3, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 1, "comment_chain_links_commit": 5, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 1}, "node_count": 23, "node_types": {"repo": 1, "commit": 5, "thread": 1, "comment": 1, "alignment": 3, "fix_outcome": 1, "issue_chain": 1, "link_quality": 6, "comment_chain": 1, "blueprint_finding": 3}, "query_type": "motif_query", "thread_key": "timogilvie/wavemill#717", "issue_number": "717", "quality_tiers": {"high_confidence": 3, "assumption_check": 3}, "repo_full_name": "timogilvie/wavemill", "training_usage": "hard_negative", "source_motif_id": "graph-pattern-motif-thread-a1bddb9108380475", "graph_gold_label": "supported_by_high_confidence_link", "changed_file_labels": {}}, "text": "Graph query export: Feedback exposes missing tests or CI\nQuery id: test_ci_gap_after_feedback\nQuery type: motif_query\nIntent: Hard negatives for feedback/fix chains without adequate guardrails.\nMotif: test_ci_gap_after_feedback\nTraining usage: hard_negative\nGraph gold label: supported_by_high_confidence_link\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#717\nEvidence:\nGraph motif: Feedback or fix context exposes missing test/CI guardrails\nMotif id: test_ci_gap_after_feedback\nPolarity: bad\nTraining usage: hard_negative\nSeverity: high\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#717\nGraph gold label: supported_by_high_confidence_link\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: timogilvie/wavemill#717\nRepo: timogilvie/wavemill\nIssue/PR number: 717\nGraph consistency label: supported_by_high_confidence_link\nNodes: 23\nEdges: 28\nNode types: {'link_quality': 6, 'commit': 5, 'alignment': 3, 'blueprint_finding': 3, 'thread': 1, 'repo': 1, 'comment': 1, 'comment_chain': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'chain_has_link_quality': 6, 'comment_chain_links_commit': 5, 'alignment_uses_comment': 3, 'alignment_uses_finding': 3, 'comment_aligns_finding': 3, 'repo_has_thread': 1, 'thread_has_comment': 1, 'thread_has_comment_chain': 1, 'comment_has_chain': 1, 'thread_has_issue_chain': 1, 'issue_chain_has_comment_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'verification_or_tests': 5, 'ambiguous_needs_more_evidence': 3, 'blueprint_human_gap_alignment': 3, 'thread_has_human_issue_and_fix_context': 2, 'weak blueprint fit': 2, 'issue_or_pull_request_thread': 1, 'test_ci_gap': 1, 'comment_has_related_commit_context': 1, 'partial blueprint fit': 1}\nOutcomes: {'ambiguous_needs_more_evidence': 6}\nQuality tiers: {'high_confidence': 3, 'assumption_check': 3}\nCI labels: {}\nCurriculum targets:\n- Turn human feedback into regression tests and CI gates.\n- Penalize fixes that do not add or exercise verification for affected workflows.\nAssumption checks:\n- Did the fix add tests for the exact complaint?\n- Does CI run those tests, or is verification only implied?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/timogilvie/wavemill", "source_id": "graph-query-motif_query-5caa9e4a21848ad8", "synthetic": false, "gold_label": "", "graph_label": "", "source_path": "/data/distillate/foundry_data/graph_queries/test_ci_gap_after_feedback/shard-0.jsonl", "bundle_label": "", "priority_band": "", "priority_score": 0, "repo_full_name": "timogilvie/wavemill", "source_dataset": "graph_queries/test_ci_gap_after_feedback", "training_usage": "hard_negative"}}}, {"ruleId": "foundry_test_ci_gap", "level": "error", "message": {"text": "Foundry mined test ci gap after feedback: timogilvie/wavemill"}, "properties": {"repobilityId": 420378, "scanner": "foundry_dataset", "fingerprint": "97b6dc3aaf2d8a893f3532d2d560e224a24c83611a5f5bc9efda34a283c44179", "category": "testing", "severity": "high", "confidence": 0.78, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Imported from mined Foundry/Fable5 evidence with real GitHub/source provenance. Review source_id before acting.", "evidence": {"meta": {"kind": "graph_query_record", "title": "Feedback exposes missing tests or CI", "intent": "Hard negatives for feedback/fix chains without adequate guardrails.", "labels": {"bug_fix": 2, "test_ci_gap": 1, "weak blueprint fit": 2, "partial blueprint fit": 1, "verification_or_tests": 3, "issue_or_pull_request_thread": 1, "blueprint_human_gap_alignment": 3, "thread_has_human_issue_and_fix_context": 2, "claimed_resolved_with_verification_signal": 3, "human_reported_issue_then_verified_fix_attempt": 1}, "source": "graph_query_export", "motif_id": "test_ci_gap_after_feedback", "outcomes": {"claimed_resolved_with_verification_signal": 6}, "polarity": "bad", "query_id": "test_ci_gap_after_feedback", "severity": "high", "ci_labels": {}, "synthetic": false, "edge_count": 28, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 1, "thread_has_comment": 1, "alignment_uses_comment": 3, "alignment_uses_finding": 3, "chain_has_link_quality": 6, "comment_aligns_finding": 3, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 1, "comment_chain_links_commit": 5, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 1}, "node_count": 23, "node_types": {"repo": 1, "commit": 5, "thread": 1, "comment": 1, "alignment": 3, "fix_outcome": 1, "issue_chain": 1, "link_quality": 6, "comment_chain": 1, "blueprint_finding": 3}, "query_type": "motif_query", "thread_key": "timogilvie/wavemill#711", "issue_number": "711", "quality_tiers": {"high_confidence": 3, "assumption_check": 3}, "repo_full_name": "timogilvie/wavemill", "training_usage": "hard_negative", "source_motif_id": "graph-pattern-motif-thread-3a67b39dc83ec480", "graph_gold_label": "supported_by_verification_signal", "changed_file_labels": {}}, "text": "Graph query export: Feedback exposes missing tests or CI\nQuery id: test_ci_gap_after_feedback\nQuery type: motif_query\nIntent: Hard negatives for feedback/fix chains without adequate guardrails.\nMotif: test_ci_gap_after_feedback\nTraining usage: hard_negative\nGraph gold label: supported_by_verification_signal\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#711\nEvidence:\nGraph motif: Feedback or fix context exposes missing test/CI guardrails\nMotif id: test_ci_gap_after_feedback\nPolarity: bad\nTraining usage: hard_negative\nSeverity: high\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#711\nGraph gold label: supported_by_verification_signal\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: timogilvie/wavemill#711\nRepo: timogilvie/wavemill\nIssue/PR number: 711\nGraph consistency label: supported_by_verification_signal\nNodes: 23\nEdges: 28\nNode types: {'link_quality': 6, 'commit': 5, 'alignment': 3, 'blueprint_finding': 3, 'thread': 1, 'repo': 1, 'comment': 1, 'comment_chain': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'chain_has_link_quality': 6, 'comment_chain_links_commit': 5, 'alignment_uses_comment': 3, 'alignment_uses_finding': 3, 'comment_aligns_finding': 3, 'repo_has_thread': 1, 'thread_has_comment': 1, 'thread_has_comment_chain': 1, 'comment_has_chain': 1, 'thread_has_issue_chain': 1, 'issue_chain_has_comment_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'verification_or_tests': 3, 'claimed_resolved_with_verification_signal': 3, 'blueprint_human_gap_alignment': 3, 'bug_fix': 2, 'thread_has_human_issue_and_fix_context': 2, 'weak blueprint fit': 2, 'issue_or_pull_request_thread': 1, 'test_ci_gap': 1, 'human_reported_issue_then_verified_fix_attempt': 1, 'partial blueprint fit': 1}\nOutcomes: {'claimed_resolved_with_verification_signal': 6}\nQuality tiers: {'high_confidence': 3, 'assumption_check': 3}\nCI labels: {}\nCurriculum targets:\n- Turn human feedback into regression tests and CI gates.\n- Penalize fixes that do not add or exercise verification for affected workflows.\nAssumption checks:\n- Did the fix add tests for the exact complaint?\n- Does CI run those tests, or is verification only implied?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/timogilvie/wavemill", "source_id": "graph-query-motif_query-cc674204a08fefdc", "synthetic": false, "gold_label": "", "graph_label": "", "source_path": "/data/distillate/foundry_data/graph_queries/test_ci_gap_after_feedback/shard-0.jsonl", "bundle_label": "", "priority_band": "", "priority_score": 0, "repo_full_name": "timogilvie/wavemill", "source_dataset": "graph_queries/test_ci_gap_after_feedback", "training_usage": "hard_negative"}}}, {"ruleId": "foundry_test_ci_gap", "level": "error", "message": {"text": "Foundry mined test ci gap after feedback: timogilvie/wavemill"}, "properties": {"repobilityId": 420377, "scanner": "foundry_dataset", "fingerprint": "df26c08abe18e59240790f47fa310fab3147ed6e9697174342ee12e7b12cfdb2", "category": "testing", "severity": "high", "confidence": 0.78, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Imported from mined Foundry/Fable5 evidence with real GitHub/source provenance. Review source_id before acting.", "evidence": {"meta": {"kind": "graph_query_record", "title": "Feedback exposes missing tests or CI", "intent": "Hard negatives for feedback/fix chains without adequate guardrails.", "labels": {"bug_fix": 1, "test_ci_gap": 1, "weak blueprint fit": 2, "partial blueprint fit": 1, "verification_or_tests": 4, "issue_or_pull_request_thread": 1, "blueprint_human_gap_alignment": 3, "thread_has_human_issue_and_fix_context": 2, "claimed_resolved_with_verification_signal": 3, "human_reported_issue_then_verified_fix_attempt": 1}, "source": "graph_query_export", "motif_id": "test_ci_gap_after_feedback", "outcomes": {"claimed_resolved_with_verification_signal": 6}, "polarity": "bad", "query_id": "test_ci_gap_after_feedback", "severity": "high", "ci_labels": {}, "synthetic": false, "edge_count": 28, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 1, "thread_has_comment": 1, "alignment_uses_comment": 3, "alignment_uses_finding": 3, "chain_has_link_quality": 6, "comment_aligns_finding": 3, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 1, "comment_chain_links_commit": 5, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 1}, "node_count": 23, "node_types": {"repo": 1, "commit": 5, "thread": 1, "comment": 1, "alignment": 3, "fix_outcome": 1, "issue_chain": 1, "link_quality": 6, "comment_chain": 1, "blueprint_finding": 3}, "query_type": "motif_query", "thread_key": "timogilvie/wavemill#707", "issue_number": "707", "quality_tiers": {"high_confidence": 3, "assumption_check": 3}, "repo_full_name": "timogilvie/wavemill", "training_usage": "hard_negative", "source_motif_id": "graph-pattern-motif-thread-5d0d0aec930ed17c", "graph_gold_label": "supported_by_verification_signal", "changed_file_labels": {}}, "text": "Graph query export: Feedback exposes missing tests or CI\nQuery id: test_ci_gap_after_feedback\nQuery type: motif_query\nIntent: Hard negatives for feedback/fix chains without adequate guardrails.\nMotif: test_ci_gap_after_feedback\nTraining usage: hard_negative\nGraph gold label: supported_by_verification_signal\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#707\nEvidence:\nGraph motif: Feedback or fix context exposes missing test/CI guardrails\nMotif id: test_ci_gap_after_feedback\nPolarity: bad\nTraining usage: hard_negative\nSeverity: high\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#707\nGraph gold label: supported_by_verification_signal\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: timogilvie/wavemill#707\nRepo: timogilvie/wavemill\nIssue/PR number: 707\nGraph consistency label: supported_by_verification_signal\nNodes: 23\nEdges: 28\nNode types: {'link_quality': 6, 'commit': 5, 'alignment': 3, 'blueprint_finding': 3, 'thread': 1, 'repo': 1, 'comment': 1, 'comment_chain': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'chain_has_link_quality': 6, 'comment_chain_links_commit': 5, 'alignment_uses_comment': 3, 'alignment_uses_finding': 3, 'comment_aligns_finding': 3, 'repo_has_thread': 1, 'thread_has_comment': 1, 'thread_has_comment_chain': 1, 'comment_has_chain': 1, 'thread_has_issue_chain': 1, 'issue_chain_has_comment_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'verification_or_tests': 4, 'claimed_resolved_with_verification_signal': 3, 'blueprint_human_gap_alignment': 3, 'thread_has_human_issue_and_fix_context': 2, 'weak blueprint fit': 2, 'issue_or_pull_request_thread': 1, 'test_ci_gap': 1, 'human_reported_issue_then_verified_fix_attempt': 1, 'bug_fix': 1, 'partial blueprint fit': 1}\nOutcomes: {'claimed_resolved_with_verification_signal': 6}\nQuality tiers: {'high_confidence': 3, 'assumption_check': 3}\nCI labels: {}\nCurriculum targets:\n- Turn human feedback into regression tests and CI gates.\n- Penalize fixes that do not add or exercise verification for affected workflows.\nAssumption checks:\n- Did the fix add tests for the exact complaint?\n- Does CI run those tests, or is verification only implied?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/timogilvie/wavemill", "source_id": "graph-query-motif_query-c626d31e02dc5f71", "synthetic": false, "gold_label": "", "graph_label": "", "source_path": "/data/distillate/foundry_data/graph_queries/test_ci_gap_after_feedback/shard-0.jsonl", "bundle_label": "", "priority_band": "", "priority_score": 0, "repo_full_name": "timogilvie/wavemill", "source_dataset": "graph_queries/test_ci_gap_after_feedback", "training_usage": "hard_negative"}}}, {"ruleId": "foundry_test_ci_gap", "level": "error", "message": {"text": "Foundry mined test ci gap after feedback: timogilvie/wavemill"}, "properties": {"repobilityId": 420376, "scanner": "foundry_dataset", "fingerprint": "54b059d42f431384ab584ba73d78589e37193f86bf97bd771401d60b6e1f4243", "category": "testing", "severity": "high", "confidence": 0.78, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Imported from mined Foundry/Fable5 evidence with real GitHub/source provenance. Review source_id before acting.", "evidence": {"meta": {"kind": "graph_query_record", "title": "Feedback exposes missing tests or CI", "intent": "Hard negatives for feedback/fix chains without adequate guardrails.", "labels": {"test_ci_gap": 1, "weak blueprint fit": 2, "partial blueprint fit": 1, "verification_or_tests": 5, "issue_or_pull_request_thread": 1, "ambiguous_needs_more_evidence": 3, "blueprint_human_gap_alignment": 3, "comment_has_related_commit_context": 1, "thread_has_human_issue_and_fix_context": 2}, "source": "graph_query_export", "motif_id": "test_ci_gap_after_feedback", "outcomes": {"ambiguous_needs_more_evidence": 6}, "polarity": "bad", "query_id": "test_ci_gap_after_feedback", "severity": "high", "ci_labels": {}, "synthetic": false, "edge_count": 28, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 1, "thread_has_comment": 1, "alignment_uses_comment": 3, "alignment_uses_finding": 3, "chain_has_link_quality": 6, "comment_aligns_finding": 3, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 1, "comment_chain_links_commit": 5, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 1}, "node_count": 23, "node_types": {"repo": 1, "commit": 5, "thread": 1, "comment": 1, "alignment": 3, "fix_outcome": 1, "issue_chain": 1, "link_quality": 6, "comment_chain": 1, "blueprint_finding": 3}, "query_type": "motif_query", "thread_key": "timogilvie/wavemill#706", "issue_number": "706", "quality_tiers": {"high_confidence": 3, "assumption_check": 3}, "repo_full_name": "timogilvie/wavemill", "training_usage": "hard_negative", "source_motif_id": "graph-pattern-motif-thread-d1f967fab51e79ee", "graph_gold_label": "supported_by_high_confidence_link", "changed_file_labels": {}}, "text": "Graph query export: Feedback exposes missing tests or CI\nQuery id: test_ci_gap_after_feedback\nQuery type: motif_query\nIntent: Hard negatives for feedback/fix chains without adequate guardrails.\nMotif: test_ci_gap_after_feedback\nTraining usage: hard_negative\nGraph gold label: supported_by_high_confidence_link\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#706\nEvidence:\nGraph motif: Feedback or fix context exposes missing test/CI guardrails\nMotif id: test_ci_gap_after_feedback\nPolarity: bad\nTraining usage: hard_negative\nSeverity: high\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#706\nGraph gold label: supported_by_high_confidence_link\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: timogilvie/wavemill#706\nRepo: timogilvie/wavemill\nIssue/PR number: 706\nGraph consistency label: supported_by_high_confidence_link\nNodes: 23\nEdges: 28\nNode types: {'link_quality': 6, 'commit': 5, 'alignment': 3, 'blueprint_finding': 3, 'thread': 1, 'repo': 1, 'comment': 1, 'comment_chain': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'chain_has_link_quality': 6, 'comment_chain_links_commit': 5, 'alignment_uses_comment': 3, 'alignment_uses_finding': 3, 'comment_aligns_finding': 3, 'repo_has_thread': 1, 'thread_has_comment': 1, 'thread_has_comment_chain': 1, 'comment_has_chain': 1, 'thread_has_issue_chain': 1, 'issue_chain_has_comment_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'verification_or_tests': 5, 'ambiguous_needs_more_evidence': 3, 'blueprint_human_gap_alignment': 3, 'thread_has_human_issue_and_fix_context': 2, 'weak blueprint fit': 2, 'issue_or_pull_request_thread': 1, 'test_ci_gap': 1, 'comment_has_related_commit_context': 1, 'partial blueprint fit': 1}\nOutcomes: {'ambiguous_needs_more_evidence': 6}\nQuality tiers: {'high_confidence': 3, 'assumption_check': 3}\nCI labels: {}\nCurriculum targets:\n- Turn human feedback into regression tests and CI gates.\n- Penalize fixes that do not add or exercise verification for affected workflows.\nAssumption checks:\n- Did the fix add tests for the exact complaint?\n- Does CI run those tests, or is verification only implied?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/timogilvie/wavemill", "source_id": "graph-query-motif_query-dd4ad28c9df77d68", "synthetic": false, "gold_label": "", "graph_label": "", "source_path": "/data/distillate/foundry_data/graph_queries/test_ci_gap_after_feedback/shard-0.jsonl", "bundle_label": "", "priority_band": "", "priority_score": 0, "repo_full_name": "timogilvie/wavemill", "source_dataset": "graph_queries/test_ci_gap_after_feedback", "training_usage": "hard_negative"}}}, {"ruleId": "foundry_test_ci_gap", "level": "error", "message": {"text": "Foundry mined test ci gap after feedback: timogilvie/wavemill"}, "properties": {"repobilityId": 420375, "scanner": "foundry_dataset", "fingerprint": "01b0662442e63d2cdef53decc87bdbd9cb673fb6ec79e5e53fd62f50451bc159", "category": "testing", "severity": "high", "confidence": 0.78, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Imported from mined Foundry/Fable5 evidence with real GitHub/source provenance. Review source_id before acting.", "evidence": {"meta": {"kind": "graph_query_record", "title": "Feedback exposes missing tests or CI", "intent": "Hard negatives for feedback/fix chains without adequate guardrails.", "labels": {"bug_fix": 1, "test_ci_gap": 1, "weak blueprint fit": 2, "partial blueprint fit": 1, "verification_or_tests": 4, "issue_or_pull_request_thread": 1, "blueprint_human_gap_alignment": 3, "thread_has_human_issue_and_fix_context": 2, "claimed_resolved_with_verification_signal": 3, "human_reported_issue_then_verified_fix_attempt": 1}, "source": "graph_query_export", "motif_id": "test_ci_gap_after_feedback", "outcomes": {"claimed_resolved_with_verification_signal": 6}, "polarity": "bad", "query_id": "test_ci_gap_after_feedback", "severity": "high", "ci_labels": {}, "synthetic": false, "edge_count": 28, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 1, "thread_has_comment": 1, "alignment_uses_comment": 3, "alignment_uses_finding": 3, "chain_has_link_quality": 6, "comment_aligns_finding": 3, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 1, "comment_chain_links_commit": 5, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 1}, "node_count": 23, "node_types": {"repo": 1, "commit": 5, "thread": 1, "comment": 1, "alignment": 3, "fix_outcome": 1, "issue_chain": 1, "link_quality": 6, "comment_chain": 1, "blueprint_finding": 3}, "query_type": "motif_query", "thread_key": "timogilvie/wavemill#704", "issue_number": "704", "quality_tiers": {"high_confidence": 3, "assumption_check": 3}, "repo_full_name": "timogilvie/wavemill", "training_usage": "hard_negative", "source_motif_id": "graph-pattern-motif-thread-452b5fa21f6787dd", "graph_gold_label": "supported_by_verification_signal", "changed_file_labels": {}}, "text": "Graph query export: Feedback exposes missing tests or CI\nQuery id: test_ci_gap_after_feedback\nQuery type: motif_query\nIntent: Hard negatives for feedback/fix chains without adequate guardrails.\nMotif: test_ci_gap_after_feedback\nTraining usage: hard_negative\nGraph gold label: supported_by_verification_signal\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#704\nEvidence:\nGraph motif: Feedback or fix context exposes missing test/CI guardrails\nMotif id: test_ci_gap_after_feedback\nPolarity: bad\nTraining usage: hard_negative\nSeverity: high\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#704\nGraph gold label: supported_by_verification_signal\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: timogilvie/wavemill#704\nRepo: timogilvie/wavemill\nIssue/PR number: 704\nGraph consistency label: supported_by_verification_signal\nNodes: 23\nEdges: 28\nNode types: {'link_quality': 6, 'commit': 5, 'alignment': 3, 'blueprint_finding': 3, 'thread': 1, 'repo': 1, 'comment': 1, 'comment_chain': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'chain_has_link_quality': 6, 'comment_chain_links_commit': 5, 'alignment_uses_comment': 3, 'alignment_uses_finding': 3, 'comment_aligns_finding': 3, 'repo_has_thread': 1, 'thread_has_comment': 1, 'thread_has_comment_chain': 1, 'comment_has_chain': 1, 'thread_has_issue_chain': 1, 'issue_chain_has_comment_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'verification_or_tests': 4, 'claimed_resolved_with_verification_signal': 3, 'blueprint_human_gap_alignment': 3, 'thread_has_human_issue_and_fix_context': 2, 'weak blueprint fit': 2, 'issue_or_pull_request_thread': 1, 'test_ci_gap': 1, 'human_reported_issue_then_verified_fix_attempt': 1, 'bug_fix': 1, 'partial blueprint fit': 1}\nOutcomes: {'claimed_resolved_with_verification_signal': 6}\nQuality tiers: {'high_confidence': 3, 'assumption_check': 3}\nCI labels: {}\nCurriculum targets:\n- Turn human feedback into regression tests and CI gates.\n- Penalize fixes that do not add or exercise verification for affected workflows.\nAssumption checks:\n- Did the fix add tests for the exact complaint?\n- Does CI run those tests, or is verification only implied?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/timogilvie/wavemill", "source_id": "graph-query-motif_query-e5d230adf95ad296", "synthetic": false, "gold_label": "", "graph_label": "", "source_path": "/data/distillate/foundry_data/graph_queries/test_ci_gap_after_feedback/shard-0.jsonl", "bundle_label": "", "priority_band": "", "priority_score": 0, "repo_full_name": "timogilvie/wavemill", "source_dataset": "graph_queries/test_ci_gap_after_feedback", "training_usage": "hard_negative"}}}, {"ruleId": "foundry_test_ci_gap", "level": "error", "message": {"text": "Foundry mined test ci gap after feedback: timogilvie/wavemill"}, "properties": {"repobilityId": 420374, "scanner": "foundry_dataset", "fingerprint": "0f9515995d2451d426c3fea7735bf9c9669c51400acdb922c9ea8051ef121d17", "category": "testing", "severity": "high", "confidence": 0.78, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Imported from mined Foundry/Fable5 evidence with real GitHub/source provenance. Review source_id before acting.", "evidence": {"meta": {"kind": "graph_query_record", "title": "Feedback exposes missing tests or CI", "intent": "Hard negatives for feedback/fix chains without adequate guardrails.", "labels": {"bug_fix": 1, "test_ci_gap": 1, "commit_general": 1, "weak blueprint fit": 2, "partial blueprint fit": 1, "verification_or_tests": 3, "issue_or_pull_request_thread": 1, "blueprint_human_gap_alignment": 3, "thread_has_human_issue_and_fix_context": 2, "claimed_resolved_with_verification_signal": 3, "human_reported_issue_then_verified_fix_attempt": 1}, "source": "graph_query_export", "motif_id": "test_ci_gap_after_feedback", "outcomes": {"claimed_resolved_with_verification_signal": 6}, "polarity": "bad", "query_id": "test_ci_gap_after_feedback", "severity": "high", "ci_labels": {}, "synthetic": false, "edge_count": 28, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 1, "thread_has_comment": 1, "alignment_uses_comment": 3, "alignment_uses_finding": 3, "chain_has_link_quality": 6, "comment_aligns_finding": 3, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 1, "comment_chain_links_commit": 5, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 1}, "node_count": 23, "node_types": {"repo": 1, "commit": 5, "thread": 1, "comment": 1, "alignment": 3, "fix_outcome": 1, "issue_chain": 1, "link_quality": 6, "comment_chain": 1, "blueprint_finding": 3}, "query_type": "motif_query", "thread_key": "timogilvie/wavemill#703", "issue_number": "703", "quality_tiers": {"high_confidence": 3, "assumption_check": 3}, "repo_full_name": "timogilvie/wavemill", "training_usage": "hard_negative", "source_motif_id": "graph-pattern-motif-thread-a4d5b7579280cf1e", "graph_gold_label": "supported_by_verification_signal", "changed_file_labels": {}}, "text": "Graph query export: Feedback exposes missing tests or CI\nQuery id: test_ci_gap_after_feedback\nQuery type: motif_query\nIntent: Hard negatives for feedback/fix chains without adequate guardrails.\nMotif: test_ci_gap_after_feedback\nTraining usage: hard_negative\nGraph gold label: supported_by_verification_signal\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#703\nEvidence:\nGraph motif: Feedback or fix context exposes missing test/CI guardrails\nMotif id: test_ci_gap_after_feedback\nPolarity: bad\nTraining usage: hard_negative\nSeverity: high\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#703\nGraph gold label: supported_by_verification_signal\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: timogilvie/wavemill#703\nRepo: timogilvie/wavemill\nIssue/PR number: 703\nGraph consistency label: supported_by_verification_signal\nNodes: 23\nEdges: 28\nNode types: {'link_quality': 6, 'commit': 5, 'alignment': 3, 'blueprint_finding': 3, 'thread': 1, 'repo': 1, 'comment': 1, 'comment_chain': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'chain_has_link_quality': 6, 'comment_chain_links_commit': 5, 'alignment_uses_comment': 3, 'alignment_uses_finding': 3, 'comment_aligns_finding': 3, 'repo_has_thread': 1, 'thread_has_comment': 1, 'thread_has_comment_chain': 1, 'comment_has_chain': 1, 'thread_has_issue_chain': 1, 'issue_chain_has_comment_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'verification_or_tests': 3, 'claimed_resolved_with_verification_signal': 3, 'blueprint_human_gap_alignment': 3, 'thread_has_human_issue_and_fix_context': 2, 'weak blueprint fit': 2, 'issue_or_pull_request_thread': 1, 'test_ci_gap': 1, 'human_reported_issue_then_verified_fix_attempt': 1, 'commit_general': 1, 'bug_fix': 1, 'partial blueprint fit': 1}\nOutcomes: {'claimed_resolved_with_verification_signal': 6}\nQuality tiers: {'high_confidence': 3, 'assumption_check': 3}\nCI labels: {}\nCurriculum targets:\n- Turn human feedback into regression tests and CI gates.\n- Penalize fixes that do not add or exercise verification for affected workflows.\nAssumption checks:\n- Did the fix add tests for the exact complaint?\n- Does CI run those tests, or is verification only implied?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/timogilvie/wavemill", "source_id": "graph-query-motif_query-a281aa2cbe6a104e", "synthetic": false, "gold_label": "", "graph_label": "", "source_path": "/data/distillate/foundry_data/graph_queries/test_ci_gap_after_feedback/shard-0.jsonl", "bundle_label": "", "priority_band": "", "priority_score": 0, "repo_full_name": "timogilvie/wavemill", "source_dataset": "graph_queries/test_ci_gap_after_feedback", "training_usage": "hard_negative"}}}, {"ruleId": "foundry_test_ci_gap", "level": "error", "message": {"text": "Foundry mined test ci gap after feedback: timogilvie/wavemill"}, "properties": {"repobilityId": 420373, "scanner": "foundry_dataset", "fingerprint": "e0944f168a516f9d54dd308050817cde66f72845feb57667bceb031abbe088ea", "category": "testing", "severity": "high", "confidence": 0.78, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Imported from mined Foundry/Fable5 evidence with real GitHub/source provenance. Review source_id before acting.", "evidence": {"meta": {"kind": "graph_query_record", "title": "Feedback exposes missing tests or CI", "intent": "Hard negatives for feedback/fix chains without adequate guardrails.", "labels": {"bug_fix": 1, "test_ci_gap": 1, "weak blueprint fit": 2, "partial blueprint fit": 1, "verification_or_tests": 4, "issue_or_pull_request_thread": 1, "blueprint_human_gap_alignment": 3, "thread_has_human_issue_and_fix_context": 2, "claimed_resolved_with_verification_signal": 3, "human_reported_issue_then_verified_fix_attempt": 1}, "source": "graph_query_export", "motif_id": "test_ci_gap_after_feedback", "outcomes": {"claimed_resolved_with_verification_signal": 6}, "polarity": "bad", "query_id": "test_ci_gap_after_feedback", "severity": "high", "ci_labels": {}, "synthetic": false, "edge_count": 28, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 1, "thread_has_comment": 1, "alignment_uses_comment": 3, "alignment_uses_finding": 3, "chain_has_link_quality": 6, "comment_aligns_finding": 3, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 1, "comment_chain_links_commit": 5, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 1}, "node_count": 23, "node_types": {"repo": 1, "commit": 5, "thread": 1, "comment": 1, "alignment": 3, "fix_outcome": 1, "issue_chain": 1, "link_quality": 6, "comment_chain": 1, "blueprint_finding": 3}, "query_type": "motif_query", "thread_key": "timogilvie/wavemill#553", "issue_number": "553", "quality_tiers": {"assumption_check": 3, "weak_supervision": 3}, "repo_full_name": "timogilvie/wavemill", "training_usage": "hard_negative", "source_motif_id": "graph-pattern-motif-thread-439d12c9e28ca44c", "graph_gold_label": "supported_by_verification_signal", "changed_file_labels": {}}, "text": "Graph query export: Feedback exposes missing tests or CI\nQuery id: test_ci_gap_after_feedback\nQuery type: motif_query\nIntent: Hard negatives for feedback/fix chains without adequate guardrails.\nMotif: test_ci_gap_after_feedback\nTraining usage: hard_negative\nGraph gold label: supported_by_verification_signal\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#553\nEvidence:\nGraph motif: Feedback or fix context exposes missing test/CI guardrails\nMotif id: test_ci_gap_after_feedback\nPolarity: bad\nTraining usage: hard_negative\nSeverity: high\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#553\nGraph gold label: supported_by_verification_signal\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: timogilvie/wavemill#553\nRepo: timogilvie/wavemill\nIssue/PR number: 553\nGraph consistency label: supported_by_verification_signal\nNodes: 23\nEdges: 28\nNode types: {'link_quality': 6, 'commit': 5, 'alignment': 3, 'blueprint_finding': 3, 'thread': 1, 'repo': 1, 'comment': 1, 'comment_chain': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'chain_has_link_quality': 6, 'comment_chain_links_commit': 5, 'alignment_uses_comment': 3, 'alignment_uses_finding': 3, 'comment_aligns_finding': 3, 'repo_has_thread': 1, 'thread_has_comment': 1, 'thread_has_comment_chain': 1, 'comment_has_chain': 1, 'thread_has_issue_chain': 1, 'issue_chain_has_comment_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'verification_or_tests': 4, 'claimed_resolved_with_verification_signal': 3, 'blueprint_human_gap_alignment': 3, 'thread_has_human_issue_and_fix_context': 2, 'weak blueprint fit': 2, 'issue_or_pull_request_thread': 1, 'test_ci_gap': 1, 'human_reported_issue_then_verified_fix_attempt': 1, 'bug_fix': 1, 'partial blueprint fit': 1}\nOutcomes: {'claimed_resolved_with_verification_signal': 6}\nQuality tiers: {'weak_supervision': 3, 'assumption_check': 3}\nCI labels: {}\nCurriculum targets:\n- Turn human feedback into regression tests and CI gates.\n- Penalize fixes that do not add or exercise verification for affected workflows.\nAssumption checks:\n- Did the fix add tests for the exact complaint?\n- Does CI run those tests, or is verification only implied?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/timogilvie/wavemill", "source_id": "graph-query-motif_query-4fcaee852763688b", "synthetic": false, "gold_label": "", "graph_label": "", "source_path": "/data/distillate/foundry_data/graph_queries/test_ci_gap_after_feedback/shard-0.jsonl", "bundle_label": "", "priority_band": "", "priority_score": 0, "repo_full_name": "timogilvie/wavemill", "source_dataset": "graph_queries/test_ci_gap_after_feedback", "training_usage": "hard_negative"}}}, {"ruleId": "foundry_test_ci_gap", "level": "error", "message": {"text": "Foundry mined test ci gap after feedback: timogilvie/wavemill"}, "properties": {"repobilityId": 420372, "scanner": "foundry_dataset", "fingerprint": "96c57ad26d8db135b0fccd1aba48e86ef7e9dff447705290954a868fbec70c3f", "category": "testing", "severity": "high", "confidence": 0.78, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Imported from mined Foundry/Fable5 evidence with real GitHub/source provenance. Review source_id before acting.", "evidence": {"meta": {"kind": "graph_query_record", "title": "Feedback exposes missing tests or CI", "intent": "Hard negatives for feedback/fix chains without adequate guardrails.", "labels": {"test_ci_gap": 1, "weak blueprint fit": 2, "partial blueprint fit": 1, "verification_or_tests": 5, "issue_or_pull_request_thread": 1, "ambiguous_needs_more_evidence": 3, "blueprint_human_gap_alignment": 3, "comment_has_related_commit_context": 1, "thread_has_human_issue_and_fix_context": 2}, "source": "graph_query_export", "motif_id": "test_ci_gap_after_feedback", "outcomes": {"ambiguous_needs_more_evidence": 6}, "polarity": "bad", "query_id": "test_ci_gap_after_feedback", "severity": "high", "ci_labels": {}, "synthetic": false, "edge_count": 28, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 1, "thread_has_comment": 1, "alignment_uses_comment": 3, "alignment_uses_finding": 3, "chain_has_link_quality": 6, "comment_aligns_finding": 3, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 1, "comment_chain_links_commit": 5, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 1}, "node_count": 23, "node_types": {"repo": 1, "commit": 5, "thread": 1, "comment": 1, "alignment": 3, "fix_outcome": 1, "issue_chain": 1, "link_quality": 6, "comment_chain": 1, "blueprint_finding": 3}, "query_type": "motif_query", "thread_key": "timogilvie/wavemill#548", "issue_number": "548", "quality_tiers": {"assumption_check": 3, "weak_supervision": 3}, "repo_full_name": "timogilvie/wavemill", "training_usage": "hard_negative", "source_motif_id": "graph-pattern-motif-thread-c8638fc04c2ad906", "graph_gold_label": "weak_supervision_needs_review", "changed_file_labels": {}}, "text": "Graph query export: Feedback exposes missing tests or CI\nQuery id: test_ci_gap_after_feedback\nQuery type: motif_query\nIntent: Hard negatives for feedback/fix chains without adequate guardrails.\nMotif: test_ci_gap_after_feedback\nTraining usage: hard_negative\nGraph gold label: weak_supervision_needs_review\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#548\nEvidence:\nGraph motif: Feedback or fix context exposes missing test/CI guardrails\nMotif id: test_ci_gap_after_feedback\nPolarity: bad\nTraining usage: hard_negative\nSeverity: high\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#548\nGraph gold label: weak_supervision_needs_review\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: timogilvie/wavemill#548\nRepo: timogilvie/wavemill\nIssue/PR number: 548\nGraph consistency label: weak_supervision_needs_review\nNodes: 23\nEdges: 28\nNode types: {'link_quality': 6, 'commit': 5, 'alignment': 3, 'blueprint_finding': 3, 'thread': 1, 'repo': 1, 'comment': 1, 'comment_chain': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'chain_has_link_quality': 6, 'comment_chain_links_commit': 5, 'alignment_uses_comment': 3, 'alignment_uses_finding': 3, 'comment_aligns_finding': 3, 'repo_has_thread': 1, 'thread_has_comment': 1, 'thread_has_comment_chain': 1, 'comment_has_chain': 1, 'thread_has_issue_chain': 1, 'issue_chain_has_comment_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'verification_or_tests': 5, 'ambiguous_needs_more_evidence': 3, 'blueprint_human_gap_alignment': 3, 'thread_has_human_issue_and_fix_context': 2, 'weak blueprint fit': 2, 'issue_or_pull_request_thread': 1, 'test_ci_gap': 1, 'comment_has_related_commit_context': 1, 'partial blueprint fit': 1}\nOutcomes: {'ambiguous_needs_more_evidence': 6}\nQuality tiers: {'weak_supervision': 3, 'assumption_check': 3}\nCI labels: {}\nCurriculum targets:\n- Turn human feedback into regression tests and CI gates.\n- Penalize fixes that do not add or exercise verification for affected workflows.\nAssumption checks:\n- Did the fix add tests for the exact complaint?\n- Does CI run those tests, or is verification only implied?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/timogilvie/wavemill", "source_id": "graph-query-motif_query-a1bcab7d4a087fd6", "synthetic": false, "gold_label": "", "graph_label": "", "source_path": "/data/distillate/foundry_data/graph_queries/test_ci_gap_after_feedback/shard-0.jsonl", "bundle_label": "", "priority_band": "", "priority_score": 0, "repo_full_name": "timogilvie/wavemill", "source_dataset": "graph_queries/test_ci_gap_after_feedback", "training_usage": "hard_negative"}}}, {"ruleId": "foundry_test_ci_gap", "level": "error", "message": {"text": "Foundry mined test ci gap after feedback: timogilvie/wavemill"}, "properties": {"repobilityId": 420371, "scanner": "foundry_dataset", "fingerprint": "2b20ddc37f304153247370771876072f35f45885972f42dee459a3a08f8485eb", "category": "testing", "severity": "high", "confidence": 0.78, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Imported from mined Foundry/Fable5 evidence with real GitHub/source provenance. Review source_id before acting.", "evidence": {"meta": {"kind": "graph_query_record", "title": "Feedback exposes missing tests or CI", "intent": "Hard negatives for feedback/fix chains without adequate guardrails.", "labels": {"test_ci_gap": 1, "weak blueprint fit": 2, "partial blueprint fit": 1, "verification_or_tests": 5, "issue_or_pull_request_thread": 1, "ambiguous_needs_more_evidence": 3, "blueprint_human_gap_alignment": 3, "comment_has_related_commit_context": 1, "thread_has_human_issue_and_fix_context": 2}, "source": "graph_query_export", "motif_id": "test_ci_gap_after_feedback", "outcomes": {"ambiguous_needs_more_evidence": 6}, "polarity": "bad", "query_id": "test_ci_gap_after_feedback", "severity": "high", "ci_labels": {}, "synthetic": false, "edge_count": 28, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 1, "thread_has_comment": 1, "alignment_uses_comment": 3, "alignment_uses_finding": 3, "chain_has_link_quality": 6, "comment_aligns_finding": 3, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 1, "comment_chain_links_commit": 5, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 1}, "node_count": 23, "node_types": {"repo": 1, "commit": 5, "thread": 1, "comment": 1, "alignment": 3, "fix_outcome": 1, "issue_chain": 1, "link_quality": 6, "comment_chain": 1, "blueprint_finding": 3}, "query_type": "motif_query", "thread_key": "timogilvie/wavemill#545", "issue_number": "545", "quality_tiers": {"assumption_check": 3, "weak_supervision": 3}, "repo_full_name": "timogilvie/wavemill", "training_usage": "hard_negative", "source_motif_id": "graph-pattern-motif-thread-f537ed69141720d8", "graph_gold_label": "weak_supervision_needs_review", "changed_file_labels": {}}, "text": "Graph query export: Feedback exposes missing tests or CI\nQuery id: test_ci_gap_after_feedback\nQuery type: motif_query\nIntent: Hard negatives for feedback/fix chains without adequate guardrails.\nMotif: test_ci_gap_after_feedback\nTraining usage: hard_negative\nGraph gold label: weak_supervision_needs_review\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#545\nEvidence:\nGraph motif: Feedback or fix context exposes missing test/CI guardrails\nMotif id: test_ci_gap_after_feedback\nPolarity: bad\nTraining usage: hard_negative\nSeverity: high\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#545\nGraph gold label: weak_supervision_needs_review\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: timogilvie/wavemill#545\nRepo: timogilvie/wavemill\nIssue/PR number: 545\nGraph consistency label: weak_supervision_needs_review\nNodes: 23\nEdges: 28\nNode types: {'link_quality': 6, 'commit': 5, 'alignment': 3, 'blueprint_finding': 3, 'thread': 1, 'repo': 1, 'comment': 1, 'comment_chain': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'chain_has_link_quality': 6, 'comment_chain_links_commit': 5, 'alignment_uses_comment': 3, 'alignment_uses_finding': 3, 'comment_aligns_finding': 3, 'repo_has_thread': 1, 'thread_has_comment': 1, 'thread_has_comment_chain': 1, 'comment_has_chain': 1, 'thread_has_issue_chain': 1, 'issue_chain_has_comment_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'verification_or_tests': 5, 'ambiguous_needs_more_evidence': 3, 'blueprint_human_gap_alignment': 3, 'thread_has_human_issue_and_fix_context': 2, 'weak blueprint fit': 2, 'issue_or_pull_request_thread': 1, 'test_ci_gap': 1, 'comment_has_related_commit_context': 1, 'partial blueprint fit': 1}\nOutcomes: {'ambiguous_needs_more_evidence': 6}\nQuality tiers: {'weak_supervision': 3, 'assumption_check': 3}\nCI labels: {}\nCurriculum targets:\n- Turn human feedback into regression tests and CI gates.\n- Penalize fixes that do not add or exercise verification for affected workflows.\nAssumption checks:\n- Did the fix add tests for the exact complaint?\n- Does CI run those tests, or is verification only implied?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/timogilvie/wavemill", "source_id": "graph-query-motif_query-5ae0119dbe0c9367", "synthetic": false, "gold_label": "", "graph_label": "", "source_path": "/data/distillate/foundry_data/graph_queries/test_ci_gap_after_feedback/shard-0.jsonl", "bundle_label": "", "priority_band": "", "priority_score": 0, "repo_full_name": "timogilvie/wavemill", "source_dataset": "graph_queries/test_ci_gap_after_feedback", "training_usage": "hard_negative"}}}, {"ruleId": "foundry_test_ci_gap", "level": "error", "message": {"text": "Foundry mined test ci gap after feedback: timogilvie/wavemill"}, "properties": {"repobilityId": 420370, "scanner": "foundry_dataset", "fingerprint": "3595b2f32da4b0eaa4a2f5d37c7cf39d3778aff26e53a553dc0f928b9f5353f4", "category": "testing", "severity": "high", "confidence": 0.78, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Imported from mined Foundry/Fable5 evidence with real GitHub/source provenance. Review source_id before acting.", "evidence": {"meta": {"kind": "graph_query_record", "title": "Feedback exposes missing tests or CI", "intent": "Hard negatives for feedback/fix chains without adequate guardrails.", "labels": {"test_ci_gap": 1, "weak blueprint fit": 2, "partial blueprint fit": 1, "verification_or_tests": 5, "issue_or_pull_request_thread": 1, "ambiguous_needs_more_evidence": 3, "blueprint_human_gap_alignment": 3, "comment_has_related_commit_context": 1, "thread_has_human_issue_and_fix_context": 2}, "source": "graph_query_export", "motif_id": "test_ci_gap_after_feedback", "outcomes": {"ambiguous_needs_more_evidence": 6}, "polarity": "bad", "query_id": "test_ci_gap_after_feedback", "severity": "high", "ci_labels": {}, "synthetic": false, "edge_count": 28, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 1, "thread_has_comment": 1, "alignment_uses_comment": 3, "alignment_uses_finding": 3, "chain_has_link_quality": 6, "comment_aligns_finding": 3, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 1, "comment_chain_links_commit": 5, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 1}, "node_count": 23, "node_types": {"repo": 1, "commit": 5, "thread": 1, "comment": 1, "alignment": 3, "fix_outcome": 1, "issue_chain": 1, "link_quality": 6, "comment_chain": 1, "blueprint_finding": 3}, "query_type": "motif_query", "thread_key": "timogilvie/wavemill#256", "issue_number": "256", "quality_tiers": {"assumption_check": 3, "weak_supervision": 3}, "repo_full_name": "timogilvie/wavemill", "training_usage": "hard_negative", "source_motif_id": "graph-pattern-motif-thread-928b420967e699a9", "graph_gold_label": "weak_supervision_needs_review", "changed_file_labels": {}}, "text": "Graph query export: Feedback exposes missing tests or CI\nQuery id: test_ci_gap_after_feedback\nQuery type: motif_query\nIntent: Hard negatives for feedback/fix chains without adequate guardrails.\nMotif: test_ci_gap_after_feedback\nTraining usage: hard_negative\nGraph gold label: weak_supervision_needs_review\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#256\nEvidence:\nGraph motif: Feedback or fix context exposes missing test/CI guardrails\nMotif id: test_ci_gap_after_feedback\nPolarity: bad\nTraining usage: hard_negative\nSeverity: high\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#256\nGraph gold label: weak_supervision_needs_review\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: timogilvie/wavemill#256\nRepo: timogilvie/wavemill\nIssue/PR number: 256\nGraph consistency label: weak_supervision_needs_review\nNodes: 23\nEdges: 28\nNode types: {'link_quality': 6, 'commit': 5, 'alignment': 3, 'blueprint_finding': 3, 'thread': 1, 'repo': 1, 'comment': 1, 'comment_chain': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'chain_has_link_quality': 6, 'comment_chain_links_commit': 5, 'alignment_uses_comment': 3, 'alignment_uses_finding': 3, 'comment_aligns_finding': 3, 'repo_has_thread': 1, 'thread_has_comment': 1, 'thread_has_comment_chain': 1, 'comment_has_chain': 1, 'thread_has_issue_chain': 1, 'issue_chain_has_comment_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'verification_or_tests': 5, 'ambiguous_needs_more_evidence': 3, 'blueprint_human_gap_alignment': 3, 'thread_has_human_issue_and_fix_context': 2, 'weak blueprint fit': 2, 'issue_or_pull_request_thread': 1, 'test_ci_gap': 1, 'comment_has_related_commit_context': 1, 'partial blueprint fit': 1}\nOutcomes: {'ambiguous_needs_more_evidence': 6}\nQuality tiers: {'weak_supervision': 3, 'assumption_check': 3}\nCI labels: {}\nCurriculum targets:\n- Turn human feedback into regression tests and CI gates.\n- Penalize fixes that do not add or exercise verification for affected workflows.\nAssumption checks:\n- Did the fix add tests for the exact complaint?\n- Does CI run those tests, or is verification only implied?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/timogilvie/wavemill", "source_id": "graph-query-motif_query-79b027409461b074", "synthetic": false, "gold_label": "", "graph_label": "", "source_path": "/data/distillate/foundry_data/graph_queries/test_ci_gap_after_feedback/shard-0.jsonl", "bundle_label": "", "priority_band": "", "priority_score": 0, "repo_full_name": "timogilvie/wavemill", "source_dataset": "graph_queries/test_ci_gap_after_feedback", "training_usage": "hard_negative"}}}, {"ruleId": "foundry_test_ci_gap", "level": "error", "message": {"text": "Foundry mined test ci gap after feedback: timogilvie/wavemill"}, "properties": {"repobilityId": 420369, "scanner": "foundry_dataset", "fingerprint": "25065947f4e59e27994853d507db3a166237405ca773f3f47ff61b2848055c02", "category": "testing", "severity": "high", "confidence": 0.78, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Imported from mined Foundry/Fable5 evidence with real GitHub/source provenance. Review source_id before acting.", "evidence": {"meta": {"kind": "graph_query_record", "title": "Feedback exposes missing tests or CI", "intent": "Hard negatives for feedback/fix chains without adequate guardrails.", "labels": {"test_ci_gap": 1, "weak blueprint fit": 2, "partial blueprint fit": 1, "verification_or_tests": 4, "issue_or_pull_request_thread": 1, "ambiguous_needs_more_evidence": 3, "blueprint_human_gap_alignment": 3, "comment_has_related_commit_context": 1, "thread_has_human_issue_and_fix_context": 2}, "source": "graph_query_export", "motif_id": "test_ci_gap_after_feedback", "outcomes": {"ambiguous_needs_more_evidence": 6}, "polarity": "bad", "query_id": "test_ci_gap_after_feedback", "severity": "high", "ci_labels": {}, "synthetic": false, "edge_count": 27, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 1, "thread_has_comment": 1, "alignment_uses_comment": 3, "alignment_uses_finding": 3, "chain_has_link_quality": 6, "comment_aligns_finding": 3, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 1, "comment_chain_links_commit": 4, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 1}, "node_count": 22, "node_types": {"repo": 1, "commit": 4, "thread": 1, "comment": 1, "alignment": 3, "fix_outcome": 1, "issue_chain": 1, "link_quality": 6, "comment_chain": 1, "blueprint_finding": 3}, "query_type": "motif_query", "thread_key": "timogilvie/wavemill#251", "issue_number": "251", "quality_tiers": {"assumption_check": 3, "weak_supervision": 3}, "repo_full_name": "timogilvie/wavemill", "training_usage": "hard_negative", "source_motif_id": "graph-pattern-motif-thread-f4ee11b6cd8fc6fb", "graph_gold_label": "weak_supervision_needs_review", "changed_file_labels": {}}, "text": "Graph query export: Feedback exposes missing tests or CI\nQuery id: test_ci_gap_after_feedback\nQuery type: motif_query\nIntent: Hard negatives for feedback/fix chains without adequate guardrails.\nMotif: test_ci_gap_after_feedback\nTraining usage: hard_negative\nGraph gold label: weak_supervision_needs_review\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#251\nEvidence:\nGraph motif: Feedback or fix context exposes missing test/CI guardrails\nMotif id: test_ci_gap_after_feedback\nPolarity: bad\nTraining usage: hard_negative\nSeverity: high\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#251\nGraph gold label: weak_supervision_needs_review\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: timogilvie/wavemill#251\nRepo: timogilvie/wavemill\nIssue/PR number: 251\nGraph consistency label: weak_supervision_needs_review\nNodes: 22\nEdges: 27\nNode types: {'link_quality': 6, 'commit': 4, 'alignment': 3, 'blueprint_finding': 3, 'thread': 1, 'repo': 1, 'comment': 1, 'comment_chain': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'chain_has_link_quality': 6, 'comment_chain_links_commit': 4, 'alignment_uses_comment': 3, 'alignment_uses_finding': 3, 'comment_aligns_finding': 3, 'repo_has_thread': 1, 'thread_has_comment': 1, 'thread_has_comment_chain': 1, 'comment_has_chain': 1, 'thread_has_issue_chain': 1, 'issue_chain_has_comment_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'verification_or_tests': 4, 'ambiguous_needs_more_evidence': 3, 'blueprint_human_gap_alignment': 3, 'thread_has_human_issue_and_fix_context': 2, 'weak blueprint fit': 2, 'issue_or_pull_request_thread': 1, 'test_ci_gap': 1, 'comment_has_related_commit_context': 1, 'partial blueprint fit': 1}\nOutcomes: {'ambiguous_needs_more_evidence': 6}\nQuality tiers: {'weak_supervision': 3, 'assumption_check': 3}\nCI labels: {}\nCurriculum targets:\n- Turn human feedback into regression tests and CI gates.\n- Penalize fixes that do not add or exercise verification for affected workflows.\nAssumption checks:\n- Did the fix add tests for the exact complaint?\n- Does CI run those tests, or is verification only implied?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/timogilvie/wavemill", "source_id": "graph-query-motif_query-c374b73ed3639d6c", "synthetic": false, "gold_label": "", "graph_label": "", "source_path": "/data/distillate/foundry_data/graph_queries/test_ci_gap_after_feedback/shard-0.jsonl", "bundle_label": "", "priority_band": "", "priority_score": 0, "repo_full_name": "timogilvie/wavemill", "source_dataset": "graph_queries/test_ci_gap_after_feedback", "training_usage": "hard_negative"}}}, {"ruleId": "foundry_test_ci_gap", "level": "error", "message": {"text": "Foundry mined test ci gap after feedback: timogilvie/wavemill"}, "properties": {"repobilityId": 420368, "scanner": "foundry_dataset", "fingerprint": "6d9932b46a388411d29388b3db4f32849ac7ed10f920437595ac0e4c07868781", "category": "testing", "severity": "high", "confidence": 0.78, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Imported from mined Foundry/Fable5 evidence with real GitHub/source provenance. Review source_id before acting.", "evidence": {"meta": {"kind": "graph_query_record", "title": "Feedback exposes missing tests or CI", "intent": "Hard negatives for feedback/fix chains without adequate guardrails.", "labels": {"test_ci_gap": 1, "weak blueprint fit": 2, "partial blueprint fit": 1, "verification_or_tests": 4, "human_feedback_general": 1, "unlinked_human_feedback": 1, "issue_or_pull_request_thread": 1, "ambiguous_needs_more_evidence": 4, "blueprint_human_gap_alignment": 3, "comment_has_related_commit_context": 1, "thread_has_human_issue_and_fix_context": 2}, "source": "graph_query_export", "motif_id": "test_ci_gap_after_feedback", "outcomes": {"ambiguous_needs_more_evidence": 8}, "polarity": "bad", "query_id": "test_ci_gap_after_feedback", "severity": "high", "ci_labels": {}, "synthetic": false, "edge_count": 32, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 2, "thread_has_comment": 2, "alignment_uses_comment": 3, "alignment_uses_finding": 3, "chain_has_link_quality": 7, "comment_aligns_finding": 3, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 2, "comment_chain_links_commit": 4, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 2}, "node_count": 25, "node_types": {"repo": 1, "commit": 4, "thread": 1, "comment": 2, "alignment": 3, "fix_outcome": 1, "issue_chain": 1, "link_quality": 7, "comment_chain": 2, "blueprint_finding": 3}, "query_type": "motif_query", "thread_key": "timogilvie/wavemill#250", "issue_number": "250", "quality_tiers": {"unresolved": 1, "assumption_check": 3, "weak_supervision": 3}, "repo_full_name": "timogilvie/wavemill", "training_usage": "hard_negative", "source_motif_id": "graph-pattern-motif-thread-9655c73af14afd55", "graph_gold_label": "weak_supervision_needs_review", "changed_file_labels": {}}, "text": "Graph query export: Feedback exposes missing tests or CI\nQuery id: test_ci_gap_after_feedback\nQuery type: motif_query\nIntent: Hard negatives for feedback/fix chains without adequate guardrails.\nMotif: test_ci_gap_after_feedback\nTraining usage: hard_negative\nGraph gold label: weak_supervision_needs_review\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#250\nEvidence:\nGraph motif: Feedback or fix context exposes missing test/CI guardrails\nMotif id: test_ci_gap_after_feedback\nPolarity: bad\nTraining usage: hard_negative\nSeverity: high\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#250\nGraph gold label: weak_supervision_needs_review\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: timogilvie/wavemill#250\nRepo: timogilvie/wavemill\nIssue/PR number: 250\nGraph consistency label: weak_supervision_needs_review\nNodes: 25\nEdges: 32\nNode types: {'link_quality': 7, 'commit': 4, 'alignment': 3, 'blueprint_finding': 3, 'comment': 2, 'comment_chain': 2, 'thread': 1, 'repo': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'chain_has_link_quality': 7, 'comment_chain_links_commit': 4, 'alignment_uses_comment': 3, 'alignment_uses_finding': 3, 'comment_aligns_finding': 3, 'thread_has_comment': 2, 'thread_has_comment_chain': 2, 'comment_has_chain': 2, 'issue_chain_has_comment_chain': 2, 'repo_has_thread': 1, 'thread_has_issue_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'verification_or_tests': 4, 'ambiguous_needs_more_evidence': 4, 'blueprint_human_gap_alignment': 3, 'thread_has_human_issue_and_fix_context': 2, 'weak blueprint fit': 2, 'issue_or_pull_request_thread': 1, 'test_ci_gap': 1, 'human_feedback_general': 1, 'comment_has_related_commit_context': 1, 'unlinked_human_feedback': 1, 'partial blueprint fit': 1}\nOutcomes: {'ambiguous_needs_more_evidence': 8}\nQuality tiers: {'weak_supervision': 3, 'assumption_check': 3, 'unresolved': 1}\nCI labels: {}\nCurriculum targets:\n- Turn human feedback into regression tests and CI gates.\n- Penalize fixes that do not add or exercise verification for affected workflows.\nAssumption checks:\n- Did the fix add tests for the exact complaint?\n- Does CI run those tests, or is verification only implied?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/timogilvie/wavemill", "source_id": "graph-query-motif_query-014234f5dcca8f15", "synthetic": false, "gold_label": "", "graph_label": "", "source_path": "/data/distillate/foundry_data/graph_queries/test_ci_gap_after_feedback/shard-0.jsonl", "bundle_label": "", "priority_band": "", "priority_score": 0, "repo_full_name": "timogilvie/wavemill", "source_dataset": "graph_queries/test_ci_gap_after_feedback", "training_usage": "hard_negative"}}}, {"ruleId": "foundry_test_ci_gap", "level": "error", "message": {"text": "Foundry mined test ci gap after feedback: timogilvie/wavemill"}, "properties": {"repobilityId": 420367, "scanner": "foundry_dataset", "fingerprint": "9f57ab024eb305d55c59ffd9533f98bd9710a1e548c3e6b79494ddb586e6cc55", "category": "testing", "severity": "high", "confidence": 0.78, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Imported from mined Foundry/Fable5 evidence with real GitHub/source provenance. Review source_id before acting.", "evidence": {"meta": {"kind": "graph_query_record", "title": "Feedback exposes missing tests or CI", "intent": "Hard negatives for feedback/fix chains without adequate guardrails.", "labels": {"bug_fix": 1, "test_ci_gap": 1, "weak blueprint fit": 2, "agent_instruction_gap": 1, "partial blueprint fit": 1, "verification_or_tests": 4, "issue_or_pull_request_thread": 1, "not_resolved_or_not_observed": 1, "blueprint_human_gap_alignment": 3, "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": "test_ci_gap_after_feedback", "outcomes": {"not_resolved_or_not_observed": 2, "claimed_resolved_with_verification_signal": 6}, "polarity": "bad", "query_id": "test_ci_gap_after_feedback", "severity": "high", "ci_labels": {}, "synthetic": false, "edge_count": 33, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 2, "thread_has_comment": 2, "alignment_uses_comment": 3, "alignment_uses_finding": 3, "chain_has_link_quality": 7, "comment_aligns_finding": 3, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 2, "comment_chain_links_commit": 5, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 2}, "node_count": 26, "node_types": {"repo": 1, "commit": 5, "thread": 1, "comment": 2, "alignment": 3, "fix_outcome": 1, "issue_chain": 1, "link_quality": 7, "comment_chain": 2, "blueprint_finding": 3}, "query_type": "motif_query", "thread_key": "timogilvie/wavemill#247", "issue_number": "247", "quality_tiers": {"unresolved": 1, "assumption_check": 3, "weak_supervision": 3}, "repo_full_name": "timogilvie/wavemill", "training_usage": "hard_negative", "source_motif_id": "graph-pattern-motif-thread-2e83b21d8394b5cc", "graph_gold_label": "supported_by_verification_signal", "changed_file_labels": {}}, "text": "Graph query export: Feedback exposes missing tests or CI\nQuery id: test_ci_gap_after_feedback\nQuery type: motif_query\nIntent: Hard negatives for feedback/fix chains without adequate guardrails.\nMotif: test_ci_gap_after_feedback\nTraining usage: hard_negative\nGraph gold label: supported_by_verification_signal\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#247\nEvidence:\nGraph motif: Feedback or fix context exposes missing test/CI guardrails\nMotif id: test_ci_gap_after_feedback\nPolarity: bad\nTraining usage: hard_negative\nSeverity: high\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#247\nGraph gold label: supported_by_verification_signal\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: timogilvie/wavemill#247\nRepo: timogilvie/wavemill\nIssue/PR number: 247\nGraph consistency label: supported_by_verification_signal\nNodes: 26\nEdges: 33\nNode types: {'link_quality': 7, 'commit': 5, 'alignment': 3, 'blueprint_finding': 3, 'comment': 2, 'comment_chain': 2, 'thread': 1, 'repo': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'chain_has_link_quality': 7, 'comment_chain_links_commit': 5, 'alignment_uses_comment': 3, 'alignment_uses_finding': 3, 'comment_aligns_finding': 3, 'thread_has_comment': 2, 'thread_has_comment_chain': 2, 'comment_has_chain': 2, 'issue_chain_has_comment_chain': 2, 'repo_has_thread': 1, 'thread_has_issue_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'verification_or_tests': 4, 'claimed_resolved_with_verification_signal': 3, 'blueprint_human_gap_alignment': 3, 'thread_has_human_issue_and_fix_context': 2, 'weak blueprint fit': 2, 'issue_or_pull_request_thread': 1, 'test_ci_gap': 1, 'agent_instruction_gap': 1, 'human_reported_issue_then_verified_fix_attempt': 1, 'bug_fix': 1, 'human_reported_issue_no_linked_fix': 1, 'not_resolved_or_not_observed': 1, 'partial blueprint fit': 1}\nOutcomes: {'claimed_resolved_with_verification_signal': 6, 'not_resolved_or_not_observed': 2}\nQuality tiers: {'weak_supervision': 3, 'assumption_check': 3, 'unresolved': 1}\nCI labels: {}\nCurriculum targets:\n- Turn human feedback into regression tests and CI gates.\n- Penalize fixes that do not add or exercise verification for affected workflows.\nAssumption checks:\n- Did the fix add tests for the exact complaint?\n- Does CI run those tests, or is verification only implied?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/timogilvie/wavemill", "source_id": "graph-query-motif_query-92063b70127c24cb", "synthetic": false, "gold_label": "", "graph_label": "", "source_path": "/data/distillate/foundry_data/graph_queries/test_ci_gap_after_feedback/shard-0.jsonl", "bundle_label": "", "priority_band": "", "priority_score": 0, "repo_full_name": "timogilvie/wavemill", "source_dataset": "graph_queries/test_ci_gap_after_feedback", "training_usage": "hard_negative"}}}, {"ruleId": "foundry_test_ci_gap", "level": "error", "message": {"text": "Foundry mined test ci gap after feedback: timogilvie/wavemill"}, "properties": {"repobilityId": 420366, "scanner": "foundry_dataset", "fingerprint": "ee1fe34ccb2d6108a1ff0056a00522f8ad04bc22646b7333cd984274c5b79526", "category": "testing", "severity": "high", "confidence": 0.78, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Imported from mined Foundry/Fable5 evidence with real GitHub/source provenance. Review source_id before acting.", "evidence": {"meta": {"kind": "graph_query_record", "title": "Feedback exposes missing tests or CI", "intent": "Hard negatives for feedback/fix chains without adequate guardrails.", "labels": {"test_ci_gap": 1, "weak blueprint fit": 2, "agent_instruction_gap": 1, "partial blueprint fit": 1, "verification_or_tests": 5, "human_feedback_general": 1, "unlinked_human_feedback": 1, "issue_or_pull_request_thread": 1, "not_resolved_or_not_observed": 1, "ambiguous_needs_more_evidence": 4, "blueprint_human_gap_alignment": 3, "comment_has_related_commit_context": 1, "human_reported_issue_no_linked_fix": 1, "thread_has_human_issue_and_fix_context": 2}, "source": "graph_query_export", "motif_id": "test_ci_gap_after_feedback", "outcomes": {"not_resolved_or_not_observed": 2, "ambiguous_needs_more_evidence": 8}, "polarity": "bad", "query_id": "test_ci_gap_after_feedback", "severity": "high", "ci_labels": {}, "synthetic": false, "edge_count": 38, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 3, "thread_has_comment": 3, "alignment_uses_comment": 3, "alignment_uses_finding": 3, "chain_has_link_quality": 8, "comment_aligns_finding": 3, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 3, "comment_chain_links_commit": 5, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 3}, "node_count": 29, "node_types": {"repo": 1, "commit": 5, "thread": 1, "comment": 3, "alignment": 3, "fix_outcome": 1, "issue_chain": 1, "link_quality": 8, "comment_chain": 3, "blueprint_finding": 3}, "query_type": "motif_query", "thread_key": "timogilvie/wavemill#236", "issue_number": "236", "quality_tiers": {"unresolved": 2, "assumption_check": 3, "weak_supervision": 3}, "repo_full_name": "timogilvie/wavemill", "training_usage": "hard_negative", "source_motif_id": "graph-pattern-motif-thread-759a84f0ae4bfb29", "graph_gold_label": "weak_supervision_needs_review", "changed_file_labels": {}}, "text": "Graph query export: Feedback exposes missing tests or CI\nQuery id: test_ci_gap_after_feedback\nQuery type: motif_query\nIntent: Hard negatives for feedback/fix chains without adequate guardrails.\nMotif: test_ci_gap_after_feedback\nTraining usage: hard_negative\nGraph gold label: weak_supervision_needs_review\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#236\nEvidence:\nGraph motif: Feedback or fix context exposes missing test/CI guardrails\nMotif id: test_ci_gap_after_feedback\nPolarity: bad\nTraining usage: hard_negative\nSeverity: high\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#236\nGraph gold label: weak_supervision_needs_review\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: timogilvie/wavemill#236\nRepo: timogilvie/wavemill\nIssue/PR number: 236\nGraph consistency label: weak_supervision_needs_review\nNodes: 29\nEdges: 38\nNode types: {'link_quality': 8, 'commit': 5, 'comment': 3, 'comment_chain': 3, 'alignment': 3, 'blueprint_finding': 3, 'thread': 1, 'repo': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'chain_has_link_quality': 8, 'comment_chain_links_commit': 5, 'thread_has_comment': 3, 'thread_has_comment_chain': 3, 'comment_has_chain': 3, 'issue_chain_has_comment_chain': 3, 'alignment_uses_comment': 3, 'alignment_uses_finding': 3, 'comment_aligns_finding': 3, 'repo_has_thread': 1, 'thread_has_issue_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'verification_or_tests': 5, 'ambiguous_needs_more_evidence': 4, 'blueprint_human_gap_alignment': 3, 'thread_has_human_issue_and_fix_context': 2, 'weak blueprint fit': 2, 'issue_or_pull_request_thread': 1, 'test_ci_gap': 1, 'agent_instruction_gap': 1, 'human_feedback_general': 1, 'comment_has_related_commit_context': 1, 'human_reported_issue_no_linked_fix': 1, 'not_resolved_or_not_observed': 1, 'unlinked_human_feedback': 1, 'partial blueprint fit': 1}\nOutcomes: {'ambiguous_needs_more_evidence': 8, 'not_resolved_or_not_observed': 2}\nQuality tiers: {'weak_supervision': 3, 'assumption_check': 3, 'unresolved': 2}\nCI labels: {}\nCurriculum targets:\n- Turn human feedback into regression tests and CI gates.\n- Penalize fixes that do not add or exercise verification for affected workflows.\nAssumption checks:\n- Did the fix add tests for the exact complaint?\n- Does CI run those tests, or is verification only implied?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/timogilvie/wavemill", "source_id": "graph-query-motif_query-30317670e69f024c", "synthetic": false, "gold_label": "", "graph_label": "", "source_path": "/data/distillate/foundry_data/graph_queries/test_ci_gap_after_feedback/shard-0.jsonl", "bundle_label": "", "priority_band": "", "priority_score": 0, "repo_full_name": "timogilvie/wavemill", "source_dataset": "graph_queries/test_ci_gap_after_feedback", "training_usage": "hard_negative"}}}, {"ruleId": "foundry_test_ci_gap", "level": "error", "message": {"text": "Foundry mined test ci gap after feedback: timogilvie/wavemill"}, "properties": {"repobilityId": 420365, "scanner": "foundry_dataset", "fingerprint": "d9351804c016e24ae0b588c61e63a500a3bef25d75b463de343723ef67e53d08", "category": "testing", "severity": "high", "confidence": 0.78, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Imported from mined Foundry/Fable5 evidence with real GitHub/source provenance. Review source_id before acting.", "evidence": {"meta": {"kind": "graph_query_record", "title": "Feedback exposes missing tests or CI", "intent": "Hard negatives for feedback/fix chains without adequate guardrails.", "labels": {"bug_fix": 1, "test_ci_gap": 1, "weak blueprint fit": 2, "agent_instruction_gap": 1, "partial blueprint fit": 1, "verification_or_tests": 4, "issue_or_pull_request_thread": 1, "not_resolved_or_not_observed": 1, "blueprint_human_gap_alignment": 3, "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": "test_ci_gap_after_feedback", "outcomes": {"not_resolved_or_not_observed": 2, "claimed_resolved_with_verification_signal": 6}, "polarity": "bad", "query_id": "test_ci_gap_after_feedback", "severity": "high", "ci_labels": {}, "synthetic": false, "edge_count": 33, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 2, "thread_has_comment": 2, "alignment_uses_comment": 3, "alignment_uses_finding": 3, "chain_has_link_quality": 7, "comment_aligns_finding": 3, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 2, "comment_chain_links_commit": 5, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 2}, "node_count": 26, "node_types": {"repo": 1, "commit": 5, "thread": 1, "comment": 2, "alignment": 3, "fix_outcome": 1, "issue_chain": 1, "link_quality": 7, "comment_chain": 2, "blueprint_finding": 3}, "query_type": "motif_query", "thread_key": "timogilvie/wavemill#234", "issue_number": "234", "quality_tiers": {"unresolved": 1, "assumption_check": 3, "weak_supervision": 3}, "repo_full_name": "timogilvie/wavemill", "training_usage": "hard_negative", "source_motif_id": "graph-pattern-motif-thread-45f4620c37338cb2", "graph_gold_label": "supported_by_verification_signal", "changed_file_labels": {}}, "text": "Graph query export: Feedback exposes missing tests or CI\nQuery id: test_ci_gap_after_feedback\nQuery type: motif_query\nIntent: Hard negatives for feedback/fix chains without adequate guardrails.\nMotif: test_ci_gap_after_feedback\nTraining usage: hard_negative\nGraph gold label: supported_by_verification_signal\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#234\nEvidence:\nGraph motif: Feedback or fix context exposes missing test/CI guardrails\nMotif id: test_ci_gap_after_feedback\nPolarity: bad\nTraining usage: hard_negative\nSeverity: high\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#234\nGraph gold label: supported_by_verification_signal\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: timogilvie/wavemill#234\nRepo: timogilvie/wavemill\nIssue/PR number: 234\nGraph consistency label: supported_by_verification_signal\nNodes: 26\nEdges: 33\nNode types: {'link_quality': 7, 'commit': 5, 'alignment': 3, 'blueprint_finding': 3, 'comment': 2, 'comment_chain': 2, 'thread': 1, 'repo': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'chain_has_link_quality': 7, 'comment_chain_links_commit': 5, 'alignment_uses_comment': 3, 'alignment_uses_finding': 3, 'comment_aligns_finding': 3, 'thread_has_comment': 2, 'thread_has_comment_chain': 2, 'comment_has_chain': 2, 'issue_chain_has_comment_chain': 2, 'repo_has_thread': 1, 'thread_has_issue_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'verification_or_tests': 4, 'claimed_resolved_with_verification_signal': 3, 'blueprint_human_gap_alignment': 3, 'thread_has_human_issue_and_fix_context': 2, 'weak blueprint fit': 2, 'issue_or_pull_request_thread': 1, 'test_ci_gap': 1, 'agent_instruction_gap': 1, 'human_reported_issue_then_verified_fix_attempt': 1, 'bug_fix': 1, 'human_reported_issue_no_linked_fix': 1, 'not_resolved_or_not_observed': 1, 'partial blueprint fit': 1}\nOutcomes: {'claimed_resolved_with_verification_signal': 6, 'not_resolved_or_not_observed': 2}\nQuality tiers: {'weak_supervision': 3, 'assumption_check': 3, 'unresolved': 1}\nCI labels: {}\nCurriculum targets:\n- Turn human feedback into regression tests and CI gates.\n- Penalize fixes that do not add or exercise verification for affected workflows.\nAssumption checks:\n- Did the fix add tests for the exact complaint?\n- Does CI run those tests, or is verification only implied?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/timogilvie/wavemill", "source_id": "graph-query-motif_query-3d431bcb1a817ef7", "synthetic": false, "gold_label": "", "graph_label": "", "source_path": "/data/distillate/foundry_data/graph_queries/test_ci_gap_after_feedback/shard-0.jsonl", "bundle_label": "", "priority_band": "", "priority_score": 0, "repo_full_name": "timogilvie/wavemill", "source_dataset": "graph_queries/test_ci_gap_after_feedback", "training_usage": "hard_negative"}}}, {"ruleId": "foundry_test_ci_gap", "level": "error", "message": {"text": "Foundry mined test ci gap after feedback: timogilvie/wavemill"}, "properties": {"repobilityId": 420364, "scanner": "foundry_dataset", "fingerprint": "87a2572fb83303df660095abaca4b7284d89a490923e7bf9c94aa0a652f58909", "category": "testing", "severity": "high", "confidence": 0.78, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Imported from mined Foundry/Fable5 evidence with real GitHub/source provenance. Review source_id before acting.", "evidence": {"meta": {"kind": "graph_query_record", "title": "Feedback exposes missing tests or CI", "intent": "Hard negatives for feedback/fix chains without adequate guardrails.", "labels": {"test_ci_gap": 1, "weak blueprint fit": 2, "partial blueprint fit": 1, "positive_human_signal": 1, "verification_or_tests": 4, "human_feedback_general": 1, "unlinked_human_feedback": 1, "issue_or_pull_request_thread": 1, "ambiguous_needs_more_evidence": 4, "blueprint_human_gap_alignment": 3, "comment_has_related_commit_context": 1, "positive_feedback_no_linked_change": 1, "human_positive_or_acceptance_signal": 1, "thread_has_human_issue_and_fix_context": 2}, "source": "graph_query_export", "motif_id": "test_ci_gap_after_feedback", "outcomes": {"ambiguous_needs_more_evidence": 8, "human_positive_or_acceptance_signal": 2}, "polarity": "bad", "query_id": "test_ci_gap_after_feedback", "severity": "high", "ci_labels": {}, "synthetic": false, "edge_count": 37, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 3, "thread_has_comment": 3, "alignment_uses_comment": 3, "alignment_uses_finding": 3, "chain_has_link_quality": 8, "comment_aligns_finding": 3, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 3, "comment_chain_links_commit": 4, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 3}, "node_count": 28, "node_types": {"repo": 1, "commit": 4, "thread": 1, "comment": 3, "alignment": 3, "fix_outcome": 1, "issue_chain": 1, "link_quality": 8, "comment_chain": 3, "blueprint_finding": 3}, "query_type": "motif_query", "thread_key": "timogilvie/wavemill#233", "issue_number": "233", "quality_tiers": {"unresolved": 2, "assumption_check": 3, "weak_supervision": 3}, "repo_full_name": "timogilvie/wavemill", "training_usage": "hard_negative", "source_motif_id": "graph-pattern-motif-thread-6e69c8f811c39b78", "graph_gold_label": "weak_supervision_needs_review", "changed_file_labels": {}}, "text": "Graph query export: Feedback exposes missing tests or CI\nQuery id: test_ci_gap_after_feedback\nQuery type: motif_query\nIntent: Hard negatives for feedback/fix chains without adequate guardrails.\nMotif: test_ci_gap_after_feedback\nTraining usage: hard_negative\nGraph gold label: weak_supervision_needs_review\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#233\nEvidence:\nGraph motif: Feedback or fix context exposes missing test/CI guardrails\nMotif id: test_ci_gap_after_feedback\nPolarity: bad\nTraining usage: hard_negative\nSeverity: high\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#233\nGraph gold label: weak_supervision_needs_review\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: timogilvie/wavemill#233\nRepo: timogilvie/wavemill\nIssue/PR number: 233\nGraph consistency label: weak_supervision_needs_review\nNodes: 28\nEdges: 37\nNode types: {'link_quality': 8, 'commit': 4, 'comment': 3, 'comment_chain': 3, 'alignment': 3, 'blueprint_finding': 3, 'thread': 1, 'repo': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'chain_has_link_quality': 8, 'comment_chain_links_commit': 4, 'thread_has_comment': 3, 'thread_has_comment_chain': 3, 'comment_has_chain': 3, 'issue_chain_has_comment_chain': 3, 'alignment_uses_comment': 3, 'alignment_uses_finding': 3, 'comment_aligns_finding': 3, 'repo_has_thread': 1, 'thread_has_issue_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'verification_or_tests': 4, 'ambiguous_needs_more_evidence': 4, 'blueprint_human_gap_alignment': 3, 'thread_has_human_issue_and_fix_context': 2, 'weak blueprint fit': 2, 'issue_or_pull_request_thread': 1, 'test_ci_gap': 1, 'human_feedback_general': 1, 'positive_human_signal': 1, 'comment_has_related_commit_context': 1, 'unlinked_human_feedback': 1, 'positive_feedback_no_linked_change': 1, 'human_positive_or_acceptance_signal': 1, 'partial blueprint fit': 1}\nOutcomes: {'ambiguous_needs_more_evidence': 8, 'human_positive_or_acceptance_signal': 2}\nQuality tiers: {'weak_supervision': 3, 'assumption_check': 3, 'unresolved': 2}\nCI labels: {}\nCurriculum targets:\n- Turn human feedback into regression tests and CI gates.\n- Penalize fixes that do not add or exercise verification for affected workflows.\nAssumption checks:\n- Did the fix add tests for the exact complaint?\n- Does CI run those tests, or is verification only implied?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/timogilvie/wavemill", "source_id": "graph-query-motif_query-204c989824aa6d9b", "synthetic": false, "gold_label": "", "graph_label": "", "source_path": "/data/distillate/foundry_data/graph_queries/test_ci_gap_after_feedback/shard-0.jsonl", "bundle_label": "", "priority_band": "", "priority_score": 0, "repo_full_name": "timogilvie/wavemill", "source_dataset": "graph_queries/test_ci_gap_after_feedback", "training_usage": "hard_negative"}}}, {"ruleId": "foundry_test_ci_gap", "level": "error", "message": {"text": "Foundry mined test ci gap after feedback: timogilvie/wavemill"}, "properties": {"repobilityId": 420363, "scanner": "foundry_dataset", "fingerprint": "17129e773fce19f67a1c8cb85da8cb297ecaab161ba362ac000b9fd9514becbe", "category": "testing", "severity": "high", "confidence": 0.78, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Imported from mined Foundry/Fable5 evidence with real GitHub/source provenance. Review source_id before acting.", "evidence": {"meta": {"kind": "graph_query_record", "title": "Feedback exposes missing tests or CI", "intent": "Hard negatives for feedback/fix chains without adequate guardrails.", "labels": {"test_ci_gap": 1, "weak blueprint fit": 2, "partial blueprint fit": 1, "verification_or_tests": 5, "issue_or_pull_request_thread": 1, "ambiguous_needs_more_evidence": 3, "blueprint_human_gap_alignment": 3, "comment_has_related_commit_context": 1, "thread_has_human_issue_and_fix_context": 2}, "source": "graph_query_export", "motif_id": "test_ci_gap_after_feedback", "outcomes": {"ambiguous_needs_more_evidence": 6}, "polarity": "bad", "query_id": "test_ci_gap_after_feedback", "severity": "high", "ci_labels": {}, "synthetic": false, "edge_count": 28, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 1, "thread_has_comment": 1, "alignment_uses_comment": 3, "alignment_uses_finding": 3, "chain_has_link_quality": 6, "comment_aligns_finding": 3, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 1, "comment_chain_links_commit": 5, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 1}, "node_count": 23, "node_types": {"repo": 1, "commit": 5, "thread": 1, "comment": 1, "alignment": 3, "fix_outcome": 1, "issue_chain": 1, "link_quality": 6, "comment_chain": 1, "blueprint_finding": 3}, "query_type": "motif_query", "thread_key": "timogilvie/wavemill#225", "issue_number": "225", "quality_tiers": {"assumption_check": 3, "weak_supervision": 3}, "repo_full_name": "timogilvie/wavemill", "training_usage": "hard_negative", "source_motif_id": "graph-pattern-motif-thread-da74364520f48d8e", "graph_gold_label": "weak_supervision_needs_review", "changed_file_labels": {}}, "text": "Graph query export: Feedback exposes missing tests or CI\nQuery id: test_ci_gap_after_feedback\nQuery type: motif_query\nIntent: Hard negatives for feedback/fix chains without adequate guardrails.\nMotif: test_ci_gap_after_feedback\nTraining usage: hard_negative\nGraph gold label: weak_supervision_needs_review\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#225\nEvidence:\nGraph motif: Feedback or fix context exposes missing test/CI guardrails\nMotif id: test_ci_gap_after_feedback\nPolarity: bad\nTraining usage: hard_negative\nSeverity: high\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#225\nGraph gold label: weak_supervision_needs_review\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: timogilvie/wavemill#225\nRepo: timogilvie/wavemill\nIssue/PR number: 225\nGraph consistency label: weak_supervision_needs_review\nNodes: 23\nEdges: 28\nNode types: {'link_quality': 6, 'commit': 5, 'alignment': 3, 'blueprint_finding': 3, 'thread': 1, 'repo': 1, 'comment': 1, 'comment_chain': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'chain_has_link_quality': 6, 'comment_chain_links_commit': 5, 'alignment_uses_comment': 3, 'alignment_uses_finding': 3, 'comment_aligns_finding': 3, 'repo_has_thread': 1, 'thread_has_comment': 1, 'thread_has_comment_chain': 1, 'comment_has_chain': 1, 'thread_has_issue_chain': 1, 'issue_chain_has_comment_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'verification_or_tests': 5, 'ambiguous_needs_more_evidence': 3, 'blueprint_human_gap_alignment': 3, 'thread_has_human_issue_and_fix_context': 2, 'weak blueprint fit': 2, 'issue_or_pull_request_thread': 1, 'test_ci_gap': 1, 'comment_has_related_commit_context': 1, 'partial blueprint fit': 1}\nOutcomes: {'ambiguous_needs_more_evidence': 6}\nQuality tiers: {'weak_supervision': 3, 'assumption_check': 3}\nCI labels: {}\nCurriculum targets:\n- Turn human feedback into regression tests and CI gates.\n- Penalize fixes that do not add or exercise verification for affected workflows.\nAssumption checks:\n- Did the fix add tests for the exact complaint?\n- Does CI run those tests, or is verification only implied?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/timogilvie/wavemill", "source_id": "graph-query-motif_query-d3ab025e03c0b3e9", "synthetic": false, "gold_label": "", "graph_label": "", "source_path": "/data/distillate/foundry_data/graph_queries/test_ci_gap_after_feedback/shard-0.jsonl", "bundle_label": "", "priority_band": "", "priority_score": 0, "repo_full_name": "timogilvie/wavemill", "source_dataset": "graph_queries/test_ci_gap_after_feedback", "training_usage": "hard_negative"}}}, {"ruleId": "foundry_test_ci_gap", "level": "error", "message": {"text": "Foundry mined test ci gap after feedback: timogilvie/wavemill"}, "properties": {"repobilityId": 420362, "scanner": "foundry_dataset", "fingerprint": "daef41f3cee551e7b28787e9cefde3dce50653d585bfd5f5c61c5400df9e60c2", "category": "testing", "severity": "high", "confidence": 0.78, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Imported from mined Foundry/Fable5 evidence with real GitHub/source provenance. Review source_id before acting.", "evidence": {"meta": {"kind": "graph_query_record", "title": "Feedback exposes missing tests or CI", "intent": "Hard negatives for feedback/fix chains without adequate guardrails.", "labels": {"test_ci_gap": 1, "weak blueprint fit": 2, "partial blueprint fit": 1, "verification_or_tests": 1, "issue_or_pull_request_thread": 1, "ambiguous_needs_more_evidence": 3, "blueprint_human_gap_alignment": 3, "comment_has_related_commit_context": 1, "thread_has_human_issue_and_fix_context": 2}, "source": "graph_query_export", "motif_id": "test_ci_gap_after_feedback", "outcomes": {"ambiguous_needs_more_evidence": 6}, "polarity": "bad", "query_id": "test_ci_gap_after_feedback", "severity": "high", "ci_labels": {}, "synthetic": false, "edge_count": 24, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 1, "thread_has_comment": 1, "alignment_uses_comment": 3, "alignment_uses_finding": 3, "chain_has_link_quality": 6, "comment_aligns_finding": 3, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 1, "comment_chain_links_commit": 1, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 1}, "node_count": 19, "node_types": {"repo": 1, "commit": 1, "thread": 1, "comment": 1, "alignment": 3, "fix_outcome": 1, "issue_chain": 1, "link_quality": 6, "comment_chain": 1, "blueprint_finding": 3}, "query_type": "motif_query", "thread_key": "timogilvie/wavemill#222", "issue_number": "222", "quality_tiers": {"assumption_check": 3, "weak_supervision": 3}, "repo_full_name": "timogilvie/wavemill", "training_usage": "hard_negative", "source_motif_id": "graph-pattern-motif-thread-0ae432407f5f0369", "graph_gold_label": "weak_supervision_needs_review", "changed_file_labels": {}}, "text": "Graph query export: Feedback exposes missing tests or CI\nQuery id: test_ci_gap_after_feedback\nQuery type: motif_query\nIntent: Hard negatives for feedback/fix chains without adequate guardrails.\nMotif: test_ci_gap_after_feedback\nTraining usage: hard_negative\nGraph gold label: weak_supervision_needs_review\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#222\nEvidence:\nGraph motif: Feedback or fix context exposes missing test/CI guardrails\nMotif id: test_ci_gap_after_feedback\nPolarity: bad\nTraining usage: hard_negative\nSeverity: high\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#222\nGraph gold label: weak_supervision_needs_review\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: timogilvie/wavemill#222\nRepo: timogilvie/wavemill\nIssue/PR number: 222\nGraph consistency label: weak_supervision_needs_review\nNodes: 19\nEdges: 24\nNode types: {'link_quality': 6, 'alignment': 3, 'blueprint_finding': 3, 'thread': 1, 'repo': 1, 'comment': 1, 'comment_chain': 1, 'commit': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'chain_has_link_quality': 6, 'alignment_uses_comment': 3, 'alignment_uses_finding': 3, 'comment_aligns_finding': 3, 'repo_has_thread': 1, 'thread_has_comment': 1, 'thread_has_comment_chain': 1, 'comment_has_chain': 1, 'comment_chain_links_commit': 1, 'thread_has_issue_chain': 1, 'issue_chain_has_comment_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'ambiguous_needs_more_evidence': 3, 'blueprint_human_gap_alignment': 3, 'thread_has_human_issue_and_fix_context': 2, 'weak blueprint fit': 2, 'issue_or_pull_request_thread': 1, 'test_ci_gap': 1, 'comment_has_related_commit_context': 1, 'verification_or_tests': 1, 'partial blueprint fit': 1}\nOutcomes: {'ambiguous_needs_more_evidence': 6}\nQuality tiers: {'weak_supervision': 3, 'assumption_check': 3}\nCI labels: {}\nCurriculum targets:\n- Turn human feedback into regression tests and CI gates.\n- Penalize fixes that do not add or exercise verification for affected workflows.\nAssumption checks:\n- Did the fix add tests for the exact complaint?\n- Does CI run those tests, or is verification only implied?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/timogilvie/wavemill", "source_id": "graph-query-motif_query-fe0f8f62471a1261", "synthetic": false, "gold_label": "", "graph_label": "", "source_path": "/data/distillate/foundry_data/graph_queries/test_ci_gap_after_feedback/shard-0.jsonl", "bundle_label": "", "priority_band": "", "priority_score": 0, "repo_full_name": "timogilvie/wavemill", "source_dataset": "graph_queries/test_ci_gap_after_feedback", "training_usage": "hard_negative"}}}, {"ruleId": "foundry_test_ci_gap", "level": "error", "message": {"text": "Foundry mined test ci gap after feedback: timogilvie/wavemill"}, "properties": {"repobilityId": 420361, "scanner": "foundry_dataset", "fingerprint": "0b3f8f773f61143ff549b3a898d3d640a7f18b4a5c2510762aea659a1d504906", "category": "testing", "severity": "high", "confidence": 0.78, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Imported from mined Foundry/Fable5 evidence with real GitHub/source provenance. Review source_id before acting.", "evidence": {"meta": {"kind": "graph_query_record", "title": "Feedback exposes missing tests or CI", "intent": "Hard negatives for feedback/fix chains without adequate guardrails.", "labels": {"test_ci_gap": 1, "weak blueprint fit": 2, "partial blueprint fit": 1, "verification_or_tests": 1, "human_feedback_general": 1, "unlinked_human_feedback": 1, "issue_or_pull_request_thread": 1, "ambiguous_needs_more_evidence": 4, "blueprint_human_gap_alignment": 3, "comment_has_related_commit_context": 1, "thread_has_human_issue_and_fix_context": 2}, "source": "graph_query_export", "motif_id": "test_ci_gap_after_feedback", "outcomes": {"ambiguous_needs_more_evidence": 8}, "polarity": "bad", "query_id": "test_ci_gap_after_feedback", "severity": "high", "ci_labels": {}, "synthetic": false, "edge_count": 29, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 2, "thread_has_comment": 2, "alignment_uses_comment": 3, "alignment_uses_finding": 3, "chain_has_link_quality": 7, "comment_aligns_finding": 3, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 2, "comment_chain_links_commit": 1, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 2}, "node_count": 22, "node_types": {"repo": 1, "commit": 1, "thread": 1, "comment": 2, "alignment": 3, "fix_outcome": 1, "issue_chain": 1, "link_quality": 7, "comment_chain": 2, "blueprint_finding": 3}, "query_type": "motif_query", "thread_key": "timogilvie/wavemill#220", "issue_number": "220", "quality_tiers": {"unresolved": 1, "assumption_check": 3, "weak_supervision": 3}, "repo_full_name": "timogilvie/wavemill", "training_usage": "hard_negative", "source_motif_id": "graph-pattern-motif-thread-1244eb7fe8b507e3", "graph_gold_label": "weak_supervision_needs_review", "changed_file_labels": {}}, "text": "Graph query export: Feedback exposes missing tests or CI\nQuery id: test_ci_gap_after_feedback\nQuery type: motif_query\nIntent: Hard negatives for feedback/fix chains without adequate guardrails.\nMotif: test_ci_gap_after_feedback\nTraining usage: hard_negative\nGraph gold label: weak_supervision_needs_review\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#220\nEvidence:\nGraph motif: Feedback or fix context exposes missing test/CI guardrails\nMotif id: test_ci_gap_after_feedback\nPolarity: bad\nTraining usage: hard_negative\nSeverity: high\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#220\nGraph gold label: weak_supervision_needs_review\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: timogilvie/wavemill#220\nRepo: timogilvie/wavemill\nIssue/PR number: 220\nGraph consistency label: weak_supervision_needs_review\nNodes: 22\nEdges: 29\nNode types: {'link_quality': 7, 'alignment': 3, 'blueprint_finding': 3, 'comment': 2, 'comment_chain': 2, 'thread': 1, 'repo': 1, 'commit': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'chain_has_link_quality': 7, 'alignment_uses_comment': 3, 'alignment_uses_finding': 3, 'comment_aligns_finding': 3, 'thread_has_comment': 2, 'thread_has_comment_chain': 2, 'comment_has_chain': 2, 'issue_chain_has_comment_chain': 2, 'repo_has_thread': 1, 'comment_chain_links_commit': 1, 'thread_has_issue_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'ambiguous_needs_more_evidence': 4, 'blueprint_human_gap_alignment': 3, 'thread_has_human_issue_and_fix_context': 2, 'weak blueprint fit': 2, 'issue_or_pull_request_thread': 1, 'test_ci_gap': 1, 'human_feedback_general': 1, 'comment_has_related_commit_context': 1, 'verification_or_tests': 1, 'unlinked_human_feedback': 1, 'partial blueprint fit': 1}\nOutcomes: {'ambiguous_needs_more_evidence': 8}\nQuality tiers: {'weak_supervision': 3, 'assumption_check': 3, 'unresolved': 1}\nCI labels: {}\nCurriculum targets:\n- Turn human feedback into regression tests and CI gates.\n- Penalize fixes that do not add or exercise verification for affected workflows.\nAssumption checks:\n- Did the fix add tests for the exact complaint?\n- Does CI run those tests, or is verification only implied?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/timogilvie/wavemill", "source_id": "graph-query-motif_query-e0be17af978473f0", "synthetic": false, "gold_label": "", "graph_label": "", "source_path": "/data/distillate/foundry_data/graph_queries/test_ci_gap_after_feedback/shard-0.jsonl", "bundle_label": "", "priority_band": "", "priority_score": 0, "repo_full_name": "timogilvie/wavemill", "source_dataset": "graph_queries/test_ci_gap_after_feedback", "training_usage": "hard_negative"}}}, {"ruleId": "foundry_test_ci_gap", "level": "error", "message": {"text": "Foundry mined test ci gap after feedback: timogilvie/wavemill"}, "properties": {"repobilityId": 420360, "scanner": "foundry_dataset", "fingerprint": "0981bb87ff22bc9b3386cf9057a6394c381402bea6172f7c730e372583a755c9", "category": "testing", "severity": "high", "confidence": 0.78, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Imported from mined Foundry/Fable5 evidence with real GitHub/source provenance. Review source_id before acting.", "evidence": {"meta": {"kind": "graph_query_record", "title": "Feedback exposes missing tests or CI", "intent": "Hard negatives for feedback/fix chains without adequate guardrails.", "labels": {"test_ci_gap": 1, "weak blueprint fit": 2, "partial blueprint fit": 1, "verification_or_tests": 4, "human_feedback_general": 1, "unlinked_human_feedback": 1, "issue_or_pull_request_thread": 1, "ambiguous_needs_more_evidence": 4, "blueprint_human_gap_alignment": 3, "comment_has_related_commit_context": 1, "thread_has_human_issue_and_fix_context": 2}, "source": "graph_query_export", "motif_id": "test_ci_gap_after_feedback", "outcomes": {"ambiguous_needs_more_evidence": 8}, "polarity": "bad", "query_id": "test_ci_gap_after_feedback", "severity": "high", "ci_labels": {}, "synthetic": false, "edge_count": 32, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 2, "thread_has_comment": 2, "alignment_uses_comment": 3, "alignment_uses_finding": 3, "chain_has_link_quality": 7, "comment_aligns_finding": 3, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 2, "comment_chain_links_commit": 4, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 2}, "node_count": 25, "node_types": {"repo": 1, "commit": 4, "thread": 1, "comment": 2, "alignment": 3, "fix_outcome": 1, "issue_chain": 1, "link_quality": 7, "comment_chain": 2, "blueprint_finding": 3}, "query_type": "motif_query", "thread_key": "timogilvie/wavemill#205", "issue_number": "205", "quality_tiers": {"unresolved": 1, "assumption_check": 3, "weak_supervision": 3}, "repo_full_name": "timogilvie/wavemill", "training_usage": "hard_negative", "source_motif_id": "graph-pattern-motif-thread-b8f0a17be5f90058", "graph_gold_label": "weak_supervision_needs_review", "changed_file_labels": {}}, "text": "Graph query export: Feedback exposes missing tests or CI\nQuery id: test_ci_gap_after_feedback\nQuery type: motif_query\nIntent: Hard negatives for feedback/fix chains without adequate guardrails.\nMotif: test_ci_gap_after_feedback\nTraining usage: hard_negative\nGraph gold label: weak_supervision_needs_review\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#205\nEvidence:\nGraph motif: Feedback or fix context exposes missing test/CI guardrails\nMotif id: test_ci_gap_after_feedback\nPolarity: bad\nTraining usage: hard_negative\nSeverity: high\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#205\nGraph gold label: weak_supervision_needs_review\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: timogilvie/wavemill#205\nRepo: timogilvie/wavemill\nIssue/PR number: 205\nGraph consistency label: weak_supervision_needs_review\nNodes: 25\nEdges: 32\nNode types: {'link_quality': 7, 'commit': 4, 'alignment': 3, 'blueprint_finding': 3, 'comment': 2, 'comment_chain': 2, 'thread': 1, 'repo': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'chain_has_link_quality': 7, 'comment_chain_links_commit': 4, 'alignment_uses_comment': 3, 'alignment_uses_finding': 3, 'comment_aligns_finding': 3, 'thread_has_comment': 2, 'thread_has_comment_chain': 2, 'comment_has_chain': 2, 'issue_chain_has_comment_chain': 2, 'repo_has_thread': 1, 'thread_has_issue_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'verification_or_tests': 4, 'ambiguous_needs_more_evidence': 4, 'blueprint_human_gap_alignment': 3, 'thread_has_human_issue_and_fix_context': 2, 'weak blueprint fit': 2, 'issue_or_pull_request_thread': 1, 'test_ci_gap': 1, 'human_feedback_general': 1, 'comment_has_related_commit_context': 1, 'unlinked_human_feedback': 1, 'partial blueprint fit': 1}\nOutcomes: {'ambiguous_needs_more_evidence': 8}\nQuality tiers: {'weak_supervision': 3, 'assumption_check': 3, 'unresolved': 1}\nCI labels: {}\nCurriculum targets:\n- Turn human feedback into regression tests and CI gates.\n- Penalize fixes that do not add or exercise verification for affected workflows.\nAssumption checks:\n- Did the fix add tests for the exact complaint?\n- Does CI run those tests, or is verification only implied?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/timogilvie/wavemill", "source_id": "graph-query-motif_query-fdb0e5136c437205", "synthetic": false, "gold_label": "", "graph_label": "", "source_path": "/data/distillate/foundry_data/graph_queries/test_ci_gap_after_feedback/shard-0.jsonl", "bundle_label": "", "priority_band": "", "priority_score": 0, "repo_full_name": "timogilvie/wavemill", "source_dataset": "graph_queries/test_ci_gap_after_feedback", "training_usage": "hard_negative"}}}, {"ruleId": "foundry_test_ci_gap", "level": "error", "message": {"text": "Foundry mined test ci gap after feedback: timogilvie/wavemill"}, "properties": {"repobilityId": 420359, "scanner": "foundry_dataset", "fingerprint": "ae93afda08b8f6854d45992e04cd3fb08d0fcaa2cc8dd7a4dfd633a504e829d6", "category": "testing", "severity": "high", "confidence": 0.78, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Imported from mined Foundry/Fable5 evidence with real GitHub/source provenance. Review source_id before acting.", "evidence": {"meta": {"kind": "graph_query_record", "title": "Feedback exposes missing tests or CI", "intent": "Hard negatives for feedback/fix chains without adequate guardrails.", "labels": {"test_ci_gap": 1, "weak blueprint fit": 2, "partial blueprint fit": 1, "verification_or_tests": 3, "human_feedback_general": 1, "unlinked_human_feedback": 1, "issue_or_pull_request_thread": 1, "ambiguous_needs_more_evidence": 4, "blueprint_human_gap_alignment": 3, "comment_has_related_commit_context": 1, "thread_has_human_issue_and_fix_context": 2}, "source": "graph_query_export", "motif_id": "test_ci_gap_after_feedback", "outcomes": {"ambiguous_needs_more_evidence": 8}, "polarity": "bad", "query_id": "test_ci_gap_after_feedback", "severity": "high", "ci_labels": {}, "synthetic": false, "edge_count": 31, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 2, "thread_has_comment": 2, "alignment_uses_comment": 3, "alignment_uses_finding": 3, "chain_has_link_quality": 7, "comment_aligns_finding": 3, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 2, "comment_chain_links_commit": 3, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 2}, "node_count": 24, "node_types": {"repo": 1, "commit": 3, "thread": 1, "comment": 2, "alignment": 3, "fix_outcome": 1, "issue_chain": 1, "link_quality": 7, "comment_chain": 2, "blueprint_finding": 3}, "query_type": "motif_query", "thread_key": "timogilvie/wavemill#196", "issue_number": "196", "quality_tiers": {"unresolved": 1, "assumption_check": 3, "weak_supervision": 3}, "repo_full_name": "timogilvie/wavemill", "training_usage": "hard_negative", "source_motif_id": "graph-pattern-motif-thread-4a693d080631f9e8", "graph_gold_label": "weak_supervision_needs_review", "changed_file_labels": {}}, "text": "Graph query export: Feedback exposes missing tests or CI\nQuery id: test_ci_gap_after_feedback\nQuery type: motif_query\nIntent: Hard negatives for feedback/fix chains without adequate guardrails.\nMotif: test_ci_gap_after_feedback\nTraining usage: hard_negative\nGraph gold label: weak_supervision_needs_review\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#196\nEvidence:\nGraph motif: Feedback or fix context exposes missing test/CI guardrails\nMotif id: test_ci_gap_after_feedback\nPolarity: bad\nTraining usage: hard_negative\nSeverity: high\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#196\nGraph gold label: weak_supervision_needs_review\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: timogilvie/wavemill#196\nRepo: timogilvie/wavemill\nIssue/PR number: 196\nGraph consistency label: weak_supervision_needs_review\nNodes: 24\nEdges: 31\nNode types: {'link_quality': 7, 'commit': 3, 'alignment': 3, 'blueprint_finding': 3, 'comment': 2, 'comment_chain': 2, 'thread': 1, 'repo': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'chain_has_link_quality': 7, 'comment_chain_links_commit': 3, 'alignment_uses_comment': 3, 'alignment_uses_finding': 3, 'comment_aligns_finding': 3, 'thread_has_comment': 2, 'thread_has_comment_chain': 2, 'comment_has_chain': 2, 'issue_chain_has_comment_chain': 2, 'repo_has_thread': 1, 'thread_has_issue_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'ambiguous_needs_more_evidence': 4, 'verification_or_tests': 3, 'blueprint_human_gap_alignment': 3, 'thread_has_human_issue_and_fix_context': 2, 'weak blueprint fit': 2, 'issue_or_pull_request_thread': 1, 'human_feedback_general': 1, 'test_ci_gap': 1, 'unlinked_human_feedback': 1, 'comment_has_related_commit_context': 1, 'partial blueprint fit': 1}\nOutcomes: {'ambiguous_needs_more_evidence': 8}\nQuality tiers: {'weak_supervision': 3, 'assumption_check': 3, 'unresolved': 1}\nCI labels: {}\nCurriculum targets:\n- Turn human feedback into regression tests and CI gates.\n- Penalize fixes that do not add or exercise verification for affected workflows.\nAssumption checks:\n- Did the fix add tests for the exact complaint?\n- Does CI run those tests, or is verification only implied?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/timogilvie/wavemill", "source_id": "graph-query-motif_query-92d90efcf98eb244", "synthetic": false, "gold_label": "", "graph_label": "", "source_path": "/data/distillate/foundry_data/graph_queries/test_ci_gap_after_feedback/shard-0.jsonl", "bundle_label": "", "priority_band": "", "priority_score": 0, "repo_full_name": "timogilvie/wavemill", "source_dataset": "graph_queries/test_ci_gap_after_feedback", "training_usage": "hard_negative"}}}, {"ruleId": "foundry_test_ci_gap", "level": "error", "message": {"text": "Foundry mined test ci gap after feedback: timogilvie/wavemill"}, "properties": {"repobilityId": 420358, "scanner": "foundry_dataset", "fingerprint": "f6872868ebb938cd5ad7b7e9aae393b6cac2ed333c9ffb421bd333d102986c0e", "category": "testing", "severity": "high", "confidence": 0.78, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Imported from mined Foundry/Fable5 evidence with real GitHub/source provenance. Review source_id before acting.", "evidence": {"meta": {"kind": "graph_query_record", "title": "Feedback exposes missing tests or CI", "intent": "Hard negatives for feedback/fix chains without adequate guardrails.", "labels": {"test_ci_gap": 1, "weak blueprint fit": 2, "partial blueprint fit": 1, "verification_or_tests": 3, "human_feedback_general": 2, "unlinked_human_feedback": 2, "issue_or_pull_request_thread": 1, "ambiguous_needs_more_evidence": 5, "blueprint_human_gap_alignment": 3, "comment_has_related_commit_context": 1, "thread_has_human_issue_and_fix_context": 2}, "source": "graph_query_export", "motif_id": "test_ci_gap_after_feedback", "outcomes": {"ambiguous_needs_more_evidence": 10}, "polarity": "bad", "query_id": "test_ci_gap_after_feedback", "severity": "high", "ci_labels": {}, "synthetic": false, "edge_count": 36, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 3, "thread_has_comment": 3, "alignment_uses_comment": 3, "alignment_uses_finding": 3, "chain_has_link_quality": 8, "comment_aligns_finding": 3, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 3, "comment_chain_links_commit": 3, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 3}, "node_count": 27, "node_types": {"repo": 1, "commit": 3, "thread": 1, "comment": 3, "alignment": 3, "fix_outcome": 1, "issue_chain": 1, "link_quality": 8, "comment_chain": 3, "blueprint_finding": 3}, "query_type": "motif_query", "thread_key": "timogilvie/wavemill#195", "issue_number": "195", "quality_tiers": {"unresolved": 2, "assumption_check": 3, "weak_supervision": 3}, "repo_full_name": "timogilvie/wavemill", "training_usage": "hard_negative", "source_motif_id": "graph-pattern-motif-thread-621c71582c10d038", "graph_gold_label": "weak_supervision_needs_review", "changed_file_labels": {}}, "text": "Graph query export: Feedback exposes missing tests or CI\nQuery id: test_ci_gap_after_feedback\nQuery type: motif_query\nIntent: Hard negatives for feedback/fix chains without adequate guardrails.\nMotif: test_ci_gap_after_feedback\nTraining usage: hard_negative\nGraph gold label: weak_supervision_needs_review\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#195\nEvidence:\nGraph motif: Feedback or fix context exposes missing test/CI guardrails\nMotif id: test_ci_gap_after_feedback\nPolarity: bad\nTraining usage: hard_negative\nSeverity: high\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#195\nGraph gold label: weak_supervision_needs_review\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: timogilvie/wavemill#195\nRepo: timogilvie/wavemill\nIssue/PR number: 195\nGraph consistency label: weak_supervision_needs_review\nNodes: 27\nEdges: 36\nNode types: {'link_quality': 8, 'comment': 3, 'comment_chain': 3, 'commit': 3, 'alignment': 3, 'blueprint_finding': 3, 'thread': 1, 'repo': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'chain_has_link_quality': 8, 'thread_has_comment': 3, 'thread_has_comment_chain': 3, 'comment_has_chain': 3, 'comment_chain_links_commit': 3, 'issue_chain_has_comment_chain': 3, 'alignment_uses_comment': 3, 'alignment_uses_finding': 3, 'comment_aligns_finding': 3, 'repo_has_thread': 1, 'thread_has_issue_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'ambiguous_needs_more_evidence': 5, 'verification_or_tests': 3, 'blueprint_human_gap_alignment': 3, 'human_feedback_general': 2, 'unlinked_human_feedback': 2, 'thread_has_human_issue_and_fix_context': 2, 'weak blueprint fit': 2, 'issue_or_pull_request_thread': 1, 'test_ci_gap': 1, 'comment_has_related_commit_context': 1, 'partial blueprint fit': 1}\nOutcomes: {'ambiguous_needs_more_evidence': 10}\nQuality tiers: {'weak_supervision': 3, 'assumption_check': 3, 'unresolved': 2}\nCI labels: {}\nCurriculum targets:\n- Turn human feedback into regression tests and CI gates.\n- Penalize fixes that do not add or exercise verification for affected workflows.\nAssumption checks:\n- Did the fix add tests for the exact complaint?\n- Does CI run those tests, or is verification only implied?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/timogilvie/wavemill", "source_id": "graph-query-motif_query-f6e88ae1a57a7f73", "synthetic": false, "gold_label": "", "graph_label": "", "source_path": "/data/distillate/foundry_data/graph_queries/test_ci_gap_after_feedback/shard-0.jsonl", "bundle_label": "", "priority_band": "", "priority_score": 0, "repo_full_name": "timogilvie/wavemill", "source_dataset": "graph_queries/test_ci_gap_after_feedback", "training_usage": "hard_negative"}}}, {"ruleId": "foundry_test_ci_gap", "level": "error", "message": {"text": "Foundry mined test ci gap after feedback: timogilvie/wavemill"}, "properties": {"repobilityId": 420357, "scanner": "foundry_dataset", "fingerprint": "6e88bc7cdb9010a93c02d2cf2d476db8aa0980bbd5141cbba73e7b082785ed5b", "category": "testing", "severity": "high", "confidence": 0.78, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Imported from mined Foundry/Fable5 evidence with real GitHub/source provenance. Review source_id before acting.", "evidence": {"meta": {"kind": "graph_query_record", "title": "Feedback exposes missing tests or CI", "intent": "Hard negatives for feedback/fix chains without adequate guardrails.", "labels": {"test_ci_gap": 2, "weak blueprint fit": 2, "partial blueprint fit": 1, "verification_or_tests": 2, "human_feedback_general": 2, "unlinked_human_feedback": 2, "issue_or_pull_request_thread": 1, "not_resolved_or_not_observed": 1, "ambiguous_needs_more_evidence": 5, "blueprint_human_gap_alignment": 6, "comment_has_related_commit_context": 1, "human_reported_issue_no_linked_fix": 1, "thread_has_human_issue_and_fix_context": 2}, "source": "graph_query_export", "motif_id": "test_ci_gap_after_feedback", "outcomes": {"not_resolved_or_not_observed": 2, "ambiguous_needs_more_evidence": 10}, "polarity": "bad", "query_id": "test_ci_gap_after_feedback", "severity": "high", "ci_labels": {}, "synthetic": false, "edge_count": 52, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 4, "thread_has_comment": 4, "alignment_uses_comment": 6, "alignment_uses_finding": 6, "chain_has_link_quality": 12, "comment_aligns_finding": 6, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 4, "comment_chain_links_commit": 2, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 4}, "node_count": 35, "node_types": {"repo": 1, "commit": 2, "thread": 1, "comment": 4, "alignment": 6, "fix_outcome": 1, "issue_chain": 1, "link_quality": 12, "comment_chain": 4, "blueprint_finding": 3}, "query_type": "motif_query", "thread_key": "timogilvie/wavemill#173", "issue_number": "173", "quality_tiers": {"unresolved": 3, "assumption_check": 6, "weak_supervision": 3}, "repo_full_name": "timogilvie/wavemill", "training_usage": "hard_negative", "source_motif_id": "graph-pattern-motif-thread-7089af7a91124dce", "graph_gold_label": "weak_supervision_needs_review", "changed_file_labels": {}}, "text": "Graph query export: Feedback exposes missing tests or CI\nQuery id: test_ci_gap_after_feedback\nQuery type: motif_query\nIntent: Hard negatives for feedback/fix chains without adequate guardrails.\nMotif: test_ci_gap_after_feedback\nTraining usage: hard_negative\nGraph gold label: weak_supervision_needs_review\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#173\nEvidence:\nGraph motif: Feedback or fix context exposes missing test/CI guardrails\nMotif id: test_ci_gap_after_feedback\nPolarity: bad\nTraining usage: hard_negative\nSeverity: high\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#173\nGraph gold label: weak_supervision_needs_review\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: timogilvie/wavemill#173\nRepo: timogilvie/wavemill\nIssue/PR number: 173\nGraph consistency label: weak_supervision_needs_review\nNodes: 35\nEdges: 52\nNode types: {'link_quality': 12, 'alignment': 6, 'comment': 4, 'comment_chain': 4, 'blueprint_finding': 3, 'commit': 2, 'thread': 1, 'repo': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'chain_has_link_quality': 12, 'alignment_uses_comment': 6, 'alignment_uses_finding': 6, 'comment_aligns_finding': 6, 'thread_has_comment': 4, 'thread_has_comment_chain': 4, 'comment_has_chain': 4, 'issue_chain_has_comment_chain': 4, 'comment_chain_links_commit': 2, 'repo_has_thread': 1, 'thread_has_issue_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'blueprint_human_gap_alignment': 6, 'ambiguous_needs_more_evidence': 5, 'test_ci_gap': 2, 'human_feedback_general': 2, 'verification_or_tests': 2, 'unlinked_human_feedback': 2, 'thread_has_human_issue_and_fix_context': 2, 'weak blueprint fit': 2, 'issue_or_pull_request_thread': 1, 'comment_has_related_commit_context': 1, 'human_reported_issue_no_linked_fix': 1, 'not_resolved_or_not_observed': 1, 'partial blueprint fit': 1}\nOutcomes: {'ambiguous_needs_more_evidence': 10, 'not_resolved_or_not_observed': 2}\nQuality tiers: {'assumption_check': 6, 'weak_supervision': 3, 'unresolved': 3}\nCI labels: {}\nCurriculum targets:\n- Turn human feedback into regression tests and CI gates.\n- Penalize fixes that do not add or exercise verification for affected workflows.\nAssumption checks:\n- Did the fix add tests for the exact complaint?\n- Does CI run those tests, or is verification only implied?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/timogilvie/wavemill", "source_id": "graph-query-motif_query-d64d515df32c9b81", "synthetic": false, "gold_label": "", "graph_label": "", "source_path": "/data/distillate/foundry_data/graph_queries/test_ci_gap_after_feedback/shard-0.jsonl", "bundle_label": "", "priority_band": "", "priority_score": 0, "repo_full_name": "timogilvie/wavemill", "source_dataset": "graph_queries/test_ci_gap_after_feedback", "training_usage": "hard_negative"}}}, {"ruleId": "foundry_test_ci_gap", "level": "error", "message": {"text": "Foundry mined test ci gap after feedback: timogilvie/wavemill"}, "properties": {"repobilityId": 420356, "scanner": "foundry_dataset", "fingerprint": "56b03bdd6b0a4b365b73aafce44221e9cdb06e5eac77f5ec460a47f5ab023380", "category": "testing", "severity": "high", "confidence": 0.78, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Imported from mined Foundry/Fable5 evidence with real GitHub/source provenance. Review source_id before acting.", "evidence": {"meta": {"kind": "graph_query_record", "title": "Feedback exposes missing tests or CI", "intent": "Hard negatives for feedback/fix chains without adequate guardrails.", "labels": {"test_ci_gap": 1, "weak blueprint fit": 2, "agent_instruction_gap": 1, "partial blueprint fit": 1, "human_feedback_general": 1, "unlinked_human_feedback": 1, "issue_or_pull_request_thread": 1, "not_resolved_or_not_observed": 4, "ambiguous_needs_more_evidence": 1, "blueprint_human_gap_alignment": 3, "human_reported_issue_no_linked_fix": 2, "thread_has_human_issue_without_fix_context": 2}, "source": "graph_query_export", "motif_id": "test_ci_gap_after_feedback", "outcomes": {"not_resolved_or_not_observed": 8, "ambiguous_needs_more_evidence": 2}, "polarity": "bad", "query_id": "test_ci_gap_after_feedback", "severity": "high", "ci_labels": {}, "synthetic": false, "edge_count": 33, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 3, "thread_has_comment": 3, "alignment_uses_comment": 3, "alignment_uses_finding": 3, "chain_has_link_quality": 8, "comment_aligns_finding": 3, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 3, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 3}, "node_count": 24, "node_types": {"repo": 1, "thread": 1, "comment": 3, "alignment": 3, "fix_outcome": 1, "issue_chain": 1, "link_quality": 8, "comment_chain": 3, "blueprint_finding": 3}, "query_type": "motif_query", "thread_key": "timogilvie/wavemill#172", "issue_number": "172", "quality_tiers": {"unresolved": 5, "assumption_check": 3}, "repo_full_name": "timogilvie/wavemill", "training_usage": "hard_negative", "source_motif_id": "graph-pattern-motif-thread-23e28c25591a7ebf", "graph_gold_label": "assumption_check", "changed_file_labels": {}}, "text": "Graph query export: Feedback exposes missing tests or CI\nQuery id: test_ci_gap_after_feedback\nQuery type: motif_query\nIntent: Hard negatives for feedback/fix chains without adequate guardrails.\nMotif: test_ci_gap_after_feedback\nTraining usage: hard_negative\nGraph gold label: assumption_check\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#172\nEvidence:\nGraph motif: Feedback or fix context exposes missing test/CI guardrails\nMotif id: test_ci_gap_after_feedback\nPolarity: bad\nTraining usage: hard_negative\nSeverity: high\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#172\nGraph gold label: assumption_check\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: timogilvie/wavemill#172\nRepo: timogilvie/wavemill\nIssue/PR number: 172\nGraph consistency label: assumption_check\nNodes: 24\nEdges: 33\nNode types: {'link_quality': 8, 'comment': 3, 'comment_chain': 3, 'alignment': 3, 'blueprint_finding': 3, 'thread': 1, 'repo': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'chain_has_link_quality': 8, 'thread_has_comment': 3, 'thread_has_comment_chain': 3, 'comment_has_chain': 3, 'issue_chain_has_comment_chain': 3, 'alignment_uses_comment': 3, 'alignment_uses_finding': 3, 'comment_aligns_finding': 3, 'repo_has_thread': 1, 'thread_has_issue_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'not_resolved_or_not_observed': 4, 'blueprint_human_gap_alignment': 3, 'human_reported_issue_no_linked_fix': 2, 'thread_has_human_issue_without_fix_context': 2, 'weak blueprint fit': 2, 'issue_or_pull_request_thread': 1, 'agent_instruction_gap': 1, 'human_feedback_general': 1, 'test_ci_gap': 1, 'unlinked_human_feedback': 1, 'ambiguous_needs_more_evidence': 1, 'partial blueprint fit': 1}\nOutcomes: {'not_resolved_or_not_observed': 8, 'ambiguous_needs_more_evidence': 2}\nQuality tiers: {'unresolved': 5, 'assumption_check': 3}\nCI labels: {}\nCurriculum targets:\n- Turn human feedback into regression tests and CI gates.\n- Penalize fixes that do not add or exercise verification for affected workflows.\nAssumption checks:\n- Did the fix add tests for the exact complaint?\n- Does CI run those tests, or is verification only implied?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/timogilvie/wavemill", "source_id": "graph-query-motif_query-26a684af53e7166e", "synthetic": false, "gold_label": "", "graph_label": "", "source_path": "/data/distillate/foundry_data/graph_queries/test_ci_gap_after_feedback/shard-0.jsonl", "bundle_label": "", "priority_band": "", "priority_score": 0, "repo_full_name": "timogilvie/wavemill", "source_dataset": "graph_queries/test_ci_gap_after_feedback", "training_usage": "hard_negative"}}}, {"ruleId": "foundry_test_ci_gap", "level": "error", "message": {"text": "Foundry mined test ci gap after feedback: timogilvie/wavemill"}, "properties": {"repobilityId": 420355, "scanner": "foundry_dataset", "fingerprint": "24828935f0358d7c3b522862dccef4faaa3e214e8268872ee8b735de5d8808c5", "category": "testing", "severity": "high", "confidence": 0.78, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Imported from mined Foundry/Fable5 evidence with real GitHub/source provenance. Review source_id before acting.", "evidence": {"meta": {"kind": "graph_query_record", "title": "Feedback exposes missing tests or CI", "intent": "Hard negatives for feedback/fix chains without adequate guardrails.", "labels": {"test_ci_gap": 1, "weak blueprint fit": 2, "partial blueprint fit": 1, "verification_or_tests": 5, "issue_or_pull_request_thread": 1, "ambiguous_needs_more_evidence": 3, "blueprint_human_gap_alignment": 3, "comment_has_related_commit_context": 1, "thread_has_human_issue_and_fix_context": 2}, "source": "graph_query_export", "motif_id": "test_ci_gap_after_feedback", "outcomes": {"ambiguous_needs_more_evidence": 6}, "polarity": "bad", "query_id": "test_ci_gap_after_feedback", "severity": "high", "ci_labels": {}, "synthetic": false, "edge_count": 28, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 1, "thread_has_comment": 1, "alignment_uses_comment": 3, "alignment_uses_finding": 3, "chain_has_link_quality": 6, "comment_aligns_finding": 3, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 1, "comment_chain_links_commit": 5, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 1}, "node_count": 23, "node_types": {"repo": 1, "commit": 5, "thread": 1, "comment": 1, "alignment": 3, "fix_outcome": 1, "issue_chain": 1, "link_quality": 6, "comment_chain": 1, "blueprint_finding": 3}, "query_type": "motif_query", "thread_key": "timogilvie/wavemill#152", "issue_number": "152", "quality_tiers": {"assumption_check": 3, "weak_supervision": 3}, "repo_full_name": "timogilvie/wavemill", "training_usage": "hard_negative", "source_motif_id": "graph-pattern-motif-thread-afa21a53985c57ff", "graph_gold_label": "weak_supervision_needs_review", "changed_file_labels": {}}, "text": "Graph query export: Feedback exposes missing tests or CI\nQuery id: test_ci_gap_after_feedback\nQuery type: motif_query\nIntent: Hard negatives for feedback/fix chains without adequate guardrails.\nMotif: test_ci_gap_after_feedback\nTraining usage: hard_negative\nGraph gold label: weak_supervision_needs_review\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#152\nEvidence:\nGraph motif: Feedback or fix context exposes missing test/CI guardrails\nMotif id: test_ci_gap_after_feedback\nPolarity: bad\nTraining usage: hard_negative\nSeverity: high\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#152\nGraph gold label: weak_supervision_needs_review\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: timogilvie/wavemill#152\nRepo: timogilvie/wavemill\nIssue/PR number: 152\nGraph consistency label: weak_supervision_needs_review\nNodes: 23\nEdges: 28\nNode types: {'link_quality': 6, 'commit': 5, 'alignment': 3, 'blueprint_finding': 3, 'thread': 1, 'repo': 1, 'comment': 1, 'comment_chain': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'chain_has_link_quality': 6, 'comment_chain_links_commit': 5, 'alignment_uses_comment': 3, 'alignment_uses_finding': 3, 'comment_aligns_finding': 3, 'repo_has_thread': 1, 'thread_has_comment': 1, 'thread_has_comment_chain': 1, 'comment_has_chain': 1, 'thread_has_issue_chain': 1, 'issue_chain_has_comment_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'verification_or_tests': 5, 'ambiguous_needs_more_evidence': 3, 'blueprint_human_gap_alignment': 3, 'thread_has_human_issue_and_fix_context': 2, 'weak blueprint fit': 2, 'issue_or_pull_request_thread': 1, 'test_ci_gap': 1, 'comment_has_related_commit_context': 1, 'partial blueprint fit': 1}\nOutcomes: {'ambiguous_needs_more_evidence': 6}\nQuality tiers: {'weak_supervision': 3, 'assumption_check': 3}\nCI labels: {}\nCurriculum targets:\n- Turn human feedback into regression tests and CI gates.\n- Penalize fixes that do not add or exercise verification for affected workflows.\nAssumption checks:\n- Did the fix add tests for the exact complaint?\n- Does CI run those tests, or is verification only implied?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/timogilvie/wavemill", "source_id": "graph-query-motif_query-7448f0015d7acb49", "synthetic": false, "gold_label": "", "graph_label": "", "source_path": "/data/distillate/foundry_data/graph_queries/test_ci_gap_after_feedback/shard-0.jsonl", "bundle_label": "", "priority_band": "", "priority_score": 0, "repo_full_name": "timogilvie/wavemill", "source_dataset": "graph_queries/test_ci_gap_after_feedback", "training_usage": "hard_negative"}}}, {"ruleId": "foundry_test_ci_gap", "level": "error", "message": {"text": "Foundry mined test ci gap after feedback: timogilvie/wavemill"}, "properties": {"repobilityId": 420354, "scanner": "foundry_dataset", "fingerprint": "50cacb9f2c4eee322d195e31b380aca6e2bdd64607505ae4614f6e16b04ef6ab", "category": "testing", "severity": "high", "confidence": 0.78, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Imported from mined Foundry/Fable5 evidence with real GitHub/source provenance. Review source_id before acting.", "evidence": {"meta": {"kind": "graph_query_record", "title": "Feedback exposes missing tests or CI", "intent": "Hard negatives for feedback/fix chains without adequate guardrails.", "labels": {"test_ci_gap": 1, "weak blueprint fit": 2, "partial blueprint fit": 1, "verification_or_tests": 5, "issue_or_pull_request_thread": 1, "ambiguous_needs_more_evidence": 3, "blueprint_human_gap_alignment": 3, "comment_has_related_commit_context": 1, "thread_has_human_issue_and_fix_context": 2}, "source": "graph_query_export", "motif_id": "test_ci_gap_after_feedback", "outcomes": {"ambiguous_needs_more_evidence": 6}, "polarity": "bad", "query_id": "test_ci_gap_after_feedback", "severity": "high", "ci_labels": {}, "synthetic": false, "edge_count": 28, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 1, "thread_has_comment": 1, "alignment_uses_comment": 3, "alignment_uses_finding": 3, "chain_has_link_quality": 6, "comment_aligns_finding": 3, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 1, "comment_chain_links_commit": 5, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 1}, "node_count": 23, "node_types": {"repo": 1, "commit": 5, "thread": 1, "comment": 1, "alignment": 3, "fix_outcome": 1, "issue_chain": 1, "link_quality": 6, "comment_chain": 1, "blueprint_finding": 3}, "query_type": "motif_query", "thread_key": "timogilvie/wavemill#141", "issue_number": "141", "quality_tiers": {"assumption_check": 3, "weak_supervision": 3}, "repo_full_name": "timogilvie/wavemill", "training_usage": "hard_negative", "source_motif_id": "graph-pattern-motif-thread-5ba17e1b791ccfde", "graph_gold_label": "weak_supervision_needs_review", "changed_file_labels": {}}, "text": "Graph query export: Feedback exposes missing tests or CI\nQuery id: test_ci_gap_after_feedback\nQuery type: motif_query\nIntent: Hard negatives for feedback/fix chains without adequate guardrails.\nMotif: test_ci_gap_after_feedback\nTraining usage: hard_negative\nGraph gold label: weak_supervision_needs_review\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#141\nEvidence:\nGraph motif: Feedback or fix context exposes missing test/CI guardrails\nMotif id: test_ci_gap_after_feedback\nPolarity: bad\nTraining usage: hard_negative\nSeverity: high\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#141\nGraph gold label: weak_supervision_needs_review\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: timogilvie/wavemill#141\nRepo: timogilvie/wavemill\nIssue/PR number: 141\nGraph consistency label: weak_supervision_needs_review\nNodes: 23\nEdges: 28\nNode types: {'link_quality': 6, 'commit': 5, 'alignment': 3, 'blueprint_finding': 3, 'thread': 1, 'repo': 1, 'comment': 1, 'comment_chain': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'chain_has_link_quality': 6, 'comment_chain_links_commit': 5, 'alignment_uses_comment': 3, 'alignment_uses_finding': 3, 'comment_aligns_finding': 3, 'repo_has_thread': 1, 'thread_has_comment': 1, 'thread_has_comment_chain': 1, 'comment_has_chain': 1, 'thread_has_issue_chain': 1, 'issue_chain_has_comment_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'verification_or_tests': 5, 'ambiguous_needs_more_evidence': 3, 'blueprint_human_gap_alignment': 3, 'thread_has_human_issue_and_fix_context': 2, 'weak blueprint fit': 2, 'issue_or_pull_request_thread': 1, 'test_ci_gap': 1, 'comment_has_related_commit_context': 1, 'partial blueprint fit': 1}\nOutcomes: {'ambiguous_needs_more_evidence': 6}\nQuality tiers: {'weak_supervision': 3, 'assumption_check': 3}\nCI labels: {}\nCurriculum targets:\n- Turn human feedback into regression tests and CI gates.\n- Penalize fixes that do not add or exercise verification for affected workflows.\nAssumption checks:\n- Did the fix add tests for the exact complaint?\n- Does CI run those tests, or is verification only implied?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/timogilvie/wavemill", "source_id": "graph-query-motif_query-f5ea9b853980bc33", "synthetic": false, "gold_label": "", "graph_label": "", "source_path": "/data/distillate/foundry_data/graph_queries/test_ci_gap_after_feedback/shard-0.jsonl", "bundle_label": "", "priority_band": "", "priority_score": 0, "repo_full_name": "timogilvie/wavemill", "source_dataset": "graph_queries/test_ci_gap_after_feedback", "training_usage": "hard_negative"}}}, {"ruleId": "foundry_test_ci_gap", "level": "error", "message": {"text": "Foundry mined test ci gap after feedback: timogilvie/wavemill"}, "properties": {"repobilityId": 420353, "scanner": "foundry_dataset", "fingerprint": "7a640b95885e559da2bda15a2254f9b54ddd943ca46ebc5a776b94a4f056413f", "category": "testing", "severity": "high", "confidence": 0.78, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Imported from mined Foundry/Fable5 evidence with real GitHub/source provenance. Review source_id before acting.", "evidence": {"meta": {"kind": "graph_query_record", "title": "Feedback exposes missing tests or CI", "intent": "Hard negatives for feedback/fix chains without adequate guardrails.", "labels": {"bug_fix": 1, "test_ci_gap": 1, "weak blueprint fit": 2, "partial blueprint fit": 1, "verification_or_tests": 4, "issue_or_pull_request_thread": 1, "blueprint_human_gap_alignment": 3, "thread_has_human_issue_and_fix_context": 2, "claimed_resolved_with_verification_signal": 3, "human_reported_issue_then_verified_fix_attempt": 1}, "source": "graph_query_export", "motif_id": "test_ci_gap_after_feedback", "outcomes": {"claimed_resolved_with_verification_signal": 6}, "polarity": "bad", "query_id": "test_ci_gap_after_feedback", "severity": "high", "ci_labels": {}, "synthetic": false, "edge_count": 28, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 1, "thread_has_comment": 1, "alignment_uses_comment": 3, "alignment_uses_finding": 3, "chain_has_link_quality": 6, "comment_aligns_finding": 3, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 1, "comment_chain_links_commit": 5, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 1}, "node_count": 23, "node_types": {"repo": 1, "commit": 5, "thread": 1, "comment": 1, "alignment": 3, "fix_outcome": 1, "issue_chain": 1, "link_quality": 6, "comment_chain": 1, "blueprint_finding": 3}, "query_type": "motif_query", "thread_key": "timogilvie/wavemill#121", "issue_number": "121", "quality_tiers": {"assumption_check": 3, "weak_supervision": 3}, "repo_full_name": "timogilvie/wavemill", "training_usage": "hard_negative", "source_motif_id": "graph-pattern-motif-thread-1c7f20ff0bc6e21a", "graph_gold_label": "supported_by_verification_signal", "changed_file_labels": {}}, "text": "Graph query export: Feedback exposes missing tests or CI\nQuery id: test_ci_gap_after_feedback\nQuery type: motif_query\nIntent: Hard negatives for feedback/fix chains without adequate guardrails.\nMotif: test_ci_gap_after_feedback\nTraining usage: hard_negative\nGraph gold label: supported_by_verification_signal\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#121\nEvidence:\nGraph motif: Feedback or fix context exposes missing test/CI guardrails\nMotif id: test_ci_gap_after_feedback\nPolarity: bad\nTraining usage: hard_negative\nSeverity: high\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#121\nGraph gold label: supported_by_verification_signal\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: timogilvie/wavemill#121\nRepo: timogilvie/wavemill\nIssue/PR number: 121\nGraph consistency label: supported_by_verification_signal\nNodes: 23\nEdges: 28\nNode types: {'link_quality': 6, 'commit': 5, 'alignment': 3, 'blueprint_finding': 3, 'thread': 1, 'repo': 1, 'comment': 1, 'comment_chain': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'chain_has_link_quality': 6, 'comment_chain_links_commit': 5, 'alignment_uses_comment': 3, 'alignment_uses_finding': 3, 'comment_aligns_finding': 3, 'repo_has_thread': 1, 'thread_has_comment': 1, 'thread_has_comment_chain': 1, 'comment_has_chain': 1, 'thread_has_issue_chain': 1, 'issue_chain_has_comment_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'verification_or_tests': 4, 'claimed_resolved_with_verification_signal': 3, 'blueprint_human_gap_alignment': 3, 'thread_has_human_issue_and_fix_context': 2, 'weak blueprint fit': 2, 'issue_or_pull_request_thread': 1, 'test_ci_gap': 1, 'human_reported_issue_then_verified_fix_attempt': 1, 'bug_fix': 1, 'partial blueprint fit': 1}\nOutcomes: {'claimed_resolved_with_verification_signal': 6}\nQuality tiers: {'weak_supervision': 3, 'assumption_check': 3}\nCI labels: {}\nCurriculum targets:\n- Turn human feedback into regression tests and CI gates.\n- Penalize fixes that do not add or exercise verification for affected workflows.\nAssumption checks:\n- Did the fix add tests for the exact complaint?\n- Does CI run those tests, or is verification only implied?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/timogilvie/wavemill", "source_id": "graph-query-motif_query-05a6b008f63d243b", "synthetic": false, "gold_label": "", "graph_label": "", "source_path": "/data/distillate/foundry_data/graph_queries/test_ci_gap_after_feedback/shard-0.jsonl", "bundle_label": "", "priority_band": "", "priority_score": 0, "repo_full_name": "timogilvie/wavemill", "source_dataset": "graph_queries/test_ci_gap_after_feedback", "training_usage": "hard_negative"}}}, {"ruleId": "foundry_test_ci_gap", "level": "error", "message": {"text": "Foundry mined test ci gap after feedback: timogilvie/wavemill"}, "properties": {"repobilityId": 420352, "scanner": "foundry_dataset", "fingerprint": "1f05378211454ce55499bee0194ed5f7ae0c7eeb67ce38b08bc1fbe15f017d26", "category": "testing", "severity": "high", "confidence": 0.78, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Imported from mined Foundry/Fable5 evidence with real GitHub/source provenance. Review source_id before acting.", "evidence": {"meta": {"kind": "graph_query_record", "title": "Feedback exposes missing tests or CI", "intent": "Hard negatives for feedback/fix chains without adequate guardrails.", "labels": {"test_ci_gap": 1, "weak blueprint fit": 2, "partial blueprint fit": 1, "verification_or_tests": 5, "issue_or_pull_request_thread": 1, "ambiguous_needs_more_evidence": 3, "blueprint_human_gap_alignment": 3, "comment_has_related_commit_context": 1, "thread_has_human_issue_and_fix_context": 2}, "source": "graph_query_export", "motif_id": "test_ci_gap_after_feedback", "outcomes": {"ambiguous_needs_more_evidence": 6}, "polarity": "bad", "query_id": "test_ci_gap_after_feedback", "severity": "high", "ci_labels": {}, "synthetic": false, "edge_count": 28, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 1, "thread_has_comment": 1, "alignment_uses_comment": 3, "alignment_uses_finding": 3, "chain_has_link_quality": 6, "comment_aligns_finding": 3, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 1, "comment_chain_links_commit": 5, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 1}, "node_count": 23, "node_types": {"repo": 1, "commit": 5, "thread": 1, "comment": 1, "alignment": 3, "fix_outcome": 1, "issue_chain": 1, "link_quality": 6, "comment_chain": 1, "blueprint_finding": 3}, "query_type": "motif_query", "thread_key": "timogilvie/wavemill#120", "issue_number": "120", "quality_tiers": {"assumption_check": 3, "weak_supervision": 3}, "repo_full_name": "timogilvie/wavemill", "training_usage": "hard_negative", "source_motif_id": "graph-pattern-motif-thread-c9b9f5b0dc8d904d", "graph_gold_label": "weak_supervision_needs_review", "changed_file_labels": {}}, "text": "Graph query export: Feedback exposes missing tests or CI\nQuery id: test_ci_gap_after_feedback\nQuery type: motif_query\nIntent: Hard negatives for feedback/fix chains without adequate guardrails.\nMotif: test_ci_gap_after_feedback\nTraining usage: hard_negative\nGraph gold label: weak_supervision_needs_review\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#120\nEvidence:\nGraph motif: Feedback or fix context exposes missing test/CI guardrails\nMotif id: test_ci_gap_after_feedback\nPolarity: bad\nTraining usage: hard_negative\nSeverity: high\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#120\nGraph gold label: weak_supervision_needs_review\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: timogilvie/wavemill#120\nRepo: timogilvie/wavemill\nIssue/PR number: 120\nGraph consistency label: weak_supervision_needs_review\nNodes: 23\nEdges: 28\nNode types: {'link_quality': 6, 'commit': 5, 'alignment': 3, 'blueprint_finding': 3, 'thread': 1, 'repo': 1, 'comment': 1, 'comment_chain': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'chain_has_link_quality': 6, 'comment_chain_links_commit': 5, 'alignment_uses_comment': 3, 'alignment_uses_finding': 3, 'comment_aligns_finding': 3, 'repo_has_thread': 1, 'thread_has_comment': 1, 'thread_has_comment_chain': 1, 'comment_has_chain': 1, 'thread_has_issue_chain': 1, 'issue_chain_has_comment_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'verification_or_tests': 5, 'ambiguous_needs_more_evidence': 3, 'blueprint_human_gap_alignment': 3, 'thread_has_human_issue_and_fix_context': 2, 'weak blueprint fit': 2, 'issue_or_pull_request_thread': 1, 'test_ci_gap': 1, 'comment_has_related_commit_context': 1, 'partial blueprint fit': 1}\nOutcomes: {'ambiguous_needs_more_evidence': 6}\nQuality tiers: {'weak_supervision': 3, 'assumption_check': 3}\nCI labels: {}\nCurriculum targets:\n- Turn human feedback into regression tests and CI gates.\n- Penalize fixes that do not add or exercise verification for affected workflows.\nAssumption checks:\n- Did the fix add tests for the exact complaint?\n- Does CI run those tests, or is verification only implied?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/timogilvie/wavemill", "source_id": "graph-query-motif_query-fd07c9d2cee861c7", "synthetic": false, "gold_label": "", "graph_label": "", "source_path": "/data/distillate/foundry_data/graph_queries/test_ci_gap_after_feedback/shard-0.jsonl", "bundle_label": "", "priority_band": "", "priority_score": 0, "repo_full_name": "timogilvie/wavemill", "source_dataset": "graph_queries/test_ci_gap_after_feedback", "training_usage": "hard_negative"}}}, {"ruleId": "foundry_test_ci_gap", "level": "error", "message": {"text": "Foundry mined test ci gap after feedback: timogilvie/wavemill"}, "properties": {"repobilityId": 420351, "scanner": "foundry_dataset", "fingerprint": "2d4e285beff9b3089c86e5a0694e1987b110fc36f10518b14132e790ea273bee", "category": "testing", "severity": "high", "confidence": 0.78, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Imported from mined Foundry/Fable5 evidence with real GitHub/source provenance. Review source_id before acting.", "evidence": {"meta": {"kind": "graph_query_record", "title": "Feedback exposes missing tests or CI", "intent": "Hard negatives for feedback/fix chains without adequate guardrails.", "labels": {"test_ci_gap": 1, "weak blueprint fit": 2, "partial blueprint fit": 1, "verification_or_tests": 5, "issue_or_pull_request_thread": 1, "ambiguous_needs_more_evidence": 3, "blueprint_human_gap_alignment": 3, "comment_has_related_commit_context": 1, "thread_has_human_issue_and_fix_context": 2}, "source": "graph_query_export", "motif_id": "test_ci_gap_after_feedback", "outcomes": {"ambiguous_needs_more_evidence": 6}, "polarity": "bad", "query_id": "test_ci_gap_after_feedback", "severity": "high", "ci_labels": {}, "synthetic": false, "edge_count": 28, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 1, "thread_has_comment": 1, "alignment_uses_comment": 3, "alignment_uses_finding": 3, "chain_has_link_quality": 6, "comment_aligns_finding": 3, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 1, "comment_chain_links_commit": 5, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 1}, "node_count": 23, "node_types": {"repo": 1, "commit": 5, "thread": 1, "comment": 1, "alignment": 3, "fix_outcome": 1, "issue_chain": 1, "link_quality": 6, "comment_chain": 1, "blueprint_finding": 3}, "query_type": "motif_query", "thread_key": "timogilvie/wavemill#118", "issue_number": "118", "quality_tiers": {"assumption_check": 3, "weak_supervision": 3}, "repo_full_name": "timogilvie/wavemill", "training_usage": "hard_negative", "source_motif_id": "graph-pattern-motif-thread-bdef9539105a7a7f", "graph_gold_label": "weak_supervision_needs_review", "changed_file_labels": {}}, "text": "Graph query export: Feedback exposes missing tests or CI\nQuery id: test_ci_gap_after_feedback\nQuery type: motif_query\nIntent: Hard negatives for feedback/fix chains without adequate guardrails.\nMotif: test_ci_gap_after_feedback\nTraining usage: hard_negative\nGraph gold label: weak_supervision_needs_review\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#118\nEvidence:\nGraph motif: Feedback or fix context exposes missing test/CI guardrails\nMotif id: test_ci_gap_after_feedback\nPolarity: bad\nTraining usage: hard_negative\nSeverity: high\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#118\nGraph gold label: weak_supervision_needs_review\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: timogilvie/wavemill#118\nRepo: timogilvie/wavemill\nIssue/PR number: 118\nGraph consistency label: weak_supervision_needs_review\nNodes: 23\nEdges: 28\nNode types: {'link_quality': 6, 'commit': 5, 'alignment': 3, 'blueprint_finding': 3, 'thread': 1, 'repo': 1, 'comment': 1, 'comment_chain': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'chain_has_link_quality': 6, 'comment_chain_links_commit': 5, 'alignment_uses_comment': 3, 'alignment_uses_finding': 3, 'comment_aligns_finding': 3, 'repo_has_thread': 1, 'thread_has_comment': 1, 'thread_has_comment_chain': 1, 'comment_has_chain': 1, 'thread_has_issue_chain': 1, 'issue_chain_has_comment_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'verification_or_tests': 5, 'ambiguous_needs_more_evidence': 3, 'blueprint_human_gap_alignment': 3, 'thread_has_human_issue_and_fix_context': 2, 'weak blueprint fit': 2, 'issue_or_pull_request_thread': 1, 'test_ci_gap': 1, 'comment_has_related_commit_context': 1, 'partial blueprint fit': 1}\nOutcomes: {'ambiguous_needs_more_evidence': 6}\nQuality tiers: {'weak_supervision': 3, 'assumption_check': 3}\nCI labels: {}\nCurriculum targets:\n- Turn human feedback into regression tests and CI gates.\n- Penalize fixes that do not add or exercise verification for affected workflows.\nAssumption checks:\n- Did the fix add tests for the exact complaint?\n- Does CI run those tests, or is verification only implied?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/timogilvie/wavemill", "source_id": "graph-query-motif_query-ea692e3204477b17", "synthetic": false, "gold_label": "", "graph_label": "", "source_path": "/data/distillate/foundry_data/graph_queries/test_ci_gap_after_feedback/shard-0.jsonl", "bundle_label": "", "priority_band": "", "priority_score": 0, "repo_full_name": "timogilvie/wavemill", "source_dataset": "graph_queries/test_ci_gap_after_feedback", "training_usage": "hard_negative"}}}, {"ruleId": "foundry_schema_ui_api_gap", "level": "error", "message": {"text": "Foundry mined schema ui api mismatch: timogilvie/wavemill"}, "properties": {"repobilityId": 411271, "scanner": "foundry_dataset", "fingerprint": "b485ffdc02a9ba50d0bc610f8943db03fe8eb488490404e06d2040d01e39fd11", "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": {"weak blueprint fit": 2, "partial blueprint fit": 1, "verification_or_tests": 5, "data_schema_persistence": 1, "issue_or_pull_request_thread": 1, "ambiguous_needs_more_evidence": 3, "blueprint_human_gap_alignment": 3, "comment_has_related_commit_context": 1, "thread_has_human_issue_and_fix_context": 2}, "source": "graph_query_export", "motif_id": "schema_ui_api_mismatch", "outcomes": {"ambiguous_needs_more_evidence": 6}, "polarity": "bad", "query_id": "schema_ui_api_mismatch", "severity": "high", "ci_labels": {}, "synthetic": false, "edge_count": 28, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 1, "thread_has_comment": 1, "alignment_uses_comment": 3, "alignment_uses_finding": 3, "chain_has_link_quality": 6, "comment_aligns_finding": 3, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 1, "comment_chain_links_commit": 5, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 1}, "node_count": 23, "node_types": {"repo": 1, "commit": 5, "thread": 1, "comment": 1, "alignment": 3, "fix_outcome": 1, "issue_chain": 1, "link_quality": 6, "comment_chain": 1, "blueprint_finding": 3}, "query_type": "motif_query", "thread_key": "timogilvie/wavemill#97", "issue_number": "97", "quality_tiers": {"assumption_check": 3, "weak_supervision": 3}, "repo_full_name": "timogilvie/wavemill", "training_usage": "assumption_check", "source_motif_id": "graph-pattern-motif-thread-63e680c7eeb48c99", "graph_gold_label": "weak_supervision_needs_review", "changed_file_labels": {}}, "text": "Graph query export: Schema, UI, and API mismatch\nQuery id: schema_ui_api_mismatch\nQuery type: motif_query\nIntent: Assumption-check examples for data-path consistency across layers.\nMotif: schema_ui_api_mismatch\nTraining usage: assumption_check\nGraph gold label: weak_supervision_needs_review\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#97\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: timogilvie/wavemill\nThread: timogilvie/wavemill#97\nGraph gold label: weak_supervision_needs_review\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: timogilvie/wavemill#97\nRepo: timogilvie/wavemill\nIssue/PR number: 97\nGraph consistency label: weak_supervision_needs_review\nNodes: 23\nEdges: 28\nNode types: {'link_quality': 6, 'commit': 5, 'alignment': 3, 'blueprint_finding': 3, 'thread': 1, 'repo': 1, 'comment': 1, 'comment_chain': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'chain_has_link_quality': 6, 'comment_chain_links_commit': 5, 'alignment_uses_comment': 3, 'alignment_uses_finding': 3, 'comment_aligns_finding': 3, 'repo_has_thread': 1, 'thread_has_comment': 1, 'thread_has_comment_chain': 1, 'comment_has_chain': 1, 'thread_has_issue_chain': 1, 'issue_chain_has_comment_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'verification_or_tests': 5, 'ambiguous_needs_more_evidence': 3, 'blueprint_human_gap_alignment': 3, 'thread_has_human_issue_and_fix_context': 2, 'weak blueprint fit': 2, 'issue_or_pull_request_thread': 1, 'data_schema_persistence': 1, 'comment_has_related_commit_context': 1, 'partial blueprint fit': 1}\nOutcomes: {'ambiguous_needs_more_evidence': 6}\nQuality tiers: {'weak_supervision': 3, 'assumption_check': 3}\nCI labels: {}\nCurriculum targets:\n- Create schema-to-API-to-UI consistency tasks with migrations and tests.\n- Teach models to verify persistence, route contracts, and UI state together.\nAssumption checks:\n- Do schema changes have matching API and UI handling?\n- Are migrations and tests present for the data path?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/timogilvie/wavemill", "source_id": "graph-query-motif_query-1a1397803ca30a04", "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": "timogilvie/wavemill", "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: timogilvie/wavemill"}, "properties": {"repobilityId": 411270, "scanner": "foundry_dataset", "fingerprint": "4f29f190870242eb15300260a889cc89f5b26e0cd0c57dd30600936868ddc0ae", "category": "quality", "severity": "high", "confidence": 0.76, "triageState": "open", "verdict": "needs_review", "isResolved": false, "reason": "Imported from mined Foundry/Fable5 evidence with real GitHub/source provenance. Review source_id before acting.", "evidence": {"meta": {"kind": "graph_query_record", "title": "Schema, UI, and API mismatch", "intent": "Assumption-check examples for data-path consistency across layers.", "labels": {"test_or_ci": 17, "api_or_backend": 8, "docs_or_claims": 6, "schema_or_data": 4, "source_or_other": 13, "weak blueprint fit": 2, "dependency_or_build": 1, "partial blueprint fit": 1, "data_schema_persistence": 1, "issue_or_pull_request_thread": 1, "not_resolved_or_not_observed": 3, "blueprint_human_gap_alignment": 3, "human_reported_issue_no_linked_fix": 1, "thread_has_human_issue_without_fix_context": 2}, "source": "graph_query_export", "motif_id": "schema_ui_api_mismatch", "outcomes": {"not_resolved_or_not_observed": 6}, "polarity": "bad", "query_id": "schema_ui_api_mismatch", "severity": "high", "ci_labels": {}, "synthetic": false, "edge_count": 96, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 1, "thread_has_comment": 1, "thread_touches_file": 49, "alignment_uses_comment": 3, "alignment_uses_finding": 3, "chain_has_link_quality": 6, "comment_aligns_finding": 3, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "issue_chain_touches_file": 12, "thread_has_comment_chain": 1, "comment_chain_touches_file": 12, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 1}, "node_count": 67, "node_types": {"repo": 1, "thread": 1, "comment": 1, "pr_file": 49, "alignment": 3, "fix_outcome": 1, "issue_chain": 1, "link_quality": 6, "comment_chain": 1, "blueprint_finding": 3}, "query_type": "motif_query", "thread_key": "timogilvie/wavemill#741", "issue_number": "741", "quality_tiers": {"unresolved": 3, "assumption_check": 3}, "repo_full_name": "timogilvie/wavemill", "training_usage": "assumption_check", "source_motif_id": "graph-pattern-motif-thread-7ecd2f9e96d5512f", "graph_gold_label": "assumption_check", "changed_file_labels": {"test_or_ci": 68, "api_or_backend": 32, "docs_or_claims": 24, "schema_or_data": 16, "source_or_other": 52, "dependency_or_build": 4}}, "text": "Graph query export: Schema, UI, and API mismatch\nQuery id: schema_ui_api_mismatch\nQuery type: motif_query\nIntent: Assumption-check examples for data-path consistency across layers.\nMotif: schema_ui_api_mismatch\nTraining usage: assumption_check\nGraph gold label: assumption_check\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#741\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: timogilvie/wavemill\nThread: timogilvie/wavemill#741\nGraph gold label: assumption_check\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: timogilvie/wavemill#741\nRepo: timogilvie/wavemill\nIssue/PR number: 741\nGraph consistency label: assumption_check\nNodes: 67\nEdges: 96\nNode types: {'pr_file': 49, 'link_quality': 6, 'alignment': 3, 'blueprint_finding': 3, 'thread': 1, 'repo': 1, 'comment': 1, 'comment_chain': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'thread_touches_file': 49, 'comment_chain_touches_file': 12, 'issue_chain_touches_file': 12, 'chain_has_link_quality': 6, 'alignment_uses_comment': 3, 'alignment_uses_finding': 3, 'comment_aligns_finding': 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: {'test_or_ci': 17, 'source_or_other': 13, 'api_or_backend': 8, 'docs_or_claims': 6, 'schema_or_data': 4, 'not_resolved_or_not_observed': 3, 'blueprint_human_gap_alignment': 3, 'thread_has_human_issue_without_fix_context': 2, 'weak blueprint fit': 2, 'issue_or_pull_request_thread': 1, 'data_schema_persistence': 1, 'dependency_or_build': 1, 'human_reported_issue_no_linked_fix': 1, 'partial blueprint fit': 1}\nOutcomes: {'not_resolved_or_not_observed': 6}\nQuality tiers: {'unresolved': 3, 'assumption_check': 3}\nCI labels: {}\nCurriculum targets:\n- Create schema-to-API-to-UI consistency tasks with migrations and tests.\n- Teach models to verify persistence, route contracts, and UI state together.\nAssumption checks:\n- Do schema changes have matching API and UI handling?\n- Are migrations and tests present for the data path?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/timogilvie/wavemill", "source_id": "graph-query-motif_query-9b2fa6518ac41007", "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": "timogilvie/wavemill", "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: timogilvie/wavemill"}, "properties": {"repobilityId": 411269, "scanner": "foundry_dataset", "fingerprint": "a8e34d97b2744491cbae7bf3a6f7ac1274ee37d4d3e46a040d8ab204f7dc1460", "category": "quality", "severity": "high", "confidence": 0.76, "triageState": "open", "verdict": "needs_review", "isResolved": false, "reason": "Imported from mined Foundry/Fable5 evidence with real GitHub/source provenance. Review source_id before acting.", "evidence": {"meta": {"kind": "graph_query_record", "title": "Schema, UI, and API mismatch", "intent": "Assumption-check examples for data-path consistency across layers.", "labels": {"test_or_ci": 1, "schema_or_data": 1, "source_or_other": 4, "weak blueprint fit": 2, "partial blueprint fit": 1, "verification_or_tests": 5, "data_schema_persistence": 1, "issue_or_pull_request_thread": 1, "ambiguous_needs_more_evidence": 3, "blueprint_human_gap_alignment": 3, "comment_has_related_commit_context": 1, "thread_has_human_issue_and_fix_context": 2}, "source": "graph_query_export", "motif_id": "schema_ui_api_mismatch", "outcomes": {"ambiguous_needs_more_evidence": 6}, "polarity": "bad", "query_id": "schema_ui_api_mismatch", "severity": "high", "ci_labels": {}, "synthetic": false, "edge_count": 46, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 1, "thread_has_comment": 1, "thread_touches_file": 6, "alignment_uses_comment": 3, "alignment_uses_finding": 3, "chain_has_link_quality": 6, "comment_aligns_finding": 3, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "issue_chain_touches_file": 6, "thread_has_comment_chain": 1, "comment_chain_links_commit": 5, "comment_chain_touches_file": 6, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 1}, "node_count": 29, "node_types": {"repo": 1, "commit": 5, "thread": 1, "comment": 1, "pr_file": 6, "alignment": 3, "fix_outcome": 1, "issue_chain": 1, "link_quality": 6, "comment_chain": 1, "blueprint_finding": 3}, "query_type": "motif_query", "thread_key": "timogilvie/wavemill#737", "issue_number": "737", "quality_tiers": {"assumption_check": 3, "weak_supervision": 3}, "repo_full_name": "timogilvie/wavemill", "training_usage": "assumption_check", "source_motif_id": "graph-pattern-motif-thread-b4afa548e9c5cb6c", "graph_gold_label": "weak_supervision_needs_review", "changed_file_labels": {"test_or_ci": 4, "schema_or_data": 4, "source_or_other": 16}}, "text": "Graph query export: Schema, UI, and API mismatch\nQuery id: schema_ui_api_mismatch\nQuery type: motif_query\nIntent: Assumption-check examples for data-path consistency across layers.\nMotif: schema_ui_api_mismatch\nTraining usage: assumption_check\nGraph gold label: weak_supervision_needs_review\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#737\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: timogilvie/wavemill\nThread: timogilvie/wavemill#737\nGraph gold label: weak_supervision_needs_review\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: timogilvie/wavemill#737\nRepo: timogilvie/wavemill\nIssue/PR number: 737\nGraph consistency label: weak_supervision_needs_review\nNodes: 29\nEdges: 46\nNode types: {'pr_file': 6, 'link_quality': 6, 'commit': 5, 'alignment': 3, 'blueprint_finding': 3, 'thread': 1, 'repo': 1, 'comment': 1, 'comment_chain': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'thread_touches_file': 6, 'comment_chain_touches_file': 6, 'chain_has_link_quality': 6, 'issue_chain_touches_file': 6, 'comment_chain_links_commit': 5, 'alignment_uses_comment': 3, 'alignment_uses_finding': 3, 'comment_aligns_finding': 3, 'repo_has_thread': 1, 'thread_has_comment': 1, 'thread_has_comment_chain': 1, 'comment_has_chain': 1, 'thread_has_issue_chain': 1, 'issue_chain_has_comment_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'verification_or_tests': 5, 'source_or_other': 4, 'ambiguous_needs_more_evidence': 3, 'blueprint_human_gap_alignment': 3, 'thread_has_human_issue_and_fix_context': 2, 'weak blueprint fit': 2, 'issue_or_pull_request_thread': 1, 'data_schema_persistence': 1, 'test_or_ci': 1, 'schema_or_data': 1, 'comment_has_related_commit_context': 1, 'partial blueprint fit': 1}\nOutcomes: {'ambiguous_needs_more_evidence': 6}\nQuality tiers: {'weak_supervision': 3, 'assumption_check': 3}\nCI labels: {}\nCurriculum targets:\n- Create schema-to-API-to-UI consistency tasks with migrations and tests.\n- Teach models to verify persistence, route contracts, and UI state together.\nAssumption checks:\n- Do schema changes have matching API and UI handling?\n- Are migrations and tests present for the data path?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/timogilvie/wavemill", "source_id": "graph-query-motif_query-861f37fe72d1c015", "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": "timogilvie/wavemill", "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: timogilvie/wavemill"}, "properties": {"repobilityId": 411268, "scanner": "foundry_dataset", "fingerprint": "f9a3b641ab0287bc692a312416229a681b656410f4d02b24b76f27caafb5da25", "category": "quality", "severity": "high", "confidence": 0.76, "triageState": "open", "verdict": "needs_review", "isResolved": false, "reason": "Imported from mined Foundry/Fable5 evidence with real GitHub/source provenance. Review source_id before acting.", "evidence": {"meta": {"kind": "graph_query_record", "title": "Schema, UI, and API mismatch", "intent": "Assumption-check examples for data-path consistency across layers.", "labels": {"test_or_ci": 4, "schema_or_data": 2, "source_or_other": 2, "weak blueprint fit": 2, "partial blueprint fit": 1, "verification_or_tests": 5, "data_schema_persistence": 1, "issue_or_pull_request_thread": 1, "ambiguous_needs_more_evidence": 3, "blueprint_human_gap_alignment": 3, "comment_has_related_commit_context": 1, "thread_has_human_issue_and_fix_context": 2}, "source": "graph_query_export", "motif_id": "schema_ui_api_mismatch", "outcomes": {"ambiguous_needs_more_evidence": 6}, "polarity": "bad", "query_id": "schema_ui_api_mismatch", "severity": "high", "ci_labels": {}, "synthetic": false, "edge_count": 52, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 1, "thread_has_comment": 1, "thread_touches_file": 8, "alignment_uses_comment": 3, "alignment_uses_finding": 3, "chain_has_link_quality": 6, "comment_aligns_finding": 3, "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": 31, "node_types": {"repo": 1, "commit": 5, "thread": 1, "comment": 1, "pr_file": 8, "alignment": 3, "fix_outcome": 1, "issue_chain": 1, "link_quality": 6, "comment_chain": 1, "blueprint_finding": 3}, "query_type": "motif_query", "thread_key": "timogilvie/wavemill#731", "issue_number": "731", "quality_tiers": {"assumption_check": 3, "weak_supervision": 3}, "repo_full_name": "timogilvie/wavemill", "training_usage": "assumption_check", "source_motif_id": "graph-pattern-motif-thread-4fea0b3f41fa39c2", "graph_gold_label": "weak_supervision_needs_review", "changed_file_labels": {"test_or_ci": 16, "schema_or_data": 8, "source_or_other": 8}}, "text": "Graph query export: Schema, UI, and API mismatch\nQuery id: schema_ui_api_mismatch\nQuery type: motif_query\nIntent: Assumption-check examples for data-path consistency across layers.\nMotif: schema_ui_api_mismatch\nTraining usage: assumption_check\nGraph gold label: weak_supervision_needs_review\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#731\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: timogilvie/wavemill\nThread: timogilvie/wavemill#731\nGraph gold label: weak_supervision_needs_review\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: timogilvie/wavemill#731\nRepo: timogilvie/wavemill\nIssue/PR number: 731\nGraph consistency label: weak_supervision_needs_review\nNodes: 31\nEdges: 52\nNode types: {'pr_file': 8, 'link_quality': 6, 'commit': 5, 'alignment': 3, 'blueprint_finding': 3, '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, 'chain_has_link_quality': 6, 'comment_chain_links_commit': 5, 'alignment_uses_comment': 3, 'alignment_uses_finding': 3, 'comment_aligns_finding': 3, 'repo_has_thread': 1, 'thread_has_comment': 1, 'thread_has_comment_chain': 1, 'comment_has_chain': 1, 'thread_has_issue_chain': 1, 'issue_chain_has_comment_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'verification_or_tests': 5, 'test_or_ci': 4, 'ambiguous_needs_more_evidence': 3, 'blueprint_human_gap_alignment': 3, 'source_or_other': 2, 'schema_or_data': 2, 'thread_has_human_issue_and_fix_context': 2, 'weak blueprint fit': 2, 'issue_or_pull_request_thread': 1, 'data_schema_persistence': 1, 'comment_has_related_commit_context': 1, 'partial blueprint fit': 1}\nOutcomes: {'ambiguous_needs_more_evidence': 6}\nQuality tiers: {'weak_supervision': 3, 'assumption_check': 3}\nCI labels: {}\nCurriculum targets:\n- Create schema-to-API-to-UI consistency tasks with migrations and tests.\n- Teach models to verify persistence, route contracts, and UI state together.\nAssumption checks:\n- Do schema changes have matching API and UI handling?\n- Are migrations and tests present for the data path?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/timogilvie/wavemill", "source_id": "graph-query-motif_query-f154d8a2694e3002", "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": "timogilvie/wavemill", "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: timogilvie/wavemill"}, "properties": {"repobilityId": 411267, "scanner": "foundry_dataset", "fingerprint": "45082adc574c523e668ac1ec335aa64fd7feeb45d6dfc3d9e89828a363c497b9", "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": {"weak blueprint fit": 2, "partial blueprint fit": 1, "verification_or_tests": 5, "data_schema_persistence": 1, "issue_or_pull_request_thread": 1, "ambiguous_needs_more_evidence": 3, "blueprint_human_gap_alignment": 3, "comment_has_related_commit_context": 1, "thread_has_human_issue_and_fix_context": 2}, "source": "graph_query_export", "motif_id": "schema_ui_api_mismatch", "outcomes": {"ambiguous_needs_more_evidence": 6}, "polarity": "bad", "query_id": "schema_ui_api_mismatch", "severity": "high", "ci_labels": {}, "synthetic": false, "edge_count": 28, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 1, "thread_has_comment": 1, "alignment_uses_comment": 3, "alignment_uses_finding": 3, "chain_has_link_quality": 6, "comment_aligns_finding": 3, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 1, "comment_chain_links_commit": 5, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 1}, "node_count": 23, "node_types": {"repo": 1, "commit": 5, "thread": 1, "comment": 1, "alignment": 3, "fix_outcome": 1, "issue_chain": 1, "link_quality": 6, "comment_chain": 1, "blueprint_finding": 3}, "query_type": "motif_query", "thread_key": "timogilvie/wavemill#724", "issue_number": "724", "quality_tiers": {"high_confidence": 3, "assumption_check": 3}, "repo_full_name": "timogilvie/wavemill", "training_usage": "assumption_check", "source_motif_id": "graph-pattern-motif-thread-812a0789ece81ec8", "graph_gold_label": "supported_by_high_confidence_link", "changed_file_labels": {}}, "text": "Graph query export: Schema, UI, and API mismatch\nQuery id: schema_ui_api_mismatch\nQuery type: motif_query\nIntent: Assumption-check examples for data-path consistency across layers.\nMotif: schema_ui_api_mismatch\nTraining usage: assumption_check\nGraph gold label: supported_by_high_confidence_link\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#724\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: timogilvie/wavemill\nThread: timogilvie/wavemill#724\nGraph gold label: supported_by_high_confidence_link\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: timogilvie/wavemill#724\nRepo: timogilvie/wavemill\nIssue/PR number: 724\nGraph consistency label: supported_by_high_confidence_link\nNodes: 23\nEdges: 28\nNode types: {'link_quality': 6, 'commit': 5, 'alignment': 3, 'blueprint_finding': 3, 'thread': 1, 'repo': 1, 'comment': 1, 'comment_chain': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'chain_has_link_quality': 6, 'comment_chain_links_commit': 5, 'alignment_uses_comment': 3, 'alignment_uses_finding': 3, 'comment_aligns_finding': 3, 'repo_has_thread': 1, 'thread_has_comment': 1, 'thread_has_comment_chain': 1, 'comment_has_chain': 1, 'thread_has_issue_chain': 1, 'issue_chain_has_comment_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'verification_or_tests': 5, 'ambiguous_needs_more_evidence': 3, 'blueprint_human_gap_alignment': 3, 'thread_has_human_issue_and_fix_context': 2, 'weak blueprint fit': 2, 'issue_or_pull_request_thread': 1, 'data_schema_persistence': 1, 'comment_has_related_commit_context': 1, 'partial blueprint fit': 1}\nOutcomes: {'ambiguous_needs_more_evidence': 6}\nQuality tiers: {'high_confidence': 3, 'assumption_check': 3}\nCI labels: {}\nCurriculum targets:\n- Create schema-to-API-to-UI consistency tasks with migrations and tests.\n- Teach models to verify persistence, route contracts, and UI state together.\nAssumption checks:\n- Do schema changes have matching API and UI handling?\n- Are migrations and tests present for the data path?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/timogilvie/wavemill", "source_id": "graph-query-motif_query-ec3ffc92b64a0fa7", "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": "timogilvie/wavemill", "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: timogilvie/wavemill"}, "properties": {"repobilityId": 411266, "scanner": "foundry_dataset", "fingerprint": "6a92f9e25795570d21039e0dc638c30d90c67ab43f74fabfba01e68568186843", "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": {"data_schema": 1, "weak blueprint fit": 2, "partial blueprint fit": 1, "verification_or_tests": 4, "data_schema_persistence": 1, "issue_or_pull_request_thread": 1, "blueprint_human_gap_alignment": 3, "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": 28, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 1, "thread_has_comment": 1, "alignment_uses_comment": 3, "alignment_uses_finding": 3, "chain_has_link_quality": 6, "comment_aligns_finding": 3, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 1, "comment_chain_links_commit": 5, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 1}, "node_count": 23, "node_types": {"repo": 1, "commit": 5, "thread": 1, "comment": 1, "alignment": 3, "fix_outcome": 1, "issue_chain": 1, "link_quality": 6, "comment_chain": 1, "blueprint_finding": 3}, "query_type": "motif_query", "thread_key": "timogilvie/wavemill#719", "issue_number": "719", "quality_tiers": {"high_confidence": 3, "assumption_check": 3}, "repo_full_name": "timogilvie/wavemill", "training_usage": "assumption_check", "source_motif_id": "graph-pattern-motif-thread-27554e58cba9755f", "graph_gold_label": "supported_by_verification_signal", "changed_file_labels": {}}, "text": "Graph query export: Schema, UI, and API mismatch\nQuery id: schema_ui_api_mismatch\nQuery type: motif_query\nIntent: Assumption-check examples for data-path consistency across layers.\nMotif: schema_ui_api_mismatch\nTraining usage: assumption_check\nGraph gold label: supported_by_verification_signal\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#719\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: timogilvie/wavemill\nThread: timogilvie/wavemill#719\nGraph gold label: supported_by_verification_signal\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: timogilvie/wavemill#719\nRepo: timogilvie/wavemill\nIssue/PR number: 719\nGraph consistency label: supported_by_verification_signal\nNodes: 23\nEdges: 28\nNode types: {'link_quality': 6, 'commit': 5, 'alignment': 3, 'blueprint_finding': 3, 'thread': 1, 'repo': 1, 'comment': 1, 'comment_chain': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'chain_has_link_quality': 6, 'comment_chain_links_commit': 5, 'alignment_uses_comment': 3, 'alignment_uses_finding': 3, 'comment_aligns_finding': 3, 'repo_has_thread': 1, 'thread_has_comment': 1, 'thread_has_comment_chain': 1, 'comment_has_chain': 1, 'thread_has_issue_chain': 1, 'issue_chain_has_comment_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'verification_or_tests': 4, 'claimed_resolved_with_verification_signal': 3, 'blueprint_human_gap_alignment': 3, 'thread_has_human_issue_and_fix_context': 2, 'weak blueprint fit': 2, 'issue_or_pull_request_thread': 1, 'data_schema_persistence': 1, 'human_reported_issue_then_verified_fix_attempt': 1, 'data_schema': 1, 'partial blueprint fit': 1}\nOutcomes: {'claimed_resolved_with_verification_signal': 6}\nQuality tiers: {'high_confidence': 3, 'assumption_check': 3}\nCI labels: {}\nCurriculum targets:\n- Create schema-to-API-to-UI consistency tasks with migrations and tests.\n- Teach models to verify persistence, route contracts, and UI state together.\nAssumption checks:\n- Do schema changes have matching API and UI handling?\n- Are migrations and tests present for the data path?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/timogilvie/wavemill", "source_id": "graph-query-motif_query-109768a12ffa4f57", "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": "timogilvie/wavemill", "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: timogilvie/wavemill"}, "properties": {"repobilityId": 411265, "scanner": "foundry_dataset", "fingerprint": "58c743d9730039d855f3bfcee9260be20ffe53f96568c11d66ea0fea7c3d465b", "category": "quality", "severity": "high", "confidence": 0.76, "triageState": "open", "verdict": "needs_review", "isResolved": false, "reason": "Imported from mined Foundry/Fable5 evidence with real GitHub/source provenance. Review source_id before acting.", "evidence": {"meta": {"kind": "graph_query_record", "title": "Schema, UI, and API mismatch", "intent": "Assumption-check examples for data-path consistency across layers.", "labels": {"bug_fix": 1, "data_schema": 1, "weak blueprint fit": 2, "partial blueprint fit": 1, "data_schema_persistence": 1, "claimed_resolved_unverified": 3, "issue_or_pull_request_thread": 1, "blueprint_human_gap_alignment": 3, "human_reported_issue_then_fix_attempt": 1, "thread_has_human_issue_and_fix_context": 2}, "source": "graph_query_export", "motif_id": "schema_ui_api_mismatch", "outcomes": {"claimed_resolved_unverified": 6}, "polarity": "bad", "query_id": "schema_ui_api_mismatch", "severity": "high", "ci_labels": {}, "synthetic": false, "edge_count": 25, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 1, "thread_has_comment": 1, "alignment_uses_comment": 3, "alignment_uses_finding": 3, "chain_has_link_quality": 6, "comment_aligns_finding": 3, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 1, "comment_chain_links_commit": 2, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 1}, "node_count": 20, "node_types": {"repo": 1, "commit": 2, "thread": 1, "comment": 1, "alignment": 3, "fix_outcome": 1, "issue_chain": 1, "link_quality": 6, "comment_chain": 1, "blueprint_finding": 3}, "query_type": "motif_query", "thread_key": "timogilvie/wavemill#713", "issue_number": "713", "quality_tiers": {"high_confidence": 3, "assumption_check": 3}, "repo_full_name": "timogilvie/wavemill", "training_usage": "assumption_check", "source_motif_id": "graph-pattern-motif-thread-898a02939336eb01", "graph_gold_label": "supported_by_high_confidence_link", "changed_file_labels": {}}, "text": "Graph query export: Schema, UI, and API mismatch\nQuery id: schema_ui_api_mismatch\nQuery type: motif_query\nIntent: Assumption-check examples for data-path consistency across layers.\nMotif: schema_ui_api_mismatch\nTraining usage: assumption_check\nGraph gold label: supported_by_high_confidence_link\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#713\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: timogilvie/wavemill\nThread: timogilvie/wavemill#713\nGraph gold label: supported_by_high_confidence_link\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: timogilvie/wavemill#713\nRepo: timogilvie/wavemill\nIssue/PR number: 713\nGraph consistency label: supported_by_high_confidence_link\nNodes: 20\nEdges: 25\nNode types: {'link_quality': 6, 'alignment': 3, 'blueprint_finding': 3, 'commit': 2, 'thread': 1, 'repo': 1, 'comment': 1, 'comment_chain': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'chain_has_link_quality': 6, 'alignment_uses_comment': 3, 'alignment_uses_finding': 3, 'comment_aligns_finding': 3, 'comment_chain_links_commit': 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: {'claimed_resolved_unverified': 3, 'blueprint_human_gap_alignment': 3, 'thread_has_human_issue_and_fix_context': 2, 'weak blueprint fit': 2, 'issue_or_pull_request_thread': 1, 'data_schema_persistence': 1, 'human_reported_issue_then_fix_attempt': 1, 'bug_fix': 1, 'data_schema': 1, 'partial blueprint fit': 1}\nOutcomes: {'claimed_resolved_unverified': 6}\nQuality tiers: {'high_confidence': 3, 'assumption_check': 3}\nCI labels: {}\nCurriculum targets:\n- Create schema-to-API-to-UI consistency tasks with migrations and tests.\n- Teach models to verify persistence, route contracts, and UI state together.\nAssumption checks:\n- Do schema changes have matching API and UI handling?\n- Are migrations and tests present for the data path?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/timogilvie/wavemill", "source_id": "graph-query-motif_query-88365da67e3e4112", "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": "timogilvie/wavemill", "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: timogilvie/wavemill"}, "properties": {"repobilityId": 411264, "scanner": "foundry_dataset", "fingerprint": "1f5cb04aec37ee52cfe045e7e9e7ac50155ed91dd2e8f5cfef6522bd03170246", "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, "weak blueprint fit": 2, "partial blueprint fit": 1, "verification_or_tests": 3, "data_schema_persistence": 1, "issue_or_pull_request_thread": 1, "blueprint_human_gap_alignment": 3, "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": 28, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 1, "thread_has_comment": 1, "alignment_uses_comment": 3, "alignment_uses_finding": 3, "chain_has_link_quality": 6, "comment_aligns_finding": 3, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 1, "comment_chain_links_commit": 5, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 1}, "node_count": 23, "node_types": {"repo": 1, "commit": 5, "thread": 1, "comment": 1, "alignment": 3, "fix_outcome": 1, "issue_chain": 1, "link_quality": 6, "comment_chain": 1, "blueprint_finding": 3}, "query_type": "motif_query", "thread_key": "timogilvie/wavemill#710", "issue_number": "710", "quality_tiers": {"high_confidence": 3, "assumption_check": 3}, "repo_full_name": "timogilvie/wavemill", "training_usage": "assumption_check", "source_motif_id": "graph-pattern-motif-thread-6d0d48b679b2e391", "graph_gold_label": "supported_by_verification_signal", "changed_file_labels": {}}, "text": "Graph query export: Schema, UI, and API mismatch\nQuery id: schema_ui_api_mismatch\nQuery type: motif_query\nIntent: Assumption-check examples for data-path consistency across layers.\nMotif: schema_ui_api_mismatch\nTraining usage: assumption_check\nGraph gold label: supported_by_verification_signal\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#710\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: timogilvie/wavemill\nThread: timogilvie/wavemill#710\nGraph gold label: supported_by_verification_signal\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: timogilvie/wavemill#710\nRepo: timogilvie/wavemill\nIssue/PR number: 710\nGraph consistency label: supported_by_verification_signal\nNodes: 23\nEdges: 28\nNode types: {'link_quality': 6, 'commit': 5, 'alignment': 3, 'blueprint_finding': 3, 'thread': 1, 'repo': 1, 'comment': 1, 'comment_chain': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'chain_has_link_quality': 6, 'comment_chain_links_commit': 5, 'alignment_uses_comment': 3, 'alignment_uses_finding': 3, 'comment_aligns_finding': 3, 'repo_has_thread': 1, 'thread_has_comment': 1, 'thread_has_comment_chain': 1, 'comment_has_chain': 1, 'thread_has_issue_chain': 1, 'issue_chain_has_comment_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'verification_or_tests': 3, 'claimed_resolved_with_verification_signal': 3, 'blueprint_human_gap_alignment': 3, 'bug_fix': 2, 'thread_has_human_issue_and_fix_context': 2, 'weak blueprint fit': 2, 'issue_or_pull_request_thread': 1, 'data_schema_persistence': 1, 'human_reported_issue_then_verified_fix_attempt': 1, 'partial blueprint fit': 1}\nOutcomes: {'claimed_resolved_with_verification_signal': 6}\nQuality tiers: {'high_confidence': 3, 'assumption_check': 3}\nCI labels: {}\nCurriculum targets:\n- Create schema-to-API-to-UI consistency tasks with migrations and tests.\n- Teach models to verify persistence, route contracts, and UI state together.\nAssumption checks:\n- Do schema changes have matching API and UI handling?\n- Are migrations and tests present for the data path?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/timogilvie/wavemill", "source_id": "graph-query-motif_query-fed90473def54dcc", "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": "timogilvie/wavemill", "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: timogilvie/wavemill"}, "properties": {"repobilityId": 411263, "scanner": "foundry_dataset", "fingerprint": "43e6d1e13258c4d63bbdf4d45004744cf436507a9759139d6b82b243d973a0ac", "category": "quality", "severity": "high", "confidence": 0.76, "triageState": "open", "verdict": "needs_review", "isResolved": false, "reason": "Imported from mined Foundry/Fable5 evidence with real GitHub/source provenance. Review source_id before acting.", "evidence": {"meta": {"kind": "graph_query_record", "title": "Schema, UI, and API mismatch", "intent": "Assumption-check examples for data-path consistency across layers.", "labels": {"commit_general": 1, "weak blueprint fit": 2, "partial blueprint fit": 1, "verification_or_tests": 4, "data_schema_persistence": 1, "issue_or_pull_request_thread": 1, "ambiguous_needs_more_evidence": 3, "blueprint_human_gap_alignment": 3, "comment_has_related_commit_context": 1, "thread_has_human_issue_and_fix_context": 2}, "source": "graph_query_export", "motif_id": "schema_ui_api_mismatch", "outcomes": {"ambiguous_needs_more_evidence": 6}, "polarity": "bad", "query_id": "schema_ui_api_mismatch", "severity": "high", "ci_labels": {}, "synthetic": false, "edge_count": 28, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 1, "thread_has_comment": 1, "alignment_uses_comment": 3, "alignment_uses_finding": 3, "chain_has_link_quality": 6, "comment_aligns_finding": 3, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 1, "comment_chain_links_commit": 5, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 1}, "node_count": 23, "node_types": {"repo": 1, "commit": 5, "thread": 1, "comment": 1, "alignment": 3, "fix_outcome": 1, "issue_chain": 1, "link_quality": 6, "comment_chain": 1, "blueprint_finding": 3}, "query_type": "motif_query", "thread_key": "timogilvie/wavemill#709", "issue_number": "709", "quality_tiers": {"high_confidence": 3, "assumption_check": 3}, "repo_full_name": "timogilvie/wavemill", "training_usage": "assumption_check", "source_motif_id": "graph-pattern-motif-thread-d94a2228c3201dab", "graph_gold_label": "supported_by_high_confidence_link", "changed_file_labels": {}}, "text": "Graph query export: Schema, UI, and API mismatch\nQuery id: schema_ui_api_mismatch\nQuery type: motif_query\nIntent: Assumption-check examples for data-path consistency across layers.\nMotif: schema_ui_api_mismatch\nTraining usage: assumption_check\nGraph gold label: supported_by_high_confidence_link\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#709\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: timogilvie/wavemill\nThread: timogilvie/wavemill#709\nGraph gold label: supported_by_high_confidence_link\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: timogilvie/wavemill#709\nRepo: timogilvie/wavemill\nIssue/PR number: 709\nGraph consistency label: supported_by_high_confidence_link\nNodes: 23\nEdges: 28\nNode types: {'link_quality': 6, 'commit': 5, 'alignment': 3, 'blueprint_finding': 3, 'thread': 1, 'repo': 1, 'comment': 1, 'comment_chain': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'chain_has_link_quality': 6, 'comment_chain_links_commit': 5, 'alignment_uses_comment': 3, 'alignment_uses_finding': 3, 'comment_aligns_finding': 3, 'repo_has_thread': 1, 'thread_has_comment': 1, 'thread_has_comment_chain': 1, 'comment_has_chain': 1, 'thread_has_issue_chain': 1, 'issue_chain_has_comment_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'verification_or_tests': 4, 'ambiguous_needs_more_evidence': 3, 'blueprint_human_gap_alignment': 3, 'thread_has_human_issue_and_fix_context': 2, 'weak blueprint fit': 2, 'issue_or_pull_request_thread': 1, 'data_schema_persistence': 1, 'comment_has_related_commit_context': 1, 'commit_general': 1, 'partial blueprint fit': 1}\nOutcomes: {'ambiguous_needs_more_evidence': 6}\nQuality tiers: {'high_confidence': 3, 'assumption_check': 3}\nCI labels: {}\nCurriculum targets:\n- Create schema-to-API-to-UI consistency tasks with migrations and tests.\n- Teach models to verify persistence, route contracts, and UI state together.\nAssumption checks:\n- Do schema changes have matching API and UI handling?\n- Are migrations and tests present for the data path?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/timogilvie/wavemill", "source_id": "graph-query-motif_query-860912ee248aab54", "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": "timogilvie/wavemill", "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: timogilvie/wavemill"}, "properties": {"repobilityId": 411262, "scanner": "foundry_dataset", "fingerprint": "782ca52a73ab1874ed0edea6e340bda842c56ebeafd207ffeb440d8ef3e8aeb6", "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": {"data_schema": 1, "weak blueprint fit": 2, "partial blueprint fit": 1, "verification_or_tests": 4, "data_schema_persistence": 1, "issue_or_pull_request_thread": 1, "blueprint_human_gap_alignment": 3, "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": 28, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 1, "thread_has_comment": 1, "alignment_uses_comment": 3, "alignment_uses_finding": 3, "chain_has_link_quality": 6, "comment_aligns_finding": 3, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 1, "comment_chain_links_commit": 5, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 1}, "node_count": 23, "node_types": {"repo": 1, "commit": 5, "thread": 1, "comment": 1, "alignment": 3, "fix_outcome": 1, "issue_chain": 1, "link_quality": 6, "comment_chain": 1, "blueprint_finding": 3}, "query_type": "motif_query", "thread_key": "timogilvie/wavemill#614", "issue_number": "614", "quality_tiers": {"assumption_check": 3, "weak_supervision": 3}, "repo_full_name": "timogilvie/wavemill", "training_usage": "assumption_check", "source_motif_id": "graph-pattern-motif-thread-53b3bc96d25911df", "graph_gold_label": "supported_by_verification_signal", "changed_file_labels": {}}, "text": "Graph query export: Schema, UI, and API mismatch\nQuery id: schema_ui_api_mismatch\nQuery type: motif_query\nIntent: Assumption-check examples for data-path consistency across layers.\nMotif: schema_ui_api_mismatch\nTraining usage: assumption_check\nGraph gold label: supported_by_verification_signal\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#614\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: timogilvie/wavemill\nThread: timogilvie/wavemill#614\nGraph gold label: supported_by_verification_signal\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: timogilvie/wavemill#614\nRepo: timogilvie/wavemill\nIssue/PR number: 614\nGraph consistency label: supported_by_verification_signal\nNodes: 23\nEdges: 28\nNode types: {'link_quality': 6, 'commit': 5, 'alignment': 3, 'blueprint_finding': 3, 'thread': 1, 'repo': 1, 'comment': 1, 'comment_chain': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'chain_has_link_quality': 6, 'comment_chain_links_commit': 5, 'alignment_uses_comment': 3, 'alignment_uses_finding': 3, 'comment_aligns_finding': 3, 'repo_has_thread': 1, 'thread_has_comment': 1, 'thread_has_comment_chain': 1, 'comment_has_chain': 1, 'thread_has_issue_chain': 1, 'issue_chain_has_comment_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'verification_or_tests': 4, 'claimed_resolved_with_verification_signal': 3, 'blueprint_human_gap_alignment': 3, 'thread_has_human_issue_and_fix_context': 2, 'weak blueprint fit': 2, 'issue_or_pull_request_thread': 1, 'data_schema_persistence': 1, 'human_reported_issue_then_verified_fix_attempt': 1, 'data_schema': 1, 'partial blueprint fit': 1}\nOutcomes: {'claimed_resolved_with_verification_signal': 6}\nQuality tiers: {'weak_supervision': 3, 'assumption_check': 3}\nCI labels: {}\nCurriculum targets:\n- Create schema-to-API-to-UI consistency tasks with migrations and tests.\n- Teach models to verify persistence, route contracts, and UI state together.\nAssumption checks:\n- Do schema changes have matching API and UI handling?\n- Are migrations and tests present for the data path?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/timogilvie/wavemill", "source_id": "graph-query-motif_query-d7886de2aa6a990c", "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": "timogilvie/wavemill", "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: timogilvie/wavemill"}, "properties": {"repobilityId": 411261, "scanner": "foundry_dataset", "fingerprint": "136af41ebfafde932f289c445243f56d2757f3b076395d1d87678d607542f38a", "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": {"data_schema": 1, "weak blueprint fit": 2, "partial blueprint fit": 1, "verification_or_tests": 4, "data_schema_persistence": 1, "issue_or_pull_request_thread": 1, "blueprint_human_gap_alignment": 3, "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": 28, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 1, "thread_has_comment": 1, "alignment_uses_comment": 3, "alignment_uses_finding": 3, "chain_has_link_quality": 6, "comment_aligns_finding": 3, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 1, "comment_chain_links_commit": 5, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 1}, "node_count": 23, "node_types": {"repo": 1, "commit": 5, "thread": 1, "comment": 1, "alignment": 3, "fix_outcome": 1, "issue_chain": 1, "link_quality": 6, "comment_chain": 1, "blueprint_finding": 3}, "query_type": "motif_query", "thread_key": "timogilvie/wavemill#613", "issue_number": "613", "quality_tiers": {"assumption_check": 3, "weak_supervision": 3}, "repo_full_name": "timogilvie/wavemill", "training_usage": "assumption_check", "source_motif_id": "graph-pattern-motif-thread-3e95f68faec92148", "graph_gold_label": "supported_by_verification_signal", "changed_file_labels": {}}, "text": "Graph query export: Schema, UI, and API mismatch\nQuery id: schema_ui_api_mismatch\nQuery type: motif_query\nIntent: Assumption-check examples for data-path consistency across layers.\nMotif: schema_ui_api_mismatch\nTraining usage: assumption_check\nGraph gold label: supported_by_verification_signal\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#613\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: timogilvie/wavemill\nThread: timogilvie/wavemill#613\nGraph gold label: supported_by_verification_signal\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: timogilvie/wavemill#613\nRepo: timogilvie/wavemill\nIssue/PR number: 613\nGraph consistency label: supported_by_verification_signal\nNodes: 23\nEdges: 28\nNode types: {'link_quality': 6, 'commit': 5, 'alignment': 3, 'blueprint_finding': 3, 'thread': 1, 'repo': 1, 'comment': 1, 'comment_chain': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'chain_has_link_quality': 6, 'comment_chain_links_commit': 5, 'alignment_uses_comment': 3, 'alignment_uses_finding': 3, 'comment_aligns_finding': 3, 'repo_has_thread': 1, 'thread_has_comment': 1, 'thread_has_comment_chain': 1, 'comment_has_chain': 1, 'thread_has_issue_chain': 1, 'issue_chain_has_comment_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'verification_or_tests': 4, 'claimed_resolved_with_verification_signal': 3, 'blueprint_human_gap_alignment': 3, 'thread_has_human_issue_and_fix_context': 2, 'weak blueprint fit': 2, 'issue_or_pull_request_thread': 1, 'data_schema_persistence': 1, 'human_reported_issue_then_verified_fix_attempt': 1, 'data_schema': 1, 'partial blueprint fit': 1}\nOutcomes: {'claimed_resolved_with_verification_signal': 6}\nQuality tiers: {'weak_supervision': 3, 'assumption_check': 3}\nCI labels: {}\nCurriculum targets:\n- Create schema-to-API-to-UI consistency tasks with migrations and tests.\n- Teach models to verify persistence, route contracts, and UI state together.\nAssumption checks:\n- Do schema changes have matching API and UI handling?\n- Are migrations and tests present for the data path?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/timogilvie/wavemill", "source_id": "graph-query-motif_query-80c178d1c7e4282f", "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": "timogilvie/wavemill", "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: timogilvie/wavemill"}, "properties": {"repobilityId": 411260, "scanner": "foundry_dataset", "fingerprint": "a311773c82bc15369902468e9cb98ba5be8a17327e5140a74e03cc418b391580", "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": {"data_schema": 1, "weak blueprint fit": 2, "partial blueprint fit": 1, "verification_or_tests": 4, "human_feedback_general": 1, "data_schema_persistence": 1, "unlinked_human_feedback": 1, "issue_or_pull_request_thread": 1, "ambiguous_needs_more_evidence": 1, "blueprint_human_gap_alignment": 3, "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": {"ambiguous_needs_more_evidence": 2, "claimed_resolved_with_verification_signal": 6}, "polarity": "bad", "query_id": "schema_ui_api_mismatch", "severity": "high", "ci_labels": {}, "synthetic": false, "edge_count": 33, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 2, "thread_has_comment": 2, "alignment_uses_comment": 3, "alignment_uses_finding": 3, "chain_has_link_quality": 7, "comment_aligns_finding": 3, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 2, "comment_chain_links_commit": 5, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 2}, "node_count": 26, "node_types": {"repo": 1, "commit": 5, "thread": 1, "comment": 2, "alignment": 3, "fix_outcome": 1, "issue_chain": 1, "link_quality": 7, "comment_chain": 2, "blueprint_finding": 3}, "query_type": "motif_query", "thread_key": "timogilvie/wavemill#212", "issue_number": "212", "quality_tiers": {"unresolved": 1, "assumption_check": 3, "weak_supervision": 3}, "repo_full_name": "timogilvie/wavemill", "training_usage": "assumption_check", "source_motif_id": "graph-pattern-motif-thread-ac3e91fab49ea1a8", "graph_gold_label": "supported_by_verification_signal", "changed_file_labels": {}}, "text": "Graph query export: Schema, UI, and API mismatch\nQuery id: schema_ui_api_mismatch\nQuery type: motif_query\nIntent: Assumption-check examples for data-path consistency across layers.\nMotif: schema_ui_api_mismatch\nTraining usage: assumption_check\nGraph gold label: supported_by_verification_signal\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#212\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: timogilvie/wavemill\nThread: timogilvie/wavemill#212\nGraph gold label: supported_by_verification_signal\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: timogilvie/wavemill#212\nRepo: timogilvie/wavemill\nIssue/PR number: 212\nGraph consistency label: supported_by_verification_signal\nNodes: 26\nEdges: 33\nNode types: {'link_quality': 7, 'commit': 5, 'alignment': 3, 'blueprint_finding': 3, 'comment': 2, 'comment_chain': 2, 'thread': 1, 'repo': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'chain_has_link_quality': 7, 'comment_chain_links_commit': 5, 'alignment_uses_comment': 3, 'alignment_uses_finding': 3, 'comment_aligns_finding': 3, 'thread_has_comment': 2, 'thread_has_comment_chain': 2, 'comment_has_chain': 2, 'issue_chain_has_comment_chain': 2, 'repo_has_thread': 1, 'thread_has_issue_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'verification_or_tests': 4, 'claimed_resolved_with_verification_signal': 3, 'blueprint_human_gap_alignment': 3, 'thread_has_human_issue_and_fix_context': 2, 'weak blueprint fit': 2, 'issue_or_pull_request_thread': 1, 'data_schema_persistence': 1, 'human_feedback_general': 1, 'human_reported_issue_then_verified_fix_attempt': 1, 'data_schema': 1, 'unlinked_human_feedback': 1, 'ambiguous_needs_more_evidence': 1, 'partial blueprint fit': 1}\nOutcomes: {'claimed_resolved_with_verification_signal': 6, 'ambiguous_needs_more_evidence': 2}\nQuality tiers: {'weak_supervision': 3, 'assumption_check': 3, '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/timogilvie/wavemill", "source_id": "graph-query-motif_query-5296fdbf4510d1fc", "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": "timogilvie/wavemill", "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: timogilvie/wavemill"}, "properties": {"repobilityId": 411259, "scanner": "foundry_dataset", "fingerprint": "7e156bf81e06e2c56f7581323e5e153d63fe50ba5a594027efe199ae00d9edfa", "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": {"data_schema": 1, "weak blueprint fit": 2, "partial blueprint fit": 1, "verification_or_tests": 4, "data_schema_persistence": 1, "issue_or_pull_request_thread": 1, "blueprint_human_gap_alignment": 3, "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": 28, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 1, "thread_has_comment": 1, "alignment_uses_comment": 3, "alignment_uses_finding": 3, "chain_has_link_quality": 6, "comment_aligns_finding": 3, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 1, "comment_chain_links_commit": 5, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 1}, "node_count": 23, "node_types": {"repo": 1, "commit": 5, "thread": 1, "comment": 1, "alignment": 3, "fix_outcome": 1, "issue_chain": 1, "link_quality": 6, "comment_chain": 1, "blueprint_finding": 3}, "query_type": "motif_query", "thread_key": "timogilvie/wavemill#209", "issue_number": "209", "quality_tiers": {"assumption_check": 3, "weak_supervision": 3}, "repo_full_name": "timogilvie/wavemill", "training_usage": "assumption_check", "source_motif_id": "graph-pattern-motif-thread-60b740e09301796e", "graph_gold_label": "supported_by_verification_signal", "changed_file_labels": {}}, "text": "Graph query export: Schema, UI, and API mismatch\nQuery id: schema_ui_api_mismatch\nQuery type: motif_query\nIntent: Assumption-check examples for data-path consistency across layers.\nMotif: schema_ui_api_mismatch\nTraining usage: assumption_check\nGraph gold label: supported_by_verification_signal\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#209\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: timogilvie/wavemill\nThread: timogilvie/wavemill#209\nGraph gold label: supported_by_verification_signal\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: timogilvie/wavemill#209\nRepo: timogilvie/wavemill\nIssue/PR number: 209\nGraph consistency label: supported_by_verification_signal\nNodes: 23\nEdges: 28\nNode types: {'link_quality': 6, 'commit': 5, 'alignment': 3, 'blueprint_finding': 3, 'thread': 1, 'repo': 1, 'comment': 1, 'comment_chain': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'chain_has_link_quality': 6, 'comment_chain_links_commit': 5, 'alignment_uses_comment': 3, 'alignment_uses_finding': 3, 'comment_aligns_finding': 3, 'repo_has_thread': 1, 'thread_has_comment': 1, 'thread_has_comment_chain': 1, 'comment_has_chain': 1, 'thread_has_issue_chain': 1, 'issue_chain_has_comment_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'verification_or_tests': 4, 'claimed_resolved_with_verification_signal': 3, 'blueprint_human_gap_alignment': 3, 'thread_has_human_issue_and_fix_context': 2, 'weak blueprint fit': 2, 'issue_or_pull_request_thread': 1, 'data_schema_persistence': 1, 'human_reported_issue_then_verified_fix_attempt': 1, 'data_schema': 1, 'partial blueprint fit': 1}\nOutcomes: {'claimed_resolved_with_verification_signal': 6}\nQuality tiers: {'weak_supervision': 3, 'assumption_check': 3}\nCI labels: {}\nCurriculum targets:\n- Create schema-to-API-to-UI consistency tasks with migrations and tests.\n- Teach models to verify persistence, route contracts, and UI state together.\nAssumption checks:\n- Do schema changes have matching API and UI handling?\n- Are migrations and tests present for the data path?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/timogilvie/wavemill", "source_id": "graph-query-motif_query-642c77333cd6dad9", "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": "timogilvie/wavemill", "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: timogilvie/wavemill"}, "properties": {"repobilityId": 411258, "scanner": "foundry_dataset", "fingerprint": "925bda2026597641c0cb892473c6cd320820194e80937775931b5bd2aab23e89", "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": {"data_schema": 1, "weak blueprint fit": 2, "partial blueprint fit": 1, "verification_or_tests": 4, "data_schema_persistence": 2, "issue_or_pull_request_thread": 1, "ambiguous_needs_more_evidence": 3, "blueprint_human_gap_alignment": 6, "comment_has_related_commit_context": 1, "thread_has_human_issue_and_fix_context": 2, "claimed_resolved_with_verification_signal": 1, "human_reported_issue_then_verified_fix_attempt": 1}, "source": "graph_query_export", "motif_id": "schema_ui_api_mismatch", "outcomes": {"ambiguous_needs_more_evidence": 6, "claimed_resolved_with_verification_signal": 2}, "polarity": "bad", "query_id": "schema_ui_api_mismatch", "severity": "high", "ci_labels": {}, "synthetic": false, "edge_count": 46, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 2, "thread_has_comment": 2, "alignment_uses_comment": 6, "alignment_uses_finding": 6, "chain_has_link_quality": 10, "comment_aligns_finding": 6, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 2, "comment_chain_links_commit": 6, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 2}, "node_count": 32, "node_types": {"repo": 1, "commit": 5, "thread": 1, "comment": 2, "alignment": 6, "fix_outcome": 1, "issue_chain": 1, "link_quality": 10, "comment_chain": 2, "blueprint_finding": 3}, "query_type": "motif_query", "thread_key": "timogilvie/wavemill#165", "issue_number": "165", "quality_tiers": {"assumption_check": 6, "weak_supervision": 4}, "repo_full_name": "timogilvie/wavemill", "training_usage": "assumption_check", "source_motif_id": "graph-pattern-motif-thread-462168a2446f2b1f", "graph_gold_label": "supported_by_verification_signal", "changed_file_labels": {}}, "text": "Graph query export: Schema, UI, and API mismatch\nQuery id: schema_ui_api_mismatch\nQuery type: motif_query\nIntent: Assumption-check examples for data-path consistency across layers.\nMotif: schema_ui_api_mismatch\nTraining usage: assumption_check\nGraph gold label: supported_by_verification_signal\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#165\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: timogilvie/wavemill\nThread: timogilvie/wavemill#165\nGraph gold label: supported_by_verification_signal\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: timogilvie/wavemill#165\nRepo: timogilvie/wavemill\nIssue/PR number: 165\nGraph consistency label: supported_by_verification_signal\nNodes: 32\nEdges: 46\nNode types: {'link_quality': 10, 'alignment': 6, 'commit': 5, 'blueprint_finding': 3, 'comment': 2, 'comment_chain': 2, 'thread': 1, 'repo': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'chain_has_link_quality': 10, 'comment_chain_links_commit': 6, 'alignment_uses_comment': 6, 'alignment_uses_finding': 6, 'comment_aligns_finding': 6, 'thread_has_comment': 2, 'thread_has_comment_chain': 2, 'comment_has_chain': 2, 'issue_chain_has_comment_chain': 2, 'repo_has_thread': 1, 'thread_has_issue_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'blueprint_human_gap_alignment': 6, 'verification_or_tests': 4, 'ambiguous_needs_more_evidence': 3, 'data_schema_persistence': 2, 'thread_has_human_issue_and_fix_context': 2, 'weak blueprint fit': 2, 'issue_or_pull_request_thread': 1, 'comment_has_related_commit_context': 1, 'human_reported_issue_then_verified_fix_attempt': 1, 'data_schema': 1, 'claimed_resolved_with_verification_signal': 1, 'partial blueprint fit': 1}\nOutcomes: {'ambiguous_needs_more_evidence': 6, 'claimed_resolved_with_verification_signal': 2}\nQuality tiers: {'assumption_check': 6, 'weak_supervision': 4}\nCI labels: {}\nCurriculum targets:\n- Create schema-to-API-to-UI consistency tasks with migrations and tests.\n- Teach models to verify persistence, route contracts, and UI state together.\nAssumption checks:\n- Do schema changes have matching API and UI handling?\n- Are migrations and tests present for the data path?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/timogilvie/wavemill", "source_id": "graph-query-motif_query-3c63498d352d87b8", "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": "timogilvie/wavemill", "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: timogilvie/wavemill"}, "properties": {"repobilityId": 411257, "scanner": "foundry_dataset", "fingerprint": "1da92beb708221364e60d30691c24c3aa86f34ee620e369cdd46b50ff15c7472", "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": {"data_schema": 1, "weak blueprint fit": 2, "partial blueprint fit": 1, "verification_or_tests": 7, "human_feedback_general": 2, "data_schema_persistence": 2, "unlinked_human_feedback": 2, "issue_or_pull_request_thread": 1, "ambiguous_needs_more_evidence": 5, "blueprint_human_gap_alignment": 6, "comment_has_related_commit_context": 1, "thread_has_human_issue_and_fix_context": 2, "claimed_resolved_with_verification_signal": 1, "human_reported_issue_then_verified_fix_attempt": 1}, "source": "graph_query_export", "motif_id": "schema_ui_api_mismatch", "outcomes": {"ambiguous_needs_more_evidence": 10, "claimed_resolved_with_verification_signal": 2}, "polarity": "bad", "query_id": "schema_ui_api_mismatch", "severity": "high", "ci_labels": {}, "synthetic": false, "edge_count": 59, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 4, "thread_has_comment": 4, "alignment_uses_comment": 6, "alignment_uses_finding": 6, "chain_has_link_quality": 12, "comment_aligns_finding": 6, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 4, "comment_chain_links_commit": 9, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 4}, "node_count": 41, "node_types": {"repo": 1, "commit": 8, "thread": 1, "comment": 4, "alignment": 6, "fix_outcome": 1, "issue_chain": 1, "link_quality": 12, "comment_chain": 4, "blueprint_finding": 3}, "query_type": "motif_query", "thread_key": "timogilvie/wavemill#164", "issue_number": "164", "quality_tiers": {"unresolved": 2, "assumption_check": 6, "weak_supervision": 4}, "repo_full_name": "timogilvie/wavemill", "training_usage": "assumption_check", "source_motif_id": "graph-pattern-motif-thread-1c8a1ed78b571052", "graph_gold_label": "supported_by_verification_signal", "changed_file_labels": {}}, "text": "Graph query export: Schema, UI, and API mismatch\nQuery id: schema_ui_api_mismatch\nQuery type: motif_query\nIntent: Assumption-check examples for data-path consistency across layers.\nMotif: schema_ui_api_mismatch\nTraining usage: assumption_check\nGraph gold label: supported_by_verification_signal\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#164\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: timogilvie/wavemill\nThread: timogilvie/wavemill#164\nGraph gold label: supported_by_verification_signal\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: timogilvie/wavemill#164\nRepo: timogilvie/wavemill\nIssue/PR number: 164\nGraph consistency label: supported_by_verification_signal\nNodes: 41\nEdges: 59\nNode types: {'link_quality': 12, 'commit': 8, 'alignment': 6, 'comment': 4, 'comment_chain': 4, 'blueprint_finding': 3, 'thread': 1, 'repo': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'chain_has_link_quality': 12, 'comment_chain_links_commit': 9, 'alignment_uses_comment': 6, 'alignment_uses_finding': 6, 'comment_aligns_finding': 6, 'thread_has_comment': 4, 'thread_has_comment_chain': 4, 'comment_has_chain': 4, 'issue_chain_has_comment_chain': 4, 'repo_has_thread': 1, 'thread_has_issue_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'verification_or_tests': 7, 'blueprint_human_gap_alignment': 6, 'ambiguous_needs_more_evidence': 5, 'data_schema_persistence': 2, 'human_feedback_general': 2, 'unlinked_human_feedback': 2, 'thread_has_human_issue_and_fix_context': 2, 'weak blueprint fit': 2, 'issue_or_pull_request_thread': 1, 'comment_has_related_commit_context': 1, 'human_reported_issue_then_verified_fix_attempt': 1, 'data_schema': 1, 'claimed_resolved_with_verification_signal': 1, 'partial blueprint fit': 1}\nOutcomes: {'ambiguous_needs_more_evidence': 10, 'claimed_resolved_with_verification_signal': 2}\nQuality tiers: {'assumption_check': 6, 'weak_supervision': 4, 'unresolved': 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/timogilvie/wavemill", "source_id": "graph-query-motif_query-ea74177a79543995", "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": "timogilvie/wavemill", "source_dataset": "graph_queries/schema_ui_api_mismatch", "training_usage": "assumption_check"}}}, {"ruleId": "foundry_bad_chain", "level": "error", "message": {"text": "Foundry mined bad chains: timogilvie/wavemill"}, "properties": {"repobilityId": 391445, "scanner": "foundry_dataset", "fingerprint": "fa9d35af5759b497b9f483520be54559c52c77c3853a99048b35967504be6b05", "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": "timogilvie/wavemill#741", "human_labels": ["api_or_backend", "data_schema_persistence", "dependency_or_build", "docs_or_claims", "schema_or_data", "source_or_other", "test_or_ci"], "issue_number": "741", "thread_label": "thread_has_human_issue_without_fix_context", "outcome_label": "not_resolved_or_not_observed", "source_backed": true, "max_confidence": 0.0, "repo_full_name": "timogilvie/wavemill", "training_usage": "negative_or_unresolved", "confidence_tier": "unresolved", "source_chain_id": "evidence-chain-issue_chain-60dcefaf8daffbb7", "helicopter_views": {"graphs": 2, "schemas": 2}, "artifact_families": {"docs": 1, "schemas": 1}, "source_chain_kind": "issue_chain", "changed_file_count": 49, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {"test_or_ci": 17, "api_or_backend": 8, "docs_or_claims": 6, "schema_or_data": 4, "source_or_other": 13, "dependency_or_build": 1}, "linked_commit_count": 0, "helicopter_view_count": 4, "source_artifact_count": 2, "classification_reasons": ["source_graph_has_real_artifacts", "source_graph_has_verification_artifacts", "repo_has_isolated_helicopter_views", "link_quality_unresolved", "high_risk_human_feedback_label"], "linked_ci_commit_count": 0, "verification_artifact_count": 1, "design_schema_api_artifact_count": 1}, "text": "Comment chain pattern product: bad_chains\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#741\nOutcome: not_resolved_or_not_observed\nThread label: thread_has_human_issue_without_fix_context\nSource graph label: source_backed_multi_signal_graph\nReasons: source_graph_has_real_artifacts, source_graph_has_verification_artifacts, repo_has_isolated_helicopter_views, link_quality_unresolved, high_risk_human_feedback_label\nChain evidence:\nIssue/PR evidence chain: timogilvie/wavemill#741\nRepo: timogilvie/wavemill\nThread label: thread_has_human_issue_without_fix_context\nOutcome: not_resolved_or_not_observed\nComment count: 1\nLinked commit count: 0\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 49\nLabels: {'data_schema_persistence': 1}\nPolarities: {'bad': 1}\nChanged file labels: {'docs_or_claims': 6, 'dependency_or_build': 1, 'source_or_other': 13, 'test_or_ci': 17, 'schema_or_data': 4, 'api_or_backend': 8}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-e8a125117d606baf\",\n    \"kind\": \"pull_request_body\",\n    \"label\": \"data_schema_persistence\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/timogilvie/wavemill/pull/741\",\n    \"text\": \"GitHub feedback: data_schema_persistence\\nPolarity: bad\\nKind: pull_request_body\\nRepo: timogilvie/wavemill\\nAuthor: timogilvie (User)\\nURL: https://github.com/timogilvie/wavemill/pull/741\\nTitle: Promote auto/integration to main\\nBody:\\nPromotes origin/auto/integration into main with a merge commit so both branch histories are preserved.\\\\n\\\\nImportant: merge this PR with a merge commit, not squash. Squashing would keep the integration history mismatch and make the next promotion conflict again.\\\\n\\\\nVerification run in /tmp/wavemill-promote-rehearsal:\\\\n- git diff --check\\\\n- node --test shared/lib/model-registry.test.ts shared/lib/llm-cli.test.ts shared/lib/hokusai-router-audit.test.ts shared/lib/hokusai-contribution-schema.test.ts shared/lib/hokusai-contribution-builder.test.ts shared/lib/hokusai-queue.test.ts shared/lib/openrouter-catalog.test.ts shared/lib/openrouter-provider.test.ts shared/lib/openrouter-launcher.test.ts shared/lib/config.test.ts shared/lib/eval-corpus-migrator.test.ts shared/lib/eval-schema.test.ts shared/lib/eval.test.js\\\\n- bash tests/check-shell.sh\"\n  }\n]\nChanged files:\n[\n  {\n    \"id\": \"github-pr-file-file-2f71ebcd438de43c\",\n    \"filename\": \"docs/hokusai-model-spec.md\",\n    \"label\": \"docs_or_claims\",\n    \"status\": \"modified\",\n    \"additions\": 3,\n    \"deletions\": 1,\n    \"changes\": 4,\n    \"blob_url\": \"https://github.com/timogilvie/wavemill/blob/c7233f6fa81d734d4a0e0ed1eaf0d7fb817d8bde/docs%2Fhokusai-model-spec.md\"\n  },\n  {\n    \"id\": \"github-pr-file-file-9a1d506d46c6c86c\",\n    \"filename\": \"docs/routing-and-hokusai.md\",\n    \"label\": \"docs_or_claims\",\n    \"status\": \"modified\",\n    \"additions\": 1,\n    \"deletions\": 0,\n    \"changes\": 1,\n    \"blob_url\": \"https://github.com/timogilvie/wavemill/blob/c7233f6fa81d734d4a0e0ed1eaf0d7fb817d8bde/docs%2F\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/timogilvie/wavemill", "source_id": "comment-chain-pattern-bad_chains-642a728a5826d216", "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": "timogilvie/wavemill", "source_dataset": "comment_chain_patterns/bad_chains", "training_usage": "negative_or_unresolved"}}}, {"ruleId": "foundry_bad_chain", "level": "error", "message": {"text": "Foundry mined bad chains: timogilvie/wavemill"}, "properties": {"repobilityId": 391444, "scanner": "foundry_dataset", "fingerprint": "1110e3b0e653fffdc944128b11765f467a7400eb60df5f36dcbfe1fbd1c9a478", "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": "timogilvie/wavemill#735", "human_labels": ["api_or_backend", "dependency_or_build", "mock_placeholder", "source_or_other", "test_or_ci"], "issue_number": "735", "thread_label": "thread_has_human_issue_without_fix_context", "outcome_label": "not_resolved_or_not_observed", "source_backed": true, "max_confidence": 0.0, "repo_full_name": "timogilvie/wavemill", "training_usage": "negative_or_unresolved", "confidence_tier": "unresolved", "source_chain_id": "evidence-chain-issue_chain-91deee8a629ad6bf", "helicopter_views": {"graphs": 2, "schemas": 2}, "artifact_families": {"docs": 1, "schemas": 1}, "source_chain_kind": "issue_chain", "changed_file_count": 5, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {"test_or_ci": 1, "api_or_backend": 2, "source_or_other": 1, "dependency_or_build": 1}, "linked_commit_count": 0, "helicopter_view_count": 4, "source_artifact_count": 2, "classification_reasons": ["source_graph_has_real_artifacts", "source_graph_has_verification_artifacts", "repo_has_isolated_helicopter_views", "link_quality_unresolved", "high_risk_human_feedback_label"], "linked_ci_commit_count": 0, "verification_artifact_count": 1, "design_schema_api_artifact_count": 1}, "text": "Comment chain pattern product: bad_chains\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#735\nOutcome: not_resolved_or_not_observed\nThread label: thread_has_human_issue_without_fix_context\nSource graph label: source_backed_multi_signal_graph\nReasons: source_graph_has_real_artifacts, source_graph_has_verification_artifacts, repo_has_isolated_helicopter_views, link_quality_unresolved, high_risk_human_feedback_label\nChain evidence:\nIssue/PR evidence chain: timogilvie/wavemill#735\nRepo: timogilvie/wavemill\nThread label: thread_has_human_issue_without_fix_context\nOutcome: not_resolved_or_not_observed\nComment count: 1\nLinked commit count: 0\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 5\nLabels: {'mock_placeholder': 1}\nPolarities: {'bad': 1}\nChanged file labels: {'dependency_or_build': 1, 'source_or_other': 1, 'test_or_ci': 1, 'api_or_backend': 2}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-567b4950f63d94fe\",\n    \"kind\": \"pull_request_body\",\n    \"label\": \"mock_placeholder\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/timogilvie/wavemill/pull/735\",\n    \"text\": \"GitHub feedback: mock_placeholder\\nPolarity: bad\\nKind: pull_request_body\\nRepo: timogilvie/wavemill\\nAuthor: timogilvie (User)\\nURL: https://github.com/timogilvie/wavemill/pull/735\\nTitle: HOK-2232: Ingest and normalize OpenRouter launch-priority model catalog\\nBody:\\n## Summary\\n\\nAdds a Wavemill catalog sync path that joins the static launch-priority model list (HOK-2211) against the live OpenRouter model API and produces a deterministic snapshot artifact.\\n\\n- **Launch-priority fixture**: 30-model catalog covering Claude, GPT, DeepSeek, Qwen, Kimi, Gemini, Llama, Mistral, and Grok families with status, priority tier, and role eligibility\\n- **Core sync logic**: Normalizes pricing (per-token \u2192 per-MTok), resolves context windows, and produces explicit blockers for missing/deprecated models\\n- **Snapshot determinism**: Sorted-key JSON serialization and SHA-256 source hash for audit trail\\n- **CLI tool**: Fetches live OpenRouter data, validates against fixture, reports blockers to stderr, exits non-zero when tier-1 active models are blocked\\n\\n## Changes\\n\\n### Core Implementation\\n- `shared/lib/openrouter-catalog.ts` \u2014 Pure functions for fixture loading, OpenRouter API fetch, normalization, and snap\"\n  }\n]\nChanged files:\n[\n  {\n    \"id\": \"github-pr-file-file-0c08389f1e662085\",\n    \"filename\": \"package.json\",\n    \"label\": \"dependency_or_build\",\n    \"status\": \"modified\",\n    \"additions\": 1,\n    \"deletions\": 1,\n    \"changes\": 2,\n    \"blob_url\": \"https://github.com/timogilvie/wavemill/blob/6e8972891763e7c5f722dc7015974f1e1daa07d5/package.json\"\n  },\n  {\n    \"id\": \"github-pr-file-file-09db19532086a288\",\n    \"filename\": \"shared/fixtures/model_30_launch_priority_models.v1.json\",\n    \"label\": \"source_or_other\",\n    \"status\": \"added\",\n    \"additions\": 246,\n    \"deletions\": 0,\n    \"changes\": 246,\n    \"blob_url\": \"https://github.com\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/timogilvie/wavemill", "source_id": "comment-chain-pattern-bad_chains-087855e7d767c86b", "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": "timogilvie/wavemill", "source_dataset": "comment_chain_patterns/bad_chains", "training_usage": "negative_or_unresolved"}}}, {"ruleId": "foundry_bad_chain", "level": "error", "message": {"text": "Foundry mined bad chains: timogilvie/wavemill"}, "properties": {"repobilityId": 391443, "scanner": "foundry_dataset", "fingerprint": "317e218c3be40ed473d502e215755c3c7b5e0203b185cb96a9530bcfba63aab7", "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": "timogilvie/wavemill#728", "human_labels": ["mock_placeholder"], "issue_number": "728", "thread_label": "thread_has_human_issue_and_fix_context", "outcome_label": "ambiguous_needs_more_evidence", "source_backed": true, "max_confidence": 0.8, "repo_full_name": "timogilvie/wavemill", "training_usage": "gold_candidate", "confidence_tier": "high_confidence", "source_chain_id": "evidence-chain-issue_chain-5f7ce457753ebf8a", "helicopter_views": {"graphs": 2, "schemas": 2}, "artifact_families": {"docs": 1, "schemas": 1}, "source_chain_kind": "issue_chain", "changed_file_count": 0, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {}, "linked_commit_count": 1, "helicopter_view_count": 4, "source_artifact_count": 2, "classification_reasons": ["source_graph_has_real_artifacts", "source_graph_has_verification_artifacts", "repo_has_isolated_helicopter_views", "link_quality_high_confidence", "high_risk_human_feedback_label"], "linked_ci_commit_count": 0, "verification_artifact_count": 1, "design_schema_api_artifact_count": 1}, "text": "Comment chain pattern product: bad_chains\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#728\nOutcome: ambiguous_needs_more_evidence\nThread label: thread_has_human_issue_and_fix_context\nSource graph label: source_backed_multi_signal_graph\nReasons: source_graph_has_real_artifacts, source_graph_has_verification_artifacts, repo_has_isolated_helicopter_views, link_quality_high_confidence, high_risk_human_feedback_label\nChain evidence:\nIssue/PR evidence chain: timogilvie/wavemill#728\nRepo: timogilvie/wavemill\nThread label: thread_has_human_issue_and_fix_context\nOutcome: ambiguous_needs_more_evidence\nComment count: 1\nLinked commit count: 1\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 0\nLabels: {'mock_placeholder': 1}\nPolarities: {'bad': 1}\nChanged file labels: {}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-1d6212de5b23daee\",\n    \"kind\": \"pull_request_body\",\n    \"label\": \"mock_placeholder\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/timogilvie/wavemill/pull/728\",\n    \"text\": \"GitHub feedback: mock_placeholder\\nPolarity: bad\\nKind: pull_request_body\\nRepo: timogilvie/wavemill\\nAuthor: timogilvie (User)\\nURL: https://github.com/timogilvie/wavemill/pull/728\\nTitle: Route headless utility LLM calls to Codex (HOK-2226)\\nBody:\\n## Summary\\n\\nPhase 1 of reducing headless Claude usage (parent: HOK-2224; builds on #727). Converts the **unattended/automated** single-shot LLM call sites from hardcoded `callClaude()` to Codex (`gpt-5.5`).\\n\\nRather than hardcode `provider:'codex'` at each site, **the provider now follows the model**:\\n\\n- `llm-cli.ts` \u2014 new exported `resolveProviderForModel()`: the registry maps `gpt-*`/OpenAI models \u2192 `codex`, everything else \u2192 `claude` (with a name heuristic for ids not in the registry).\\n- New `shared/lib/headless-llm.ts` \u2014 `callHeadlessLLM()` derives the provider from the model and translates the **Claude-CLI-only** flags (`--tools ''`, `--append-system-prompt`) that Codex doesn't support: the system instruction is folded into the prompt, and tool use is bounded by the codex `--sandbox read-only` default. Default headless model is `gpt-5.5`, overridable via `WAVEMILL_HEADLESS_MODEL` (Phase 3 will source it from config).\\n\\n## Converted hot/auto\"\n  }\n]\nChanged files:\n[]\nLinked chain ids:\n[\"evidence-chain-comment_to_commit-8bc76e2cc1c3f495\"]\nSource graph evidence:\nSource evidence repo graph summary\nRepo: timogilvie/wavemill\nGraph label: source_backed_multi_signal_graph\nNodes: 10\nEdges: 12\nNode types: {\"cooccurrence_profile\": 1, \"github_repo_summary\": 1, \"helicopter_repo_view\": 4, \"repo\": 1, \"source_artifact\": 2, \"source_bundle\": 1}\nEdge types: {\"artifact_needs_claim_verification\": 1, \"artifact_supports_verification\": 1, \"repo_has_cooccurrence_profile\": 1, \"repo_has_github_evidence_summary\": 1, \"repo_has_graphs_helicopter_view\": 2, \"repo_has_schemas_helicopter_view\": 2, \"repo_has_source_artifact\": 2, \"repo_has_source_bundle\": 1, \"source_bundle_uses_coocc\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/timogilvie/wavemill", "source_id": "comment-chain-pattern-bad_chains-e6564e2fee5bf6e9", "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": "timogilvie/wavemill", "source_dataset": "comment_chain_patterns/bad_chains", "training_usage": "gold_candidate"}}}, {"ruleId": "foundry_bad_chain", "level": "error", "message": {"text": "Foundry mined bad chains: timogilvie/wavemill"}, "properties": {"repobilityId": 391442, "scanner": "foundry_dataset", "fingerprint": "262a79687081493ef5f2f2392cf2a777184abbe1593627fcda69947452a01272", "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": "timogilvie/wavemill#716", "human_labels": ["agent_instruction_gap"], "issue_number": "716", "thread_label": "thread_has_human_issue_and_fix_context", "outcome_label": "self_attested_unverified", "source_backed": true, "max_confidence": 0.9, "repo_full_name": "timogilvie/wavemill", "training_usage": "gold_candidate", "confidence_tier": "high_confidence", "source_chain_id": "evidence-chain-issue_chain-651919319e11552a", "helicopter_views": {"graphs": 2, "schemas": 2}, "artifact_families": {"docs": 1, "schemas": 1}, "source_chain_kind": "issue_chain", "changed_file_count": 0, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {}, "linked_commit_count": 1, "helicopter_view_count": 4, "source_artifact_count": 2, "classification_reasons": ["source_graph_has_real_artifacts", "source_graph_has_verification_artifacts", "repo_has_isolated_helicopter_views", "link_quality_high_confidence"], "linked_ci_commit_count": 0, "verification_artifact_count": 1, "design_schema_api_artifact_count": 1}, "text": "Comment chain pattern product: bad_chains\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#716\nOutcome: self_attested_unverified\nThread label: thread_has_human_issue_and_fix_context\nSource graph label: source_backed_multi_signal_graph\nReasons: source_graph_has_real_artifacts, source_graph_has_verification_artifacts, repo_has_isolated_helicopter_views, link_quality_high_confidence\nChain evidence:\nIssue/PR evidence chain: timogilvie/wavemill#716\nRepo: timogilvie/wavemill\nThread label: thread_has_human_issue_and_fix_context\nOutcome: self_attested_unverified\nComment count: 1\nLinked commit count: 1\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 0\nLabels: {'agent_instruction_gap': 1}\nPolarities: {'bad': 1}\nChanged file labels: {}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-985254349d81b43f\",\n    \"kind\": \"pull_request_body\",\n    \"label\": \"agent_instruction_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/timogilvie/wavemill/pull/716\",\n    \"text\": \"GitHub feedback: agent_instruction_gap\\nPolarity: bad\\nKind: pull_request_body\\nRepo: timogilvie/wavemill\\nAuthor: timogilvie (User)\\nURL: https://github.com/timogilvie/wavemill/pull/716\\nTitle: Open routing config to Fable 5 and Opus 4.8 for model diversity\\nBody:\\n## Why\\n\\nThe router keeps selecting the same paths (Opus plans, GPT-5.x codes, a Claude model reviews) instead of spreading usage across newer models. A review of the routing stack found the repo config itself excluded the newest models from every exploration path:\\n\\n- `challenge.models` lacked `claude-fable-5` and `claude-opus-4-8`, and still listed the disabled `gpt-5.3-codex` \u2014 the 30% challenge roll could never select the models we most need data on\\n- `router.availableModels.planner` was pinned to `[claude-opus-4-7, claude-sonnet-4-6, gpt-5.4, gpt-5.5]`, structurally barring Fable 5 / Opus 4.8 from planning\\n- `eval.pricing` had no entries for either model; the pricing table feeds the heuristic router's model pool, so they were also missing from heuristic routing\\n\\n## Changes\\n\\n- **challenge**: add `claude-fable-5` + `claude-opus-4-8`, remove disabled `gpt-5.3-codex`, raise `rate` 0.3 \u2192 0.5 while the new models are data-starved \"\n  }\n]\nChanged files:\n[]\nLinked chain ids:\n[\"evidence-chain-comment_to_commit-34631853f12af543\"]\nSource graph evidence:\nSource evidence repo graph summary\nRepo: timogilvie/wavemill\nGraph label: source_backed_multi_signal_graph\nNodes: 10\nEdges: 12\nNode types: {\"cooccurrence_profile\": 1, \"github_repo_summary\": 1, \"helicopter_repo_view\": 4, \"repo\": 1, \"source_artifact\": 2, \"source_bundle\": 1}\nEdge types: {\"artifact_needs_claim_verification\": 1, \"artifact_supports_verification\": 1, \"repo_has_cooccurrence_profile\": 1, \"repo_has_github_evidence_summary\": 1, \"repo_has_graphs_helicopter_view\": 2, \"repo_has_schemas_helicopter_view\": 2, \"repo_has_source_artifact\": 2, \"repo_has_source_bundle\": 1, \"source_bundle_uses_cooccurrence_profile\": 1}\nArtifact f\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/timogilvie/wavemill", "source_id": "comment-chain-pattern-bad_chains-0503b5c59e64b489", "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": "timogilvie/wavemill", "source_dataset": "comment_chain_patterns/bad_chains", "training_usage": "gold_candidate"}}}, {"ruleId": "foundry_bad_chain", "level": "error", "message": {"text": "Foundry mined bad chains: timogilvie/wavemill"}, "properties": {"repobilityId": 391441, "scanner": "foundry_dataset", "fingerprint": "3c3c8b1268c0c0fce3200a5f5c0f79192a755e073920cc96618282aa22ee339f", "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": "timogilvie/wavemill#702", "human_labels": ["mock_placeholder", "source_or_other", "test_or_ci"], "issue_number": "702", "thread_label": "thread_has_human_issue_and_fix_context", "outcome_label": "claimed_resolved_unverified", "source_backed": true, "max_confidence": 0.65, "repo_full_name": "timogilvie/wavemill", "training_usage": "weak_supervision", "confidence_tier": "weak_supervision", "source_chain_id": "evidence-chain-issue_chain-38287f1e033ee654", "helicopter_views": {"graphs": 2, "schemas": 2}, "artifact_families": {"docs": 1, "schemas": 1}, "source_chain_kind": "issue_chain", "changed_file_count": 2, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {"test_or_ci": 1, "source_or_other": 1}, "linked_commit_count": 5, "helicopter_view_count": 4, "source_artifact_count": 2, "classification_reasons": ["source_graph_has_real_artifacts", "source_graph_has_verification_artifacts", "repo_has_isolated_helicopter_views", "link_quality_weak_supervision", "high_risk_human_feedback_label"], "linked_ci_commit_count": 0, "verification_artifact_count": 1, "design_schema_api_artifact_count": 1}, "text": "Comment chain pattern product: bad_chains\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#702\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: timogilvie/wavemill#702\nRepo: timogilvie/wavemill\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: 2\nLabels: {'mock_placeholder': 1}\nPolarities: {'bad': 1}\nChanged file labels: {'source_or_other': 1, 'test_or_ci': 1}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-1c42d62170e00f05\",\n    \"kind\": \"pull_request_body\",\n    \"label\": \"mock_placeholder\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/timogilvie/wavemill/pull/702\",\n    \"text\": \"GitHub feedback: mock_placeholder\\nPolarity: bad\\nKind: pull_request_body\\nRepo: timogilvie/wavemill\\nAuthor: timogilvie (User)\\nURL: https://github.com/timogilvie/wavemill/pull/702\\nTitle: HOK-2044: Preserve ready preflight tool diagnostics\\nBody:\\n## Summary\\n\\n- Capture stderr from `check-cross-pr-reverts.ts` and distinguish tool/infrastructure failures (rc\u22601) from policy failures (rc=1) in the ready-stage gate.\\n- Embed the first non-empty stderr line (capped at 200 chars) in the `.needs-attention` message and error log so operators see the actionable hint inside the ready artifact instead of needing to dig through external logs.\\n- Tag tool-error messages with `(tool error)` so they are unambiguously distinguishable from the unchanged policy-failure acknowledgement message.\\n- Add direct unit coverage for `cross_pr_revert_gate_allows_merge` exercising rc=1 policy, rc=2 with stderr, and rc=2 with empty stderr.\\n\\n## Changes\\n\\n- `shared/lib/wavemill-mill.sh` \u2014 `cross_pr_revert_gate_allows_merge()` now redirects stderr to a temp file, branches on rc, formats a labelled tool-error message with a bounded diagnostic, and always cleans up the temp file before returning.\\n- `tests/launch-ready-phase.t\"\n  }\n]\nChanged files:\n[\n  {\n    \"id\": \"github-pr-file-file-813f1601032e1e4e\",\n    \"filename\": \"shared/lib/wavemill-mill.sh\",\n    \"label\": \"source_or_other\",\n    \"status\": \"modified\",\n    \"additions\": 9,\n    \"deletions\": 3,\n    \"changes\": 12,\n    \"blob_url\": \"https://github.com/timogilvie/wavemill/blob/98306e794dda12edd962fabd6753a30437885df7/shared%2Flib%2Fwavemill-mill.sh\"\n  },\n  {\n    \"id\": \"github-pr-file-file-1c06d60514177ddf\",\n    \"filename\": \"tests/launch-ready-phase.test.sh\",\n    \"label\": \"test_or_ci\",\n    \"status\": \"modified\",\n    \"additions\": 60,\n    \"deletions\": 15,\n    \"changes\": 75,\n    \"blob_url\": \"https://github.com/timogilvie/wavemill/blob/98306e794dda12edd962fa\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/timogilvie/wavemill", "source_id": "comment-chain-pattern-bad_chains-751aab4fb91d4ac6", "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": "timogilvie/wavemill", "source_dataset": "comment_chain_patterns/bad_chains", "training_usage": "weak_supervision"}}}, {"ruleId": "foundry_bad_chain", "level": "error", "message": {"text": "Foundry mined bad chains: timogilvie/wavemill"}, "properties": {"repobilityId": 391440, "scanner": "foundry_dataset", "fingerprint": "1d887184d94c86d3611f4f3f434d580efbde87acc23f90dabafe9d7b08b0367f", "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": "timogilvie/wavemill#696", "human_labels": ["mock_placeholder"], "issue_number": "696", "thread_label": "thread_has_human_issue_and_fix_context", "outcome_label": "claimed_resolved_unverified", "source_backed": true, "max_confidence": 0.65, "repo_full_name": "timogilvie/wavemill", "training_usage": "weak_supervision", "confidence_tier": "weak_supervision", "source_chain_id": "evidence-chain-issue_chain-03a018e52a7e7a6b", "helicopter_views": {"graphs": 2, "schemas": 2}, "artifact_families": {"docs": 1, "schemas": 1}, "source_chain_kind": "issue_chain", "changed_file_count": 0, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {}, "linked_commit_count": 2, "helicopter_view_count": 4, "source_artifact_count": 2, "classification_reasons": ["source_graph_has_real_artifacts", "source_graph_has_verification_artifacts", "repo_has_isolated_helicopter_views", "link_quality_weak_supervision", "high_risk_human_feedback_label"], "linked_ci_commit_count": 0, "verification_artifact_count": 1, "design_schema_api_artifact_count": 1}, "text": "Comment chain pattern product: bad_chains\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#696\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: timogilvie/wavemill#696\nRepo: timogilvie/wavemill\nThread label: thread_has_human_issue_and_fix_context\nOutcome: claimed_resolved_unverified\nComment count: 1\nLinked commit count: 2\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 0\nLabels: {'mock_placeholder': 1}\nPolarities: {'bad': 1}\nChanged file labels: {}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-3ddf3d516e92c6fe\",\n    \"kind\": \"pull_request_body\",\n    \"label\": \"mock_placeholder\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/timogilvie/wavemill/pull/696\",\n    \"text\": \"GitHub feedback: mock_placeholder\\nPolarity: bad\\nKind: pull_request_body\\nRepo: timogilvie/wavemill\\nAuthor: timogilvie (User)\\nURL: https://github.com/timogilvie/wavemill/pull/696\\nTitle: HOK-1952_c: Fix Linear identifier filter HTTP 400 error in setIssuesState\\nBody:\\n## Summary\\n\\n- Fixes HTTP 400 errors from Linear's GraphQL API when batching issue state updates. The `identifier: { in: $identifiers }` filter is not defined by `IssueFilter` in the Linear API, causing every batch call to fail.\\n- Replaces the unsupported `identifier` filter with `number: { in: [...] }` combined with `team: { key: { eq: \\\"...\\\" } }`, which are valid `IssueFilter` fields.\\n- Groups identifiers by team key before batching, so each chunk queries a single team with its numeric issue numbers \u2014 matching what the Linear API actually supports.\\n- Also includes a separate fix for `finalizeEvalSuccess` to correctly read eval scores from the updated score structure.\\n\\n## Changes\\n\\n- `shared/lib/linear.ts` \u2014 `setIssuesState`: parse identifiers into `{ teamKey, number }` pairs, group by team, and build per-team batch queries using `number: { in: [...] }` instead of the unsupported `identifier` filter\\n- `shared/lib/linear.test\"\n  }\n]\nChanged files:\n[]\nLinked chain ids:\n[\"evidence-chain-comment_to_commit-63ffb6c596b76359\"]\nSource graph evidence:\nSource evidence repo graph summary\nRepo: timogilvie/wavemill\nGraph label: source_backed_multi_signal_graph\nNodes: 10\nEdges: 12\nNode types: {\"cooccurrence_profile\": 1, \"github_repo_summary\": 1, \"helicopter_repo_view\": 4, \"repo\": 1, \"source_artifact\": 2, \"source_bundle\": 1}\nEdge types: {\"artifact_needs_claim_verification\": 1, \"artifact_supports_verification\": 1, \"repo_has_cooccurrence_profile\": 1, \"repo_has_github_evidence_summary\": 1, \"repo_has_graphs_helicopter_view\": 2, \"repo_has_schemas_helicopter_view\": 2, \"repo_has_source_artifact\": 2, \"repo_has_source_bundle\": 1, \"source_bundle_uses_coocc\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/timogilvie/wavemill", "source_id": "comment-chain-pattern-bad_chains-e4ef55225440383c", "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": "timogilvie/wavemill", "source_dataset": "comment_chain_patterns/bad_chains", "training_usage": "weak_supervision"}}}, {"ruleId": "foundry_bad_chain", "level": "error", "message": {"text": "Foundry mined bad chains: timogilvie/wavemill"}, "properties": {"repobilityId": 391439, "scanner": "foundry_dataset", "fingerprint": "54a397e78a78232ec88fb6ffc45b2842f8c2097afb6cb459d620ac599561ba21", "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": "timogilvie/wavemill#584", "human_labels": ["agent_instruction_gap"], "issue_number": "584", "thread_label": "thread_has_human_issue_and_fix_context", "outcome_label": "self_attested_unverified", "source_backed": true, "max_confidence": 0.607, "repo_full_name": "timogilvie/wavemill", "training_usage": "weak_supervision", "confidence_tier": "weak_supervision", "source_chain_id": "evidence-chain-issue_chain-39aeeb9a0f7b5071", "helicopter_views": {"graphs": 2, "schemas": 2}, "artifact_families": {"docs": 1, "schemas": 1}, "source_chain_kind": "issue_chain", "changed_file_count": 0, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {}, "linked_commit_count": 1, "helicopter_view_count": 4, "source_artifact_count": 2, "classification_reasons": ["source_graph_has_real_artifacts", "source_graph_has_verification_artifacts", "repo_has_isolated_helicopter_views", "link_quality_weak_supervision"], "linked_ci_commit_count": 0, "verification_artifact_count": 1, "design_schema_api_artifact_count": 1}, "text": "Comment chain pattern product: bad_chains\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#584\nOutcome: self_attested_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: timogilvie/wavemill#584\nRepo: timogilvie/wavemill\nThread label: thread_has_human_issue_and_fix_context\nOutcome: self_attested_unverified\nComment count: 1\nLinked commit count: 1\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 0\nLabels: {'agent_instruction_gap': 1}\nPolarities: {'bad': 1}\nChanged file labels: {}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-019967e8bf270fe7\",\n    \"kind\": \"pull_request_body\",\n    \"label\": \"agent_instruction_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/timogilvie/wavemill/pull/584\",\n    \"text\": \"GitHub feedback: agent_instruction_gap\\nPolarity: bad\\nKind: pull_request_body\\nRepo: timogilvie/wavemill\\nAuthor: timogilvie (User)\\nURL: https://github.com/timogilvie/wavemill/pull/584\\nTitle: HOK-1626_c: Rotating usage tips in dashboard footer\\nBody:\\n## Summary\\n- Replaces the static dashboard footer text with a rotating tip drawn from a 10-item array of usage hints\\n- Tips are cached for the lifetime of a dashboard session so the footer stays stable across redraws\\n- Covers non-obvious wavemill workflows: CLI commands (expand, plan, eval), config options (autoMergeWinner, autoApprovePatterns, WAVEMILL_DASHBOARD_REFRESH_SECONDS), and dry-run mode\\n\\n## Changes\\n- `shared/lib/wavemill-status.sh` \u2014 adds `WAVEMILL_DASHBOARD_TIPS` array, `pick_dashboard_tip()` and `current_dashboard_tip()` helpers, updates `render_dashboard` to use the cached tip\\n- `tests/wavemill-status.test.sh` \u2014 adds four assertions: correct tip count (10 unique), formatting constraints (trimmed, single-line, \u226480 chars), caching behaviour, and randomness coverage\\n- `shared/lib/wavemill-mill.sh` / `shared/lib/tend-challenge-gate.ts` / related tests \u2014 concurrent commit for challenge gating and stale log spam fix (#582)\\n\\n## Test\"\n  }\n]\nChanged files:\n[]\nLinked chain ids:\n[\"evidence-chain-comment_to_commit-595b9f0de34d1e26\"]\nSource graph evidence:\nSource evidence repo graph summary\nRepo: timogilvie/wavemill\nGraph label: source_backed_multi_signal_graph\nNodes: 10\nEdges: 12\nNode types: {\"cooccurrence_profile\": 1, \"github_repo_summary\": 1, \"helicopter_repo_view\": 4, \"repo\": 1, \"source_artifact\": 2, \"source_bundle\": 1}\nEdge types: {\"artifact_needs_claim_verification\": 1, \"artifact_supports_verification\": 1, \"repo_has_cooccurrence_profile\": 1, \"repo_has_github_evidence_summary\": 1, \"repo_has_graphs_helicopter_view\": 2, \"repo_has_schemas_helicopter_view\": 2, \"repo_has_source_artifact\": 2, \"repo_has_source_bundle\": 1, \"source_bundle_uses_cooccurrence_profile\": 1}\nArtifact\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/timogilvie/wavemill", "source_id": "comment-chain-pattern-bad_chains-5fa720585d7f9de0", "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": "timogilvie/wavemill", "source_dataset": "comment_chain_patterns/bad_chains", "training_usage": "weak_supervision"}}}, {"ruleId": "foundry_bad_chain", "level": "error", "message": {"text": "Foundry mined bad chains: timogilvie/wavemill"}, "properties": {"repobilityId": 391438, "scanner": "foundry_dataset", "fingerprint": "9ccd80079ab7b8a489fe53a539fdbaf6d72978b36ed6554dc0a1b735c5dc4a0d", "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": "timogilvie/wavemill#58", "human_labels": ["human_feedback_general", "runtime_failure"], "issue_number": "58", "thread_label": "thread_has_human_issue_without_fix_context", "outcome_label": "not_resolved_or_not_observed", "source_backed": true, "max_confidence": 0.0, "repo_full_name": "timogilvie/wavemill", "training_usage": "negative_or_unresolved", "confidence_tier": "unresolved", "source_chain_id": "evidence-chain-issue_chain-e64ec55402e5fb85", "helicopter_views": {"graphs": 2, "schemas": 2}, "artifact_families": {"docs": 1, "schemas": 1}, "source_chain_kind": "issue_chain", "changed_file_count": 0, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {}, "linked_commit_count": 0, "helicopter_view_count": 4, "source_artifact_count": 2, "classification_reasons": ["source_graph_has_real_artifacts", "source_graph_has_verification_artifacts", "repo_has_isolated_helicopter_views", "link_quality_unresolved", "high_risk_human_feedback_label"], "linked_ci_commit_count": 0, "verification_artifact_count": 1, "design_schema_api_artifact_count": 1}, "text": "Comment chain pattern product: bad_chains\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#58\nOutcome: not_resolved_or_not_observed\nThread label: thread_has_human_issue_without_fix_context\nSource graph label: source_backed_multi_signal_graph\nReasons: source_graph_has_real_artifacts, source_graph_has_verification_artifacts, repo_has_isolated_helicopter_views, link_quality_unresolved, high_risk_human_feedback_label\nChain evidence:\nIssue/PR evidence chain: timogilvie/wavemill#58\nRepo: timogilvie/wavemill\nThread label: thread_has_human_issue_without_fix_context\nOutcome: not_resolved_or_not_observed\nComment count: 3\nLinked commit count: 0\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 0\nLabels: {'human_feedback_general': 1, 'runtime_failure': 2}\nPolarities: {'neutral': 1, 'bad': 2}\nChanged file labels: {}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-59029109d28f4494\",\n    \"kind\": \"issue_comment\",\n    \"label\": \"human_feedback_general\",\n    \"polarity\": \"neutral\",\n    \"url\": \"https://github.com/timogilvie/wavemill/pull/58#issuecomment-3975808285\",\n    \"text\": \"GitHub feedback: human_feedback_general\\nPolarity: neutral\\nKind: issue_comment\\nRepo: timogilvie/wavemill\\nAuthor: timogilvie (User)\\nURL: https://github.com/timogilvie/wavemill/pull/58#issuecomment-3975808285\\nTitle: \\nBody:\\nLinking to Linear issue HOK-844: https://linear.app/hokusai/issue/HOK-844\"\n  },\n  {\n    \"id\": \"github-feedback-comment-2f29c01d0757cc45\",\n    \"kind\": \"issue_comment\",\n    \"label\": \"runtime_failure\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/timogilvie/wavemill/pull/58#issuecomment-3975825470\",\n    \"text\": \"GitHub feedback: runtime_failure\\nPolarity: bad\\nKind: issue_comment\\nRepo: timogilvie/wavemill\\nAuthor: timogilvie (User)\\nURL: https://github.com/timogilvie/wavemill/pull/58#issuecomment-3975825470\\nTitle: \\nBody:\\nFollow-up for monitor crash: fixed monitor heredoc  to call  (not removed ) and made state-update failures non-fatal so warnings do not terminate the monitor under . Added shell regression checks for both behaviors.\"\n  },\n  {\n    \"id\": \"github-feedback-comment-367dee51c019c5ae\",\n    \"kind\": \"issue_comment\",\n    \"label\": \"runtime_failure\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/timogilvie/wavemill/pull/58#issuecomment-3975825873\",\n    \"text\": \"GitHub feedback: runtime_failure\\nPolarity: bad\\nKind: issue_comment\\nRepo: timogilvie/wavemill\\nAuthor: timogilvie (User)\\nURL: https://github.com/timogilvie/wavemill/pull/58#issuecomment-3975825873\\nTitle: \\nBody:\\nFollow-up for monitor crash: fixed monitor heredoc linear_set_state to call tools/set-issue-state.ts (not removed update-linear-state.ts) and made state-update failures non-fatal so warnings do not terminate the monitor under set -e. Added shell regression checks for both behaviors.\"\n  }\n]\nChanged files:\n[]\nLinked chain ids:\n[\"evidence-chain-comment_to_commit-98727ac21801f4d0\", \"evidence-chain-comment_to_commit-a0f44fb08\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/timogilvie/wavemill", "source_id": "comment-chain-pattern-bad_chains-1bd8767eac7bf5fd", "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": "timogilvie/wavemill", "source_dataset": "comment_chain_patterns/bad_chains", "training_usage": "negative_or_unresolved"}}}, {"ruleId": "foundry_bad_chain", "level": "error", "message": {"text": "Foundry mined bad chains: timogilvie/wavemill"}, "properties": {"repobilityId": 391437, "scanner": "foundry_dataset", "fingerprint": "a9b59fe30fdf572a03c8f3ac9ab522b83b3b201a753853e9f9ffd3d304746ebe", "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": "timogilvie/wavemill#546", "human_labels": ["agent_instruction_gap"], "issue_number": "546", "thread_label": "thread_has_human_issue_and_fix_context", "outcome_label": "self_attested_unverified", "source_backed": true, "max_confidence": 0.59, "repo_full_name": "timogilvie/wavemill", "training_usage": "weak_supervision", "confidence_tier": "weak_supervision", "source_chain_id": "evidence-chain-issue_chain-d678b7686f30fa49", "helicopter_views": {"graphs": 2, "schemas": 2}, "artifact_families": {"docs": 1, "schemas": 1}, "source_chain_kind": "issue_chain", "changed_file_count": 0, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {}, "linked_commit_count": 1, "helicopter_view_count": 4, "source_artifact_count": 2, "classification_reasons": ["source_graph_has_real_artifacts", "source_graph_has_verification_artifacts", "repo_has_isolated_helicopter_views", "link_quality_weak_supervision"], "linked_ci_commit_count": 0, "verification_artifact_count": 1, "design_schema_api_artifact_count": 1}, "text": "Comment chain pattern product: bad_chains\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#546\nOutcome: self_attested_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: timogilvie/wavemill#546\nRepo: timogilvie/wavemill\nThread label: thread_has_human_issue_and_fix_context\nOutcome: self_attested_unverified\nComment count: 1\nLinked commit count: 1\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 0\nLabels: {'agent_instruction_gap': 1}\nPolarities: {'bad': 1}\nChanged file labels: {}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-e0a9682cf15fcc34\",\n    \"kind\": \"pull_request_body\",\n    \"label\": \"agent_instruction_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/timogilvie/wavemill/pull/546\",\n    \"text\": \"GitHub feedback: agent_instruction_gap\\nPolarity: bad\\nKind: pull_request_body\\nRepo: timogilvie/wavemill\\nAuthor: timogilvie (User)\\nURL: https://github.com/timogilvie/wavemill/pull/546\\nTitle: HOK-1581: Deduplicate ready watchdog findings on repeat state\\nBody:\\n## Summary\\n\\nThe ready watchdog was reporting the same blocker repeatedly on each tick, spamming logs. This fix deduplicates findings by comparing the current classification and detail against the previous state.\\n\\n- Only return findings whose classification or detail has changed since the last tick\\n- State file still records all current findings for dashboard completeness  \\n- Unchanged repeats no longer generate audit records\\n\\n## Changes\\n\\n- **shared/lib/ready-watchdog.ts**: Load previous state and deduplicate findings\\n  - Added logic to read `ready-watchdog-state.json` at tick start\\n  - Track `allFindings` (for state file) separately from `newFindings` (for return/logging)\\n  - Only return findings with classification or detail changes\\n\\n- **shared/lib/ready-watchdog.test.ts**: Comprehensive test for deduplication\\n  - Validates that repeat findings with same classification/detail are suppressed\\n  - Confirms findings re-emit when det\"\n  }\n]\nChanged files:\n[]\nLinked chain ids:\n[\"evidence-chain-comment_to_commit-7c1f59ee9484b476\"]\nSource graph evidence:\nSource evidence repo graph summary\nRepo: timogilvie/wavemill\nGraph label: source_backed_multi_signal_graph\nNodes: 10\nEdges: 12\nNode types: {\"cooccurrence_profile\": 1, \"github_repo_summary\": 1, \"helicopter_repo_view\": 4, \"repo\": 1, \"source_artifact\": 2, \"source_bundle\": 1}\nEdge types: {\"artifact_needs_claim_verification\": 1, \"artifact_supports_verification\": 1, \"repo_has_cooccurrence_profile\": 1, \"repo_has_github_evidence_summary\": 1, \"repo_has_graphs_helicopter_view\": 2, \"repo_has_schemas_helicopter_view\": 2, \"repo_has_source_artifact\": 2, \"repo_has_source_bundle\": 1, \"source_bundle_uses_cooccurrence_profile\": 1}\nAr\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/timogilvie/wavemill", "source_id": "comment-chain-pattern-bad_chains-b75f631be0b5f923", "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": "timogilvie/wavemill", "source_dataset": "comment_chain_patterns/bad_chains", "training_usage": "weak_supervision"}}}, {"ruleId": "foundry_bad_chain", "level": "error", "message": {"text": "Foundry mined bad chains: timogilvie/wavemill"}, "properties": {"repobilityId": 391436, "scanner": "foundry_dataset", "fingerprint": "a381ee19cef5810adf9d2b8a79b2e5f13e153013e6236de38e6d55c24a260e3b", "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": "timogilvie/wavemill#507", "human_labels": ["mock_placeholder"], "issue_number": "507", "thread_label": "thread_has_human_issue_and_fix_context", "outcome_label": "claimed_resolved_unverified", "source_backed": true, "max_confidence": 0.65, "repo_full_name": "timogilvie/wavemill", "training_usage": "weak_supervision", "confidence_tier": "weak_supervision", "source_chain_id": "evidence-chain-issue_chain-1d8d33ce31929911", "helicopter_views": {"graphs": 2, "schemas": 2}, "artifact_families": {"docs": 1, "schemas": 1}, "source_chain_kind": "issue_chain", "changed_file_count": 0, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {}, "linked_commit_count": 5, "helicopter_view_count": 4, "source_artifact_count": 2, "classification_reasons": ["source_graph_has_real_artifacts", "source_graph_has_verification_artifacts", "repo_has_isolated_helicopter_views", "link_quality_weak_supervision", "high_risk_human_feedback_label"], "linked_ci_commit_count": 0, "verification_artifact_count": 1, "design_schema_api_artifact_count": 1}, "text": "Comment chain pattern product: bad_chains\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#507\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: timogilvie/wavemill#507\nRepo: timogilvie/wavemill\nThread label: thread_has_human_issue_and_fix_context\nOutcome: claimed_resolved_unverified\nComment count: 1\nLinked commit count: 5\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 0\nLabels: {'mock_placeholder': 1}\nPolarities: {'bad': 1}\nChanged file labels: {}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-0e71dc096f33efd9\",\n    \"kind\": \"pull_request_body\",\n    \"label\": \"mock_placeholder\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/timogilvie/wavemill/pull/507\",\n    \"text\": \"GitHub feedback: mock_placeholder\\nPolarity: bad\\nKind: pull_request_body\\nRepo: timogilvie/wavemill\\nAuthor: timogilvie (User)\\nURL: https://github.com/timogilvie/wavemill/pull/507\\nTitle: test: compile-check jq -n filter literals in mill shell scripts\\nBody:\\n## Summary\\n\\nMill startup builds JSON payloads via inline jq filters wrapped in single quotes inside bash heredocs. \\\\`bash -n\\\\` treats those filters as opaque strings, and \\\\`shellcheck\\\\` doesn't parse jq either, so a malformed filter (a missing comma, an unbalanced brace) is invisible until mill actually runs and jq tries to compile it.\\n\\nThis bit us when HOK-1497 / [PR #506](https://github.com/timogilvie/wavemill/pull/506) dropped a comma between \\\\`reviewMode: \\\\$reviewMode\\\\` and \\\\`maxCostUsd: \\\\$maxCostUsd\\\\` in \\\\`wavemill-mill.sh\\\\`'s route_payload filter. The lifecycle integration job ran on the merge commit and passed because **none of its 11 sub-tests exercise the function that builds route_payload** \u2014 the bug only surfaced at real mill startup, blocking \\\\`wavemill mill\\\\` until #506 landed.\\n\\n## What this test does\\n\\nScans \\\\`wavemill-mill.sh\\\\`, \\\\`wavemill-startup-runner.sh\\\\`, and \\\\`wavemill-common.sh\\\\` for \\\\`jq -n \u2026\\\\` blocks (15 found\"\n  }\n]\nChanged files:\n[]\nLinked chain ids:\n[\"evidence-chain-comment_to_commit-ff66ba85fa9c5354\"]\nSource graph evidence:\nSource evidence repo graph summary\nRepo: timogilvie/wavemill\nGraph label: source_backed_multi_signal_graph\nNodes: 10\nEdges: 12\nNode types: {\"cooccurrence_profile\": 1, \"github_repo_summary\": 1, \"helicopter_repo_view\": 4, \"repo\": 1, \"source_artifact\": 2, \"source_bundle\": 1}\nEdge types: {\"artifact_needs_claim_verification\": 1, \"artifact_supports_verification\": 1, \"repo_has_cooccurrence_profile\": 1, \"repo_has_github_evidence_summary\": 1, \"repo_has_graphs_helicopter_view\": 2, \"repo_has_schemas_helicopter_view\": 2, \"repo_has_source_artifact\": 2, \"repo_has_source_bundle\": 1, \"source\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/timogilvie/wavemill", "source_id": "comment-chain-pattern-bad_chains-59b7c9a2aecd1131", "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": "timogilvie/wavemill", "source_dataset": "comment_chain_patterns/bad_chains", "training_usage": "weak_supervision"}}}, {"ruleId": "foundry_bad_chain", "level": "error", "message": {"text": "Foundry mined bad chains: timogilvie/wavemill"}, "properties": {"repobilityId": 391435, "scanner": "foundry_dataset", "fingerprint": "595114b4a10119b0ac49c993ff16203eb9cbf04b3c93d45b72795ad379b089a8", "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": "timogilvie/wavemill#249", "human_labels": ["agent_instruction_gap", "human_feedback_general"], "issue_number": "249", "thread_label": "thread_has_human_issue_without_fix_context", "outcome_label": "not_resolved_or_not_observed", "source_backed": true, "max_confidence": 0.0, "repo_full_name": "timogilvie/wavemill", "training_usage": "negative_or_unresolved", "confidence_tier": "unresolved", "source_chain_id": "evidence-chain-issue_chain-68bd77da8574f7ed", "helicopter_views": {"graphs": 2, "schemas": 2}, "artifact_families": {"docs": 1, "schemas": 1}, "source_chain_kind": "issue_chain", "changed_file_count": 0, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {}, "linked_commit_count": 0, "helicopter_view_count": 4, "source_artifact_count": 2, "classification_reasons": ["source_graph_has_real_artifacts", "source_graph_has_verification_artifacts", "repo_has_isolated_helicopter_views", "link_quality_unresolved"], "linked_ci_commit_count": 0, "verification_artifact_count": 1, "design_schema_api_artifact_count": 1}, "text": "Comment chain pattern product: bad_chains\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#249\nOutcome: not_resolved_or_not_observed\nThread label: thread_has_human_issue_without_fix_context\nSource graph label: source_backed_multi_signal_graph\nReasons: source_graph_has_real_artifacts, source_graph_has_verification_artifacts, repo_has_isolated_helicopter_views, link_quality_unresolved\nChain evidence:\nIssue/PR evidence chain: timogilvie/wavemill#249\nRepo: timogilvie/wavemill\nThread label: thread_has_human_issue_without_fix_context\nOutcome: not_resolved_or_not_observed\nComment count: 2\nLinked commit count: 0\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 0\nLabels: {'agent_instruction_gap': 1, 'human_feedback_general': 1}\nPolarities: {'bad': 1, 'neutral': 1}\nChanged file labels: {}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-bc1fa45c1d00e1dd\",\n    \"kind\": \"issue_comment\",\n    \"label\": \"agent_instruction_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/timogilvie/wavemill/pull/249#issuecomment-4231955638\",\n    \"text\": \"GitHub feedback: agent_instruction_gap\\nPolarity: bad\\nKind: issue_comment\\nRepo: timogilvie/wavemill\\nAuthor: timogilvie (User)\\nURL: https://github.com/timogilvie/wavemill/pull/249#issuecomment-4231955638\\nTitle: \\nBody:\\nChallenge comparison for `HOK-1212`\\n\\nPrimary used claude-opus-4-6 (planner) + gpt-5.4 (coder) + claude-sonnet-4-5-20250929 (reviewer) vs Challenger used claude-opus-4-6 (planner) + gpt-5.3-codex (coder) + claude-sonnet-4-5-20250929 (reviewer)\\nChallenge type: coder-only\\n\\nRecommended winner: primary (gpt-5.4)\\nOther PR: https://github.com/timogilvie/wavemill/pull/248\\n\\nPrimary delivers a more complete and architecturally sound fix. It addresses the root cause with a configurable settle delay before send-keys, provides a DRY `handle_phase_launch_result` helper applied consistently across all three phases plus the direct routing path, and reverts the controller phase on failure so the monitor loop can automatically retry the transition. Challenger only handles coding and review (missing planning), writes a terminal 'failed' status instead of reverting for retry, hardcodes 2 attempts, and uses coarser 1-second polling. Primary's tests are also substantially more thorough, cove\"\n  },\n  {\n    \"id\": \"github-feedback-comment-86449915bb7504c9\",\n    \"kind\": \"issue_comment\",\n    \"label\": \"human_feedback_general\",\n    \"polarity\": \"neutral\",\n    \"url\": \"https://github.com/timogilvie/wavemill/pull/249#issuecomment-4231957473\",\n    \"text\": \"GitHub feedback: human_feedback_general\\nPolarity: neutral\\nKind: issue_comment\\nRepo: timogilvie/wavemill\\nAuthor: timogilvie (User)\\nURL: https://github.com/timogilvie/wavemill/pull/249#issuecomment-4231957473\\nTitle: \\nBody:\\nclosing lost challenge\"\n  }\n]\nChanged files:\n[]\nLinked chain ids:\n[\"evidence-chain-comment_to_commit-b9ba47ed8f840e91\", \"evidence-chain-comment_to_commit-67e3d8908684997d\"]\nSource graph eviden\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/timogilvie/wavemill", "source_id": "comment-chain-pattern-bad_chains-0d97db4e4f69c4b7", "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": "timogilvie/wavemill", "source_dataset": "comment_chain_patterns/bad_chains", "training_usage": "negative_or_unresolved"}}}, {"ruleId": "foundry_bad_chain", "level": "error", "message": {"text": "Foundry mined bad chains: timogilvie/wavemill"}, "properties": {"repobilityId": 391434, "scanner": "foundry_dataset", "fingerprint": "9830348a61a997e1eeada922ee99f2a0d426482fb8cc9df5a0fbe20b247c6f88", "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": "timogilvie/wavemill#248", "human_labels": ["agent_instruction_gap"], "issue_number": "248", "thread_label": "thread_has_human_issue_without_fix_context", "outcome_label": "not_resolved_or_not_observed", "source_backed": true, "max_confidence": 0.0, "repo_full_name": "timogilvie/wavemill", "training_usage": "negative_or_unresolved", "confidence_tier": "unresolved", "source_chain_id": "evidence-chain-issue_chain-923e1d9cb421170a", "helicopter_views": {"graphs": 2, "schemas": 2}, "artifact_families": {"docs": 1, "schemas": 1}, "source_chain_kind": "issue_chain", "changed_file_count": 0, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {}, "linked_commit_count": 0, "helicopter_view_count": 4, "source_artifact_count": 2, "classification_reasons": ["source_graph_has_real_artifacts", "source_graph_has_verification_artifacts", "repo_has_isolated_helicopter_views", "link_quality_unresolved"], "linked_ci_commit_count": 0, "verification_artifact_count": 1, "design_schema_api_artifact_count": 1}, "text": "Comment chain pattern product: bad_chains\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#248\nOutcome: not_resolved_or_not_observed\nThread label: thread_has_human_issue_without_fix_context\nSource graph label: source_backed_multi_signal_graph\nReasons: source_graph_has_real_artifacts, source_graph_has_verification_artifacts, repo_has_isolated_helicopter_views, link_quality_unresolved\nChain evidence:\nIssue/PR evidence chain: timogilvie/wavemill#248\nRepo: timogilvie/wavemill\nThread label: thread_has_human_issue_without_fix_context\nOutcome: not_resolved_or_not_observed\nComment count: 1\nLinked commit count: 0\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 0\nLabels: {'agent_instruction_gap': 1}\nPolarities: {'bad': 1}\nChanged file labels: {}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-de089aadbe08c5ca\",\n    \"kind\": \"issue_comment\",\n    \"label\": \"agent_instruction_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/timogilvie/wavemill/pull/248#issuecomment-4231955611\",\n    \"text\": \"GitHub feedback: agent_instruction_gap\\nPolarity: bad\\nKind: issue_comment\\nRepo: timogilvie/wavemill\\nAuthor: timogilvie (User)\\nURL: https://github.com/timogilvie/wavemill/pull/248#issuecomment-4231955611\\nTitle: \\nBody:\\nChallenge comparison for `HOK-1212`\\n\\nPrimary used claude-opus-4-6 (planner) + gpt-5.4 (coder) + claude-sonnet-4-5-20250929 (reviewer) vs Challenger used claude-opus-4-6 (planner) + gpt-5.3-codex (coder) + claude-sonnet-4-5-20250929 (reviewer)\\nChallenge type: coder-only\\n\\nRecommended winner: primary (gpt-5.4)\\nOther PR: https://github.com/timogilvie/wavemill/pull/249\\n\\nPrimary delivers a more complete and architecturally sound fix. It addresses the root cause with a configurable settle delay before send-keys, provides a DRY `handle_phase_launch_result` helper applied consistently across all three phases plus the direct routing path, and reverts the controller phase on failure so the monitor loop can automatically retry the transition. Challenger only handles coding and review (missing planning), writes a terminal 'failed' status instead of reverting for retry, hardcodes 2 attempts, and uses coarser 1-second polling. Primary's tests are also substantially more thorough, cove\"\n  }\n]\nChanged files:\n[]\nLinked chain ids:\n[\"evidence-chain-comment_to_commit-3b593b042cf524b1\"]\nSource graph evidence:\nSource evidence repo graph summary\nRepo: timogilvie/wavemill\nGraph label: source_backed_multi_signal_graph\nNodes: 10\nEdges: 12\nNode types: {\"cooccurrence_profile\": 1, \"github_repo_summary\": 1, \"helicopter_repo_view\": 4, \"repo\": 1, \"source_artifact\": 2, \"source_bundle\": 1}\nEdge types: {\"artifact_needs_claim_verification\": 1, \"artifact_supports_verification\": 1, \"repo_has_cooccurrence_profile\": 1, \"repo_has_github_evidence_summary\": 1, \"repo_has_graphs_helicopter_view\": 2, \"repo_has_schemas_helicopter_view\": 2, \"repo_has_source_artifact\": 2, \"repo_has_source_bundle\": 1, \"source_bundle_uses_cooccur\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/timogilvie/wavemill", "source_id": "comment-chain-pattern-bad_chains-18032e9a9b436178", "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": "timogilvie/wavemill", "source_dataset": "comment_chain_patterns/bad_chains", "training_usage": "negative_or_unresolved"}}}, {"ruleId": "foundry_bad_chain", "level": "error", "message": {"text": "Foundry mined bad chains: timogilvie/wavemill"}, "properties": {"repobilityId": 391433, "scanner": "foundry_dataset", "fingerprint": "5447793789dabf0a7db763e9add3c88b2fece2f8b84d0326b21a121d53aeb2a8", "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": "timogilvie/wavemill#239", "human_labels": ["agent_instruction_gap"], "issue_number": "239", "thread_label": "thread_has_human_issue_without_fix_context", "outcome_label": "not_resolved_or_not_observed", "source_backed": true, "max_confidence": 0.0, "repo_full_name": "timogilvie/wavemill", "training_usage": "negative_or_unresolved", "confidence_tier": "unresolved", "source_chain_id": "evidence-chain-issue_chain-1c3fff5000a9f1bd", "helicopter_views": {"graphs": 2, "schemas": 2}, "artifact_families": {"docs": 1, "schemas": 1}, "source_chain_kind": "issue_chain", "changed_file_count": 0, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {}, "linked_commit_count": 0, "helicopter_view_count": 4, "source_artifact_count": 2, "classification_reasons": ["source_graph_has_real_artifacts", "source_graph_has_verification_artifacts", "repo_has_isolated_helicopter_views", "link_quality_unresolved"], "linked_ci_commit_count": 0, "verification_artifact_count": 1, "design_schema_api_artifact_count": 1}, "text": "Comment chain pattern product: bad_chains\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#239\nOutcome: not_resolved_or_not_observed\nThread label: thread_has_human_issue_without_fix_context\nSource graph label: source_backed_multi_signal_graph\nReasons: source_graph_has_real_artifacts, source_graph_has_verification_artifacts, repo_has_isolated_helicopter_views, link_quality_unresolved\nChain evidence:\nIssue/PR evidence chain: timogilvie/wavemill#239\nRepo: timogilvie/wavemill\nThread label: thread_has_human_issue_without_fix_context\nOutcome: not_resolved_or_not_observed\nComment count: 1\nLinked commit count: 0\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 0\nLabels: {'agent_instruction_gap': 1}\nPolarities: {'bad': 1}\nChanged file labels: {}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-33eea14f0b4a3ac3\",\n    \"kind\": \"issue_comment\",\n    \"label\": \"agent_instruction_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/timogilvie/wavemill/pull/239#issuecomment-4217048566\",\n    \"text\": \"GitHub feedback: agent_instruction_gap\\nPolarity: bad\\nKind: issue_comment\\nRepo: timogilvie/wavemill\\nAuthor: timogilvie (User)\\nURL: https://github.com/timogilvie/wavemill/pull/239#issuecomment-4217048566\\nTitle: \\nBody:\\nChallenge comparison for `HOK-1201`\\n\\nPrimary used claude-opus-4-6 (planner) + gpt-5.4 (coder) + claude-sonnet-4-5-20250929 (reviewer) vs Challenger used claude-opus-4-6 (planner) + gpt-5.3-codex (coder) + claude-sonnet-4-5-20250929 (reviewer)\\nChallenge type: coder-only\\n\\nRecommended winner: challenger (gpt-5.3-codex)\\nOther PR: https://github.com/timogilvie/wavemill/pull/238\\n\\nThe challenger addresses more root causes from the bug report. Both PRs fix the `local` declaration error in wavemill-status.sh and implement in-place task list rendering. However, the challenger also fixes the `tmux send-keys` \u2192 `tmux respawn-pane -k` issue in both wavemill-orchestrator.sh and wavemill-mill.sh, which directly resolves problem #3 (shell commands/prompts appearing in panes instead of the dashboard) and problem #4 (random shell activity in top-left). The primary PR leaves the pane launch mechanism unchanged, so shell prompts and command strings would still briefly flash before the actu\"\n  }\n]\nChanged files:\n[]\nLinked chain ids:\n[\"evidence-chain-comment_to_commit-218a0e806a8214b5\"]\nSource graph evidence:\nSource evidence repo graph summary\nRepo: timogilvie/wavemill\nGraph label: source_backed_multi_signal_graph\nNodes: 10\nEdges: 12\nNode types: {\"cooccurrence_profile\": 1, \"github_repo_summary\": 1, \"helicopter_repo_view\": 4, \"repo\": 1, \"source_artifact\": 2, \"source_bundle\": 1}\nEdge types: {\"artifact_needs_claim_verification\": 1, \"artifact_supports_verification\": 1, \"repo_has_cooccurrence_profile\": 1, \"repo_has_github_evidence_summary\": 1, \"repo_has_graphs_helicopter_view\": 2, \"repo_has_schemas_helicopter_view\": 2, \"repo_has_source_artifact\": 2, \"repo_has_source_bundle\": 1, \"source_bundle_uses_cooccur\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/timogilvie/wavemill", "source_id": "comment-chain-pattern-bad_chains-dae9649a2c1d3a1a", "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": "timogilvie/wavemill", "source_dataset": "comment_chain_patterns/bad_chains", "training_usage": "negative_or_unresolved"}}}, {"ruleId": "foundry_bad_chain", "level": "error", "message": {"text": "Foundry mined bad chains: timogilvie/wavemill"}, "properties": {"repobilityId": 391432, "scanner": "foundry_dataset", "fingerprint": "75e75dcd54990797eed7d3b6ca35ca6de3dccaef9e32d1a99206e6b58f17228d", "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": "timogilvie/wavemill#238", "human_labels": ["agent_instruction_gap", "human_feedback_general"], "issue_number": "238", "thread_label": "thread_has_human_issue_without_fix_context", "outcome_label": "not_resolved_or_not_observed", "source_backed": true, "max_confidence": 0.0, "repo_full_name": "timogilvie/wavemill", "training_usage": "negative_or_unresolved", "confidence_tier": "unresolved", "source_chain_id": "evidence-chain-issue_chain-57654d91a4c6666e", "helicopter_views": {"graphs": 2, "schemas": 2}, "artifact_families": {"docs": 1, "schemas": 1}, "source_chain_kind": "issue_chain", "changed_file_count": 0, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {}, "linked_commit_count": 0, "helicopter_view_count": 4, "source_artifact_count": 2, "classification_reasons": ["source_graph_has_real_artifacts", "source_graph_has_verification_artifacts", "repo_has_isolated_helicopter_views", "link_quality_unresolved"], "linked_ci_commit_count": 0, "verification_artifact_count": 1, "design_schema_api_artifact_count": 1}, "text": "Comment chain pattern product: bad_chains\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#238\nOutcome: not_resolved_or_not_observed\nThread label: thread_has_human_issue_without_fix_context\nSource graph label: source_backed_multi_signal_graph\nReasons: source_graph_has_real_artifacts, source_graph_has_verification_artifacts, repo_has_isolated_helicopter_views, link_quality_unresolved\nChain evidence:\nIssue/PR evidence chain: timogilvie/wavemill#238\nRepo: timogilvie/wavemill\nThread label: thread_has_human_issue_without_fix_context\nOutcome: not_resolved_or_not_observed\nComment count: 2\nLinked commit count: 0\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 0\nLabels: {'agent_instruction_gap': 1, 'human_feedback_general': 1}\nPolarities: {'bad': 1, 'neutral': 1}\nChanged file labels: {}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-3f5c1021e8840bb1\",\n    \"kind\": \"issue_comment\",\n    \"label\": \"agent_instruction_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/timogilvie/wavemill/pull/238#issuecomment-4217048479\",\n    \"text\": \"GitHub feedback: agent_instruction_gap\\nPolarity: bad\\nKind: issue_comment\\nRepo: timogilvie/wavemill\\nAuthor: timogilvie (User)\\nURL: https://github.com/timogilvie/wavemill/pull/238#issuecomment-4217048479\\nTitle: \\nBody:\\nChallenge comparison for `HOK-1201`\\n\\nPrimary used claude-opus-4-6 (planner) + gpt-5.4 (coder) + claude-sonnet-4-5-20250929 (reviewer) vs Challenger used claude-opus-4-6 (planner) + gpt-5.3-codex (coder) + claude-sonnet-4-5-20250929 (reviewer)\\nChallenge type: coder-only\\n\\nRecommended winner: challenger (gpt-5.3-codex)\\nOther PR: https://github.com/timogilvie/wavemill/pull/239\\n\\nThe challenger addresses more root causes from the bug report. Both PRs fix the `local` declaration error in wavemill-status.sh and implement in-place task list rendering. However, the challenger also fixes the `tmux send-keys` \u2192 `tmux respawn-pane -k` issue in both wavemill-orchestrator.sh and wavemill-mill.sh, which directly resolves problem #3 (shell commands/prompts appearing in panes instead of the dashboard) and problem #4 (random shell activity in top-left). The primary PR leaves the pane launch mechanism unchanged, so shell prompts and command strings would still briefly flash before the actu\"\n  },\n  {\n    \"id\": \"github-feedback-comment-ff9fd88c2cd29e72\",\n    \"kind\": \"issue_comment\",\n    \"label\": \"human_feedback_general\",\n    \"polarity\": \"neutral\",\n    \"url\": \"https://github.com/timogilvie/wavemill/pull/238#issuecomment-4217056967\",\n    \"text\": \"GitHub feedback: human_feedback_general\\nPolarity: neutral\\nKind: issue_comment\\nRepo: timogilvie/wavemill\\nAuthor: timogilvie (User)\\nURL: https://github.com/timogilvie/wavemill/pull/238#issuecomment-4217056967\\nTitle: \\nBody:\\nlost challenge\"\n  }\n]\nChanged files:\n[]\nLinked chain ids:\n[\"evidence-chain-comment_to_commit-8473188841fa21da\", \"evidence-chain-comment_to_commit-eca1abaa3912c6ee\"]\nSource graph evidence:\nSour\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/timogilvie/wavemill", "source_id": "comment-chain-pattern-bad_chains-dd037dab345677ff", "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": "timogilvie/wavemill", "source_dataset": "comment_chain_patterns/bad_chains", "training_usage": "negative_or_unresolved"}}}, {"ruleId": "foundry_bad_chain", "level": "error", "message": {"text": "Foundry mined bad chains: timogilvie/wavemill"}, "properties": {"repobilityId": 391431, "scanner": "foundry_dataset", "fingerprint": "b7b1e387641b17d8f35e79dacf8d97c520ed59252e9b057a5f5cbd2e793b0978", "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": "timogilvie/wavemill#219", "human_labels": ["agent_instruction_gap"], "issue_number": "219", "thread_label": "thread_has_human_issue_without_fix_context", "outcome_label": "not_resolved_or_not_observed", "source_backed": true, "max_confidence": 0.0, "repo_full_name": "timogilvie/wavemill", "training_usage": "negative_or_unresolved", "confidence_tier": "unresolved", "source_chain_id": "evidence-chain-issue_chain-893bef4bb2a88344", "helicopter_views": {"graphs": 2, "schemas": 2}, "artifact_families": {"docs": 1, "schemas": 1}, "source_chain_kind": "issue_chain", "changed_file_count": 0, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {}, "linked_commit_count": 0, "helicopter_view_count": 4, "source_artifact_count": 2, "classification_reasons": ["source_graph_has_real_artifacts", "source_graph_has_verification_artifacts", "repo_has_isolated_helicopter_views", "link_quality_unresolved"], "linked_ci_commit_count": 0, "verification_artifact_count": 1, "design_schema_api_artifact_count": 1}, "text": "Comment chain pattern product: bad_chains\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#219\nOutcome: not_resolved_or_not_observed\nThread label: thread_has_human_issue_without_fix_context\nSource graph label: source_backed_multi_signal_graph\nReasons: source_graph_has_real_artifacts, source_graph_has_verification_artifacts, repo_has_isolated_helicopter_views, link_quality_unresolved\nChain evidence:\nIssue/PR evidence chain: timogilvie/wavemill#219\nRepo: timogilvie/wavemill\nThread label: thread_has_human_issue_without_fix_context\nOutcome: not_resolved_or_not_observed\nComment count: 2\nLinked commit count: 0\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 0\nLabels: {'agent_instruction_gap': 2}\nPolarities: {'bad': 2}\nChanged file labels: {}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-7ad109c8065ed44f\",\n    \"kind\": \"pull_request_body\",\n    \"label\": \"agent_instruction_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/timogilvie/wavemill/pull/219\",\n    \"text\": \"GitHub feedback: agent_instruction_gap\\nPolarity: bad\\nKind: pull_request_body\\nRepo: timogilvie/wavemill\\nAuthor: timogilvie (User)\\nURL: https://github.com/timogilvie/wavemill/pull/219\\nTitle: HOK-1177: Refactor phased orchestrator to controller-owned stage state\\nBody:\\n## Summary\\n\\n- Replace marker-file-based phase transitions with structured controller-owned stage result files (`.planning-result.json`, `.coding-result.json`, etc.) that record status, agent, model, and timestamps\\n- Write canonical `.phase-config.json` at routing completion with resolved per-stage configuration (model, agent, depth/mode), eliminating re-derivation at each transition\\n- Model `awaiting_user` as an explicit planning stage status \u2014 the orchestrator detects when a plan exists but hasn't been approved and records this state\\n- Make agent lifecycle instructions agent-agnostic \u2014 prompts no longer tell agents to run `/exit` or manage session termination; the orchestrator handles this via pane state detection\\n\\n## Changes\\n\\n- **`shared/lib/wavemill-mill.sh`** \u2014 Added `write_stage_result()`, `read_stage_result()`, `read_stage_status()`, `check_stage_complete()`, `check_stage_awaiting_user()`, `check_stage_aborted()`, \"\n  },\n  {\n    \"id\": \"github-feedback-comment-06aa2428ef6679d4\",\n    \"kind\": \"issue_comment\",\n    \"label\": \"agent_instruction_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/timogilvie/wavemill/pull/219#issuecomment-4214380449\",\n    \"text\": \"GitHub feedback: agent_instruction_gap\\nPolarity: bad\\nKind: issue_comment\\nRepo: timogilvie/wavemill\\nAuthor: timogilvie (User)\\nURL: https://github.com/timogilvie/wavemill/pull/219#issuecomment-4214380449\\nTitle: \\nBody:\\nChallenge comparison for `HOK-1177`\\n\\nPrimary used claude-opus-4-6 (planner) + claude-sonnet-4-5-20250929 (coder) + claude-sonnet-4-5-20250929 (reviewer) vs Challenger used claude-opus-4-6 (planner) + claude-haiku-4-5-20251001 (coder) + claude-sonnet-4-5-20250929\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/timogilvie/wavemill", "source_id": "comment-chain-pattern-bad_chains-d990f5f38a9d2c64", "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": "timogilvie/wavemill", "source_dataset": "comment_chain_patterns/bad_chains", "training_usage": "negative_or_unresolved"}}}, {"ruleId": "foundry_bad_chain", "level": "error", "message": {"text": "Foundry mined bad chains: timogilvie/wavemill"}, "properties": {"repobilityId": 391430, "scanner": "foundry_dataset", "fingerprint": "37f4be7247ec0bf8a08d2f7c1bbe850db87bb241d9dab7061334db0c84c215ef", "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": "timogilvie/wavemill#216", "human_labels": ["agent_instruction_gap", "human_feedback_general"], "issue_number": "216", "thread_label": "thread_has_human_issue_without_fix_context", "outcome_label": "not_resolved_or_not_observed", "source_backed": true, "max_confidence": 0.0, "repo_full_name": "timogilvie/wavemill", "training_usage": "negative_or_unresolved", "confidence_tier": "unresolved", "source_chain_id": "evidence-chain-issue_chain-6233590e2e130c05", "helicopter_views": {"graphs": 2, "schemas": 2}, "artifact_families": {"docs": 1, "schemas": 1}, "source_chain_kind": "issue_chain", "changed_file_count": 0, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {}, "linked_commit_count": 0, "helicopter_view_count": 4, "source_artifact_count": 2, "classification_reasons": ["source_graph_has_real_artifacts", "source_graph_has_verification_artifacts", "repo_has_isolated_helicopter_views", "link_quality_unresolved"], "linked_ci_commit_count": 0, "verification_artifact_count": 1, "design_schema_api_artifact_count": 1}, "text": "Comment chain pattern product: bad_chains\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#216\nOutcome: not_resolved_or_not_observed\nThread label: thread_has_human_issue_without_fix_context\nSource graph label: source_backed_multi_signal_graph\nReasons: source_graph_has_real_artifacts, source_graph_has_verification_artifacts, repo_has_isolated_helicopter_views, link_quality_unresolved\nChain evidence:\nIssue/PR evidence chain: timogilvie/wavemill#216\nRepo: timogilvie/wavemill\nThread label: thread_has_human_issue_without_fix_context\nOutcome: not_resolved_or_not_observed\nComment count: 2\nLinked commit count: 0\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 0\nLabels: {'agent_instruction_gap': 1, 'human_feedback_general': 1}\nPolarities: {'bad': 1, 'neutral': 1}\nChanged file labels: {}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-78c8ad6f2d914028\",\n    \"kind\": \"issue_comment\",\n    \"label\": \"agent_instruction_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/timogilvie/wavemill/pull/216#issuecomment-4209974908\",\n    \"text\": \"GitHub feedback: agent_instruction_gap\\nPolarity: bad\\nKind: issue_comment\\nRepo: timogilvie/wavemill\\nAuthor: timogilvie (User)\\nURL: https://github.com/timogilvie/wavemill/pull/216#issuecomment-4209974908\\nTitle: \\nBody:\\nChallenge comparison for `HOK-1184`\\n\\nRecommended winner: challenger (gpt-5.4)\\nOther PR: https://github.com/timogilvie/wavemill/pull/216\\n\\nThe challenger implementation is more robust: it uses a proper while loop for re-prompting (allowing multiple d/m presses without nesting), reads subsystem data from existing context specs via context-tool.ts helpers rather than re-running full detectSubsystems(), adds comprehensive shell tests in check-shell.sh and unit tests for the tool, and handles the m\u2192d interaction correctly. The primary uses a linear flow where d can only be pressed once (no loop), extracts display into functions but doesn't loop back properly for repeated interactions, and uses detectSubsystems() which does heuristic analysis rather than reading existing specs.\"\n  },\n  {\n    \"id\": \"github-feedback-comment-33341f7b67baacbf\",\n    \"kind\": \"issue_comment\",\n    \"label\": \"human_feedback_general\",\n    \"polarity\": \"neutral\",\n    \"url\": \"https://github.com/timogilvie/wavemill/pull/216#issuecomment-4209990477\",\n    \"text\": \"GitHub feedback: human_feedback_general\\nPolarity: neutral\\nKind: issue_comment\\nRepo: timogilvie/wavemill\\nAuthor: timogilvie (User)\\nURL: https://github.com/timogilvie/wavemill/pull/216#issuecomment-4209990477\\nTitle: \\nBody:\\nClosing losing challenge\"\n  }\n]\nChanged files:\n[]\nLinked chain ids:\n[\"evidence-chain-comment_to_commit-1e4b18412f8f568b\", \"evidence-chain-comment_to_commit-d4ca14ec91758175\"]\nSource graph evidence:\nSource evidence repo graph summary\nRepo: timogilvie/wavemill\nGraph label: source_backed_multi_signal_graph\nNodes: 10\nEdges: 12\nNode types: {\"cooccurrence_profile\": 1, \"github_repo_summary\": 1, \"helico\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/timogilvie/wavemill", "source_id": "comment-chain-pattern-bad_chains-b351c4f9c746ee11", "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": "timogilvie/wavemill", "source_dataset": "comment_chain_patterns/bad_chains", "training_usage": "negative_or_unresolved"}}}, {"ruleId": "foundry_bad_chain", "level": "error", "message": {"text": "Foundry mined bad chains: timogilvie/wavemill"}, "properties": {"repobilityId": 391429, "scanner": "foundry_dataset", "fingerprint": "075703baf4026cec4cf83cbf3f70783d162e4bb9c1745d5eb75ff1199c98eee5", "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": "timogilvie/wavemill#172", "human_labels": ["agent_instruction_gap", "human_feedback_general", "test_ci_gap"], "issue_number": "172", "thread_label": "thread_has_human_issue_without_fix_context", "outcome_label": "not_resolved_or_not_observed", "source_backed": true, "max_confidence": 0.0, "repo_full_name": "timogilvie/wavemill", "training_usage": "negative_or_unresolved", "confidence_tier": "unresolved", "source_chain_id": "evidence-chain-issue_chain-0c3b1025556477d5", "helicopter_views": {"graphs": 2, "schemas": 2}, "artifact_families": {"docs": 1, "schemas": 1}, "source_chain_kind": "issue_chain", "changed_file_count": 0, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {}, "linked_commit_count": 0, "helicopter_view_count": 4, "source_artifact_count": 2, "classification_reasons": ["source_graph_has_real_artifacts", "source_graph_has_verification_artifacts", "repo_has_isolated_helicopter_views", "link_quality_unresolved", "high_risk_human_feedback_label"], "linked_ci_commit_count": 0, "verification_artifact_count": 1, "design_schema_api_artifact_count": 1}, "text": "Comment chain pattern product: bad_chains\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#172\nOutcome: not_resolved_or_not_observed\nThread label: thread_has_human_issue_without_fix_context\nSource graph label: source_backed_multi_signal_graph\nReasons: source_graph_has_real_artifacts, source_graph_has_verification_artifacts, repo_has_isolated_helicopter_views, link_quality_unresolved, high_risk_human_feedback_label\nChain evidence:\nIssue/PR evidence chain: timogilvie/wavemill#172\nRepo: timogilvie/wavemill\nThread label: thread_has_human_issue_without_fix_context\nOutcome: not_resolved_or_not_observed\nComment count: 3\nLinked commit count: 0\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 0\nLabels: {'agent_instruction_gap': 1, 'human_feedback_general': 1, 'test_ci_gap': 1}\nPolarities: {'bad': 2, 'neutral': 1}\nChanged file labels: {}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-d018c7b7746ec53d\",\n    \"kind\": \"pull_request_body\",\n    \"label\": \"agent_instruction_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/timogilvie/wavemill/pull/172\",\n    \"text\": \"GitHub feedback: agent_instruction_gap\\nPolarity: bad\\nKind: pull_request_body\\nRepo: timogilvie/wavemill\\nAuthor: timogilvie (User)\\nURL: https://github.com/timogilvie/wavemill/pull/172\\nTitle: HOK-1100__challenger: Consolidate JSONL read/write utilities\\nBody:\\n## Summary\\n\\n- Extracted `appendJsonlRecord()` to `shared/lib/jsonl-utils.ts` to eliminate duplicate atomic append logic across 3 files\\n- Consolidated inline JSONL read implementations by replacing them with the existing `readJsonlFile()` utility in 4 files\\n- Net reduction of 23 lines while improving code reuse and maintainability\\n- Added comprehensive tests for the new `appendJsonlRecord()` function\\n\\n## Changes\\n\\n**Core utilities** (`shared/lib/jsonl-utils.ts`):\\n- Added `appendJsonlRecord<T>(filePath: string, record: T)` with atomic write-via-temp-file pattern\\n- Enhanced `readJsonlFile()` JSDoc documentation\\n- Added tests for atomic append with concurrent write simulation\\n\\n**Refactored to use shared append**:\\n- `shared/lib/eval-persistence.ts` - Replaced `appendEvalRecord()` implementation\\n- `shared/lib/prompt-registry.ts` - Replaced `appendToRegistry()` implementation  \\n- `shared/lib/challenge-comparison.ts` - Replaced inline appe\"\n  },\n  {\n    \"id\": \"github-feedback-comment-b6db628cc4ffff51\",\n    \"kind\": \"issue_comment\",\n    \"label\": \"human_feedback_general\",\n    \"polarity\": \"neutral\",\n    \"url\": \"https://github.com/timogilvie/wavemill/pull/172#issuecomment-4187209257\",\n    \"text\": \"GitHub feedback: human_feedback_general\\nPolarity: neutral\\nKind: issue_comment\\nRepo: timogilvie/wavemill\\nAuthor: timogilvie (User)\\nURL: https://github.com/timogilvie/wavemill/pull/172#issuecomment-4187209257\\nTitle: \\nBody:\\nFixes HOK-1100__challenger\"\n  },\n  {\n    \"id\": \"github-feedback-comment-f8b1ed5a89fccca6\",\n    \"kind\": \"issue_comment\",\n    \"label\": \"test_ci_gap\",\n    \"\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/timogilvie/wavemill", "source_id": "comment-chain-pattern-bad_chains-0ea29e96c9f3bd84", "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": "timogilvie/wavemill", "source_dataset": "comment_chain_patterns/bad_chains", "training_usage": "negative_or_unresolved"}}}, {"ruleId": "foundry_bad_chain", "level": "error", "message": {"text": "Foundry mined bad chains: timogilvie/wavemill"}, "properties": {"repobilityId": 391428, "scanner": "foundry_dataset", "fingerprint": "77f4e6e7b90d062a42dc4e63e469131910d9100a3461900393b47c1cab6a46ca", "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": "timogilvie/wavemill#149", "human_labels": ["agent_instruction_gap"], "issue_number": "149", "thread_label": "thread_has_human_issue_without_fix_context", "outcome_label": "not_resolved_or_not_observed", "source_backed": true, "max_confidence": 0.0, "repo_full_name": "timogilvie/wavemill", "training_usage": "negative_or_unresolved", "confidence_tier": "unresolved", "source_chain_id": "evidence-chain-issue_chain-432a43a6346635ac", "helicopter_views": {"graphs": 2, "schemas": 2}, "artifact_families": {"docs": 1, "schemas": 1}, "source_chain_kind": "issue_chain", "changed_file_count": 0, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {}, "linked_commit_count": 0, "helicopter_view_count": 4, "source_artifact_count": 2, "classification_reasons": ["source_graph_has_real_artifacts", "source_graph_has_verification_artifacts", "repo_has_isolated_helicopter_views", "link_quality_unresolved"], "linked_ci_commit_count": 0, "verification_artifact_count": 1, "design_schema_api_artifact_count": 1}, "text": "Comment chain pattern product: bad_chains\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#149\nOutcome: not_resolved_or_not_observed\nThread label: thread_has_human_issue_without_fix_context\nSource graph label: source_backed_multi_signal_graph\nReasons: source_graph_has_real_artifacts, source_graph_has_verification_artifacts, repo_has_isolated_helicopter_views, link_quality_unresolved\nChain evidence:\nIssue/PR evidence chain: timogilvie/wavemill#149\nRepo: timogilvie/wavemill\nThread label: thread_has_human_issue_without_fix_context\nOutcome: not_resolved_or_not_observed\nComment count: 1\nLinked commit count: 0\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 0\nLabels: {'agent_instruction_gap': 1}\nPolarities: {'bad': 1}\nChanged file labels: {}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-ae1df5c5e60ff785\",\n    \"kind\": \"pull_request_body\",\n    \"label\": \"agent_instruction_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/timogilvie/wavemill/pull/149\",\n    \"text\": \"GitHub feedback: agent_instruction_gap\\nPolarity: bad\\nKind: pull_request_body\\nRepo: timogilvie/wavemill\\nAuthor: timogilvie (User)\\nURL: https://github.com/timogilvie/wavemill/pull/149\\nTitle: HOK-1009: Include wavemill and blue-horseshoe repos in eval aggregation\\nBody:\\n## Summary\\n\\n- Fixes missing eval data from wavemill and blue-horseshoe repositories\\n- Adds three additional Hokusai repos (gtm-backend, hokusai-infrastructure, blue-horseshoe) to eval aggregation config\\n- Modifies aggregation logic to always include the current repository, ensuring wavemill's own evals are captured\\n- Resolves issue where aggregated output was missing data from key repositories\\n\\n## Changes\\n\\n**Configuration**\\n- `.wavemill-config.json`: Added gtm-backend, hokusai-infrastructure, and blue-horseshoe to `eval.aggregation.repos` list\\n\\n**Code**\\n- `tools/aggregate-evals.ts`: Modified to always include current repo in `resolvedRepos` array, preventing omission when not explicitly configured\\n\\n## Test plan\\n\\n- Verified that running `wavemill eval aggregate` now includes all expected repositories\\n- Confirmed that the aggregation output includes eval records from the wavemill repo itself\\n- Tested that the current repo\"\n  }\n]\nChanged files:\n[]\nLinked chain ids:\n[\"evidence-chain-comment_to_commit-e9736c4ca84e333c\"]\nSource graph evidence:\nSource evidence repo graph summary\nRepo: timogilvie/wavemill\nGraph label: source_backed_multi_signal_graph\nNodes: 10\nEdges: 12\nNode types: {\"cooccurrence_profile\": 1, \"github_repo_summary\": 1, \"helicopter_repo_view\": 4, \"repo\": 1, \"source_artifact\": 2, \"source_bundle\": 1}\nEdge types: {\"artifact_needs_claim_verification\": 1, \"artifact_supports_verification\": 1, \"repo_has_cooccurrence_profile\": 1, \"repo_has_github_evidence_summary\": 1, \"repo_has_graphs_helicopter_view\": 2, \"repo_has_schemas_helicopter_view\": 2, \"repo_has_source_artifact\": 2, \"repo_has_source_bundle\": 1, \"source_bundle_uses_cooccurrence_pro\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/timogilvie/wavemill", "source_id": "comment-chain-pattern-bad_chains-aefccef1b14adfae", "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": "timogilvie/wavemill", "source_dataset": "comment_chain_patterns/bad_chains", "training_usage": "negative_or_unresolved"}}}, {"ruleId": "foundry_bad_chain", "level": "error", "message": {"text": "Foundry mined bad chains: timogilvie/wavemill"}, "properties": {"repobilityId": 391427, "scanner": "foundry_dataset", "fingerprint": "a26d64ff5fc9cb7ebeb228e9bc9d2876f33ad0d0a52e2d097d4b7a9e2bcd8945", "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": "timogilvie/wavemill#145", "human_labels": ["mock_placeholder"], "issue_number": "145", "thread_label": "thread_has_human_issue_without_fix_context", "outcome_label": "not_resolved_or_not_observed", "source_backed": true, "max_confidence": 0.0, "repo_full_name": "timogilvie/wavemill", "training_usage": "negative_or_unresolved", "confidence_tier": "unresolved", "source_chain_id": "evidence-chain-issue_chain-b36be44c566b7f69", "helicopter_views": {"graphs": 2, "schemas": 2}, "artifact_families": {"docs": 1, "schemas": 1}, "source_chain_kind": "issue_chain", "changed_file_count": 0, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {}, "linked_commit_count": 0, "helicopter_view_count": 4, "source_artifact_count": 2, "classification_reasons": ["source_graph_has_real_artifacts", "source_graph_has_verification_artifacts", "repo_has_isolated_helicopter_views", "link_quality_unresolved", "high_risk_human_feedback_label"], "linked_ci_commit_count": 0, "verification_artifact_count": 1, "design_schema_api_artifact_count": 1}, "text": "Comment chain pattern product: bad_chains\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#145\nOutcome: not_resolved_or_not_observed\nThread label: thread_has_human_issue_without_fix_context\nSource graph label: source_backed_multi_signal_graph\nReasons: source_graph_has_real_artifacts, source_graph_has_verification_artifacts, repo_has_isolated_helicopter_views, link_quality_unresolved, high_risk_human_feedback_label\nChain evidence:\nIssue/PR evidence chain: timogilvie/wavemill#145\nRepo: timogilvie/wavemill\nThread label: thread_has_human_issue_without_fix_context\nOutcome: not_resolved_or_not_observed\nComment count: 1\nLinked commit count: 0\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 0\nLabels: {'mock_placeholder': 1}\nPolarities: {'bad': 1}\nChanged file labels: {}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-9ad43d56ac69bdae\",\n    \"kind\": \"pull_request_body\",\n    \"label\": \"mock_placeholder\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/timogilvie/wavemill/pull/145\",\n    \"text\": \"GitHub feedback: mock_placeholder\\nPolarity: bad\\nKind: pull_request_body\\nRepo: timogilvie/wavemill\\nAuthor: timogilvie (User)\\nURL: https://github.com/timogilvie/wavemill/pull/145\\nTitle: refactor: replace subprocess spawn with direct autoLabelIssue import\\nBody:\\n## Summary\\nRemove the subprocess anti-pattern from `expand-issue.ts` where it spawned `auto-label-issue.ts` as a child process via `npx tsx`. Now directly imports and calls `autoLabelIssue()` from `shared/lib/issue-labeler.ts`.\\n\\n## Benefits\\n- Eliminates subprocess overhead and complexity\\n- Better error propagation (direct Promise rejection)\\n- Easier to test (no mocking subprocess needed)\\n- Follows \\\"Thin Tools Pattern\\\" from CLAUDE.md\\n\\n## Changes\\n- Remove: `spawn` import from `node:child_process`\\n- Add: `autoLabelIssue` import from `../shared/lib/issue-labeler.ts`\\n- Replace: 14-line subprocess spawn/promise wrapper with single await call\\n- Preserve: Error handling (try-catch block remains)\\n\\n## Test Plan\\n- [x] TypeScript syntax check passed\\n- [x] Imports verified and tested\\n- [x] Function call verified\\n- [x] Error handling preserved\\n- [x] Code builds successfully\\n\\n\ud83e\udd16 Generated with [Claude Code](https://claude.com/claude-code)\"\n  }\n]\nChanged files:\n[]\nLinked chain ids:\n[\"evidence-chain-comment_to_commit-6e328e94aa59bed7\"]\nSource graph evidence:\nSource evidence repo graph summary\nRepo: timogilvie/wavemill\nGraph label: source_backed_multi_signal_graph\nNodes: 10\nEdges: 12\nNode types: {\"cooccurrence_profile\": 1, \"github_repo_summary\": 1, \"helicopter_repo_view\": 4, \"repo\": 1, \"source_artifact\": 2, \"source_bundle\": 1}\nEdge types: {\"artifact_needs_claim_verification\": 1, \"artifact_supports_verification\": 1, \"repo_has_cooccurrence_profile\": 1, \"repo_has_github_evidence_summary\": 1, \"repo_has_graphs_helicopter_view\": 2, \"repo_has_schemas_helicopter_view\": 2, \"repo_has_source_artifact\": 2, \"repo_has_source_bundle\": 1, \"source_bundle\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/timogilvie/wavemill", "source_id": "comment-chain-pattern-bad_chains-5e55d764cad2562b", "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": "timogilvie/wavemill", "source_dataset": "comment_chain_patterns/bad_chains", "training_usage": "negative_or_unresolved"}}}, {"ruleId": "foundry_bad_chain", "level": "error", "message": {"text": "Foundry mined bad chains: timogilvie/wavemill"}, "properties": {"repobilityId": 391426, "scanner": "foundry_dataset", "fingerprint": "b623aca0abb0dd4b02597236f12138063099d88f5199ad7cf2383780a03bdd68", "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": "timogilvie/wavemill#144", "human_labels": ["agent_instruction_gap"], "issue_number": "144", "thread_label": "thread_has_human_issue_without_fix_context", "outcome_label": "not_resolved_or_not_observed", "source_backed": true, "max_confidence": 0.0, "repo_full_name": "timogilvie/wavemill", "training_usage": "negative_or_unresolved", "confidence_tier": "unresolved", "source_chain_id": "evidence-chain-issue_chain-25519ece3f05660b", "helicopter_views": {"graphs": 2, "schemas": 2}, "artifact_families": {"docs": 1, "schemas": 1}, "source_chain_kind": "issue_chain", "changed_file_count": 0, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {}, "linked_commit_count": 0, "helicopter_view_count": 4, "source_artifact_count": 2, "classification_reasons": ["source_graph_has_real_artifacts", "source_graph_has_verification_artifacts", "repo_has_isolated_helicopter_views", "link_quality_unresolved"], "linked_ci_commit_count": 0, "verification_artifact_count": 1, "design_schema_api_artifact_count": 1}, "text": "Comment chain pattern product: bad_chains\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#144\nOutcome: not_resolved_or_not_observed\nThread label: thread_has_human_issue_without_fix_context\nSource graph label: source_backed_multi_signal_graph\nReasons: source_graph_has_real_artifacts, source_graph_has_verification_artifacts, repo_has_isolated_helicopter_views, link_quality_unresolved\nChain evidence:\nIssue/PR evidence chain: timogilvie/wavemill#144\nRepo: timogilvie/wavemill\nThread label: thread_has_human_issue_without_fix_context\nOutcome: not_resolved_or_not_observed\nComment count: 1\nLinked commit count: 0\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 0\nLabels: {'agent_instruction_gap': 1}\nPolarities: {'bad': 1}\nChanged file labels: {}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-583e27bb13403b78\",\n    \"kind\": \"pull_request_body\",\n    \"label\": \"agent_instruction_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/timogilvie/wavemill/pull/144\",\n    \"text\": \"GitHub feedback: agent_instruction_gap\\nPolarity: bad\\nKind: pull_request_body\\nRepo: timogilvie/wavemill\\nAuthor: timogilvie (User)\\nURL: https://github.com/timogilvie/wavemill/pull/144\\nTitle: HOK-990: Standardize tool boilerplate\\nBody:\\n## Summary\\n\\n- Auto-inject `--help`/`-h` option in `runTool()` so individual tools no longer need to declare it (removed from 40 tools)\\n- Migrate 4 tools that bypassed `runTool()` (`sync-config`, `check-config-version`, `check-review-setup`, `backfill-pricing-snapshot`) to use the standard runner\\n- Add `resolveRepoDir()` helper to `tool-runner.ts` and adopt it in 4 tools that repeated the `positional[0] || process.cwd()` pattern\\n\\n## Changes\\n\\n- `shared/lib/tool-runner.ts` \u2014 auto-inject help option before parsing; export `resolveRepoDir()` helper\\n- `tools/sync-config.ts` \u2014 rewritten to use `runTool()`\\n- `tools/check-config-version.ts` \u2014 rewritten to use `runTool()`\\n- `tools/check-review-setup.ts` \u2014 rewritten to use `runTool()`\\n- `tools/backfill-pricing-snapshot.ts` \u2014 rewritten to use `runTool()`\\n- 36 other `tools/*.ts` files \u2014 removed manual `help` option declaration\\n- `tools/{init-project-context,review-stats,review-changes,gather-review-context}.ts` \u2014 us\"\n  }\n]\nChanged files:\n[]\nLinked chain ids:\n[\"evidence-chain-comment_to_commit-d867f6dada041491\"]\nSource graph evidence:\nSource evidence repo graph summary\nRepo: timogilvie/wavemill\nGraph label: source_backed_multi_signal_graph\nNodes: 10\nEdges: 12\nNode types: {\"cooccurrence_profile\": 1, \"github_repo_summary\": 1, \"helicopter_repo_view\": 4, \"repo\": 1, \"source_artifact\": 2, \"source_bundle\": 1}\nEdge types: {\"artifact_needs_claim_verification\": 1, \"artifact_supports_verification\": 1, \"repo_has_cooccurrence_profile\": 1, \"repo_has_github_evidence_summary\": 1, \"repo_has_graphs_helicopter_view\": 2, \"repo_has_schemas_helicopter_view\": 2, \"repo_has_source_artifact\": 2, \"repo_has_source_bundle\": 1, \"source_bundle_uses_cooccurrence_profile\"\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/timogilvie/wavemill", "source_id": "comment-chain-pattern-bad_chains-c263d1ba0643dbd2", "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": "timogilvie/wavemill", "source_dataset": "comment_chain_patterns/bad_chains", "training_usage": "negative_or_unresolved"}}}, {"ruleId": "foundry_bad_chain", "level": "error", "message": {"text": "Foundry mined bad chains: timogilvie/wavemill"}, "properties": {"repobilityId": 391425, "scanner": "foundry_dataset", "fingerprint": "dbb327d6fd71d338f9f0fd0cd58059aeb3306915e981f95460eba37d4dad6d74", "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": "timogilvie/wavemill#135", "human_labels": ["agent_instruction_gap"], "issue_number": "135", "thread_label": "thread_has_human_issue_without_fix_context", "outcome_label": "not_resolved_or_not_observed", "source_backed": true, "max_confidence": 0.0, "repo_full_name": "timogilvie/wavemill", "training_usage": "negative_or_unresolved", "confidence_tier": "unresolved", "source_chain_id": "evidence-chain-issue_chain-c5d6c8e24f59708d", "helicopter_views": {"graphs": 2, "schemas": 2}, "artifact_families": {"docs": 1, "schemas": 1}, "source_chain_kind": "issue_chain", "changed_file_count": 0, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {}, "linked_commit_count": 0, "helicopter_view_count": 4, "source_artifact_count": 2, "classification_reasons": ["source_graph_has_real_artifacts", "source_graph_has_verification_artifacts", "repo_has_isolated_helicopter_views", "link_quality_unresolved"], "linked_ci_commit_count": 0, "verification_artifact_count": 1, "design_schema_api_artifact_count": 1}, "text": "Comment chain pattern product: bad_chains\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#135\nOutcome: not_resolved_or_not_observed\nThread label: thread_has_human_issue_without_fix_context\nSource graph label: source_backed_multi_signal_graph\nReasons: source_graph_has_real_artifacts, source_graph_has_verification_artifacts, repo_has_isolated_helicopter_views, link_quality_unresolved\nChain evidence:\nIssue/PR evidence chain: timogilvie/wavemill#135\nRepo: timogilvie/wavemill\nThread label: thread_has_human_issue_without_fix_context\nOutcome: not_resolved_or_not_observed\nComment count: 1\nLinked commit count: 0\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 0\nLabels: {'agent_instruction_gap': 1}\nPolarities: {'bad': 1}\nChanged file labels: {}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-41ab47a24890bc12\",\n    \"kind\": \"pull_request_body\",\n    \"label\": \"agent_instruction_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/timogilvie/wavemill/pull/135\",\n    \"text\": \"GitHub feedback: agent_instruction_gap\\nPolarity: bad\\nKind: pull_request_body\\nRepo: timogilvie/wavemill\\nAuthor: timogilvie (User)\\nURL: https://github.com/timogilvie/wavemill/pull/135\\nTitle: HOK-986: Parallelize analysis gathering\\nBody:\\n## Summary\\n- Parallelize independent eval analysis steps in the eval orchestrator and post-completion hook to reduce serialized work.\\n- Preserve task-context behavior by keeping it dependent on difficulty-derived LOC and file metrics.\\n- Add an async review-context gathering path so task packet, plan, and design context discovery run concurrently.\\n- References HOK-986.\\n\\n## Changes\\n- shared/lib/eval-orchestrator.ts\\n- shared/lib/post-completion-hook.ts\\n- shared/lib/review-context-gatherer.ts\\n- shared/lib/review-runner.ts\\n- tools/gather-review-context.ts\\n\\n## Test plan\\n- node --import \\\"$(npm root -g)/tsx/dist/loader.mjs\\\" shared/lib/difficulty-analyzer.test.ts\\n- node --import \\\"$(npm root -g)/tsx/dist/loader.mjs\\\" shared/lib/task-context-analyzer.test.ts\\n- node --import \\\"$(npm root -g)/tsx/dist/loader.mjs\\\" shared/lib/repo-context-analyzer.test.ts\\n- node --import \\\"$(npm root -g)/tsx/dist/loader.mjs\\\" shared/lib/review-context-gatherer.test.ts\\n- node --test shar\"\n  }\n]\nChanged files:\n[]\nLinked chain ids:\n[\"evidence-chain-comment_to_commit-3d3b64ab97863d3d\"]\nSource graph evidence:\nSource evidence repo graph summary\nRepo: timogilvie/wavemill\nGraph label: source_backed_multi_signal_graph\nNodes: 10\nEdges: 12\nNode types: {\"cooccurrence_profile\": 1, \"github_repo_summary\": 1, \"helicopter_repo_view\": 4, \"repo\": 1, \"source_artifact\": 2, \"source_bundle\": 1}\nEdge types: {\"artifact_needs_claim_verification\": 1, \"artifact_supports_verification\": 1, \"repo_has_cooccurrence_profile\": 1, \"repo_has_github_evidence_summary\": 1, \"repo_has_graphs_helicopter_view\": 2, \"repo_has_schemas_helicopter_view\": 2, \"repo_has_source_artifact\": 2, \"repo_has_source_bundle\": 1, \"source_bundle_uses_cooccurre\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/timogilvie/wavemill", "source_id": "comment-chain-pattern-bad_chains-733d0654e43e01c7", "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": "timogilvie/wavemill", "source_dataset": "comment_chain_patterns/bad_chains", "training_usage": "negative_or_unresolved"}}}, {"ruleId": "foundry_bad_chain", "level": "error", "message": {"text": "Foundry mined bad chains: timogilvie/wavemill"}, "properties": {"repobilityId": 391424, "scanner": "foundry_dataset", "fingerprint": "53b7cac989ee1d0cde1a4c00d42cda5e062b983af3431a53ef5cf97cd8b64cd3", "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": "timogilvie/wavemill#126", "human_labels": ["agent_instruction_gap"], "issue_number": "126", "thread_label": "thread_has_human_issue_without_fix_context", "outcome_label": "not_resolved_or_not_observed", "source_backed": true, "max_confidence": 0.0, "repo_full_name": "timogilvie/wavemill", "training_usage": "negative_or_unresolved", "confidence_tier": "unresolved", "source_chain_id": "evidence-chain-issue_chain-09ab266ccc7e8cff", "helicopter_views": {"graphs": 2, "schemas": 2}, "artifact_families": {"docs": 1, "schemas": 1}, "source_chain_kind": "issue_chain", "changed_file_count": 0, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {}, "linked_commit_count": 0, "helicopter_view_count": 4, "source_artifact_count": 2, "classification_reasons": ["source_graph_has_real_artifacts", "source_graph_has_verification_artifacts", "repo_has_isolated_helicopter_views", "link_quality_unresolved"], "linked_ci_commit_count": 0, "verification_artifact_count": 1, "design_schema_api_artifact_count": 1}, "text": "Comment chain pattern product: bad_chains\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#126\nOutcome: not_resolved_or_not_observed\nThread label: thread_has_human_issue_without_fix_context\nSource graph label: source_backed_multi_signal_graph\nReasons: source_graph_has_real_artifacts, source_graph_has_verification_artifacts, repo_has_isolated_helicopter_views, link_quality_unresolved\nChain evidence:\nIssue/PR evidence chain: timogilvie/wavemill#126\nRepo: timogilvie/wavemill\nThread label: thread_has_human_issue_without_fix_context\nOutcome: not_resolved_or_not_observed\nComment count: 1\nLinked commit count: 0\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 0\nLabels: {'agent_instruction_gap': 1}\nPolarities: {'bad': 1}\nChanged file labels: {}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-68ad8a818ff5719d\",\n    \"kind\": \"pull_request_body\",\n    \"label\": \"agent_instruction_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/timogilvie/wavemill/pull/126\",\n    \"text\": \"GitHub feedback: agent_instruction_gap\\nPolarity: bad\\nKind: pull_request_body\\nRepo: timogilvie/wavemill\\nAuthor: timogilvie (User)\\nURL: https://github.com/timogilvie/wavemill/pull/126\\nTitle: HOK-973: Show plan review wait state in dashboard\\nBody:\\n## Summary\\n- override stale planning status text with `Plan waiting for review` when the agent has exited but plan approval has not been recorded\\n- keep normal dashboard behavior for active planning, execution, and merged tasks\\n- add shell regression guards so the planning review state detection stays covered\\n- address self-review follow-up guards around agent state handling and empty worktree/slug inputs\\n\\n## Changes\\n- `shared/lib/wavemill-status.sh`\\n- `tests/check-shell.sh`\\n\\n## Test plan\\n- `bash tests/check-shell.sh`\\n- self-review: `npx tsx /Users/timothyogilvie/Dropbox/wavemill/tools/review-changes.ts main --json`\\n\\n## Self-review\\n- Iteration 1: `not_ready` with 1 blocker; fixed and committed as `fix: Address self-review findings (iteration 1)`\\n- Iteration 2: `ready` with 1 warning; fixed and committed as `fix: Address self-review findings (iteration 2)`\\n- Iteration 3: `ready` with 0 findings\\n\\nRefs HOK-973.\"\n  }\n]\nChanged files:\n[]\nLinked chain ids:\n[\"evidence-chain-comment_to_commit-8e4bec4bb83e7600\"]\nSource graph evidence:\nSource evidence repo graph summary\nRepo: timogilvie/wavemill\nGraph label: source_backed_multi_signal_graph\nNodes: 10\nEdges: 12\nNode types: {\"cooccurrence_profile\": 1, \"github_repo_summary\": 1, \"helicopter_repo_view\": 4, \"repo\": 1, \"source_artifact\": 2, \"source_bundle\": 1}\nEdge types: {\"artifact_needs_claim_verification\": 1, \"artifact_supports_verification\": 1, \"repo_has_cooccurrence_profile\": 1, \"repo_has_github_evidence_summary\": 1, \"repo_has_graphs_helicopter_view\": 2, \"repo_has_schemas_helicopter_view\": 2, \"repo_has_source_artifact\": 2, \"repo_has_source_bundle\": 1, \"source_bundle_uses_cooccurrence_profile\": 1}\nArtifact families: {\"doc\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/timogilvie/wavemill", "source_id": "comment-chain-pattern-bad_chains-2dc9d6312975907f", "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": "timogilvie/wavemill", "source_dataset": "comment_chain_patterns/bad_chains", "training_usage": "negative_or_unresolved"}}}, {"ruleId": "foundry_bad_chain", "level": "error", "message": {"text": "Foundry mined bad chains: timogilvie/wavemill"}, "properties": {"repobilityId": 391423, "scanner": "foundry_dataset", "fingerprint": "9e1a06ade397deeb24f86013a513d10e9d51d76474d95f28a4163370a272e5e7", "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": "timogilvie/wavemill#123", "human_labels": ["mock_placeholder"], "issue_number": "123", "thread_label": "thread_has_human_issue_and_fix_context", "outcome_label": "claimed_resolved_unverified", "source_backed": true, "max_confidence": 0.58, "repo_full_name": "timogilvie/wavemill", "training_usage": "weak_supervision", "confidence_tier": "weak_supervision", "source_chain_id": "evidence-chain-issue_chain-c3b9458db3d599df", "helicopter_views": {"graphs": 2, "schemas": 2}, "artifact_families": {"docs": 1, "schemas": 1}, "source_chain_kind": "issue_chain", "changed_file_count": 0, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {}, "linked_commit_count": 2, "helicopter_view_count": 4, "source_artifact_count": 2, "classification_reasons": ["source_graph_has_real_artifacts", "source_graph_has_verification_artifacts", "repo_has_isolated_helicopter_views", "link_quality_weak_supervision", "high_risk_human_feedback_label"], "linked_ci_commit_count": 0, "verification_artifact_count": 1, "design_schema_api_artifact_count": 1}, "text": "Comment chain pattern product: bad_chains\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#123\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: timogilvie/wavemill#123\nRepo: timogilvie/wavemill\nThread label: thread_has_human_issue_and_fix_context\nOutcome: claimed_resolved_unverified\nComment count: 1\nLinked commit count: 2\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 0\nLabels: {'mock_placeholder': 1}\nPolarities: {'bad': 1}\nChanged file labels: {}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-c1034afe60e5e7d1\",\n    \"kind\": \"pull_request_body\",\n    \"label\": \"mock_placeholder\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/timogilvie/wavemill/pull/123\",\n    \"text\": \"GitHub feedback: mock_placeholder\\nPolarity: bad\\nKind: pull_request_body\\nRepo: timogilvie/wavemill\\nAuthor: timogilvie (User)\\nURL: https://github.com/timogilvie/wavemill/pull/123\\nTitle: HOK-964: Fix review tool to focus only on immediate changes\\nBody:\\n## Summary\\n\\n- Fixed review tool to use three-dot git diff syntax (`git diff main...HEAD`) instead of two-dot (`git diff main`)\\n- Three-dot syntax compares merge-base with HEAD, showing only changes introduced by the current branch\\n- Prevents false positives from pre-existing code or previously merged PRs\\n- Added comprehensive error diagnostics for agents when review tool fails (exit code 2)\\n\\n## Problem\\n\\nThe review tool was flagging unrelated files from previous PRs as blockers. For example, in PR #125 (Hokusai repo), it flagged `src/evaluation/adapters/kaggle.py:36-62` even though this file wasn't part of the 3 files changed in that PR. This happened because:\\n\\n1. The tool used `git diff main` which compares the entire branch HEAD against main\\n2. If a branch had merged commits from main (wasn't rebased), it would include those changes in the diff\\n3. Pre-existing code from ancestor commits would be reviewed unnecessarily\\n\\n## Changes\\n\\n### \"\n  }\n]\nChanged files:\n[]\nLinked chain ids:\n[\"evidence-chain-comment_to_commit-e05f3ab4e0e29c2a\"]\nSource graph evidence:\nSource evidence repo graph summary\nRepo: timogilvie/wavemill\nGraph label: source_backed_multi_signal_graph\nNodes: 10\nEdges: 12\nNode types: {\"cooccurrence_profile\": 1, \"github_repo_summary\": 1, \"helicopter_repo_view\": 4, \"repo\": 1, \"source_artifact\": 2, \"source_bundle\": 1}\nEdge types: {\"artifact_needs_claim_verification\": 1, \"artifact_supports_verification\": 1, \"repo_has_cooccurrence_profile\": 1, \"repo_has_github_evidence_summary\": 1, \"repo_has_graphs_helicopter_view\": 2, \"repo_has_schemas_helicopter_view\": 2, \"repo_has_source_artifact\": 2, \"repo_has_source_bundle\": 1, \"source_bundle_uses_\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/timogilvie/wavemill", "source_id": "comment-chain-pattern-bad_chains-6581e6e55e77ce09", "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": "timogilvie/wavemill", "source_dataset": "comment_chain_patterns/bad_chains", "training_usage": "weak_supervision"}}}, {"ruleId": "foundry_bad_chain", "level": "error", "message": {"text": "Foundry mined bad chains: timogilvie/wavemill"}, "properties": {"repobilityId": 391422, "scanner": "foundry_dataset", "fingerprint": "542f854a3ab357d45b3bb53f9182d347f886f97564896bafa2c3839034182e20", "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": "timogilvie/wavemill#117", "human_labels": ["agent_instruction_gap"], "issue_number": "117", "thread_label": "thread_has_human_issue_without_fix_context", "outcome_label": "not_resolved_or_not_observed", "source_backed": true, "max_confidence": 0.0, "repo_full_name": "timogilvie/wavemill", "training_usage": "negative_or_unresolved", "confidence_tier": "unresolved", "source_chain_id": "evidence-chain-issue_chain-afe1ffaa4a72981a", "helicopter_views": {"graphs": 2, "schemas": 2}, "artifact_families": {"docs": 1, "schemas": 1}, "source_chain_kind": "issue_chain", "changed_file_count": 0, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {}, "linked_commit_count": 0, "helicopter_view_count": 4, "source_artifact_count": 2, "classification_reasons": ["source_graph_has_real_artifacts", "source_graph_has_verification_artifacts", "repo_has_isolated_helicopter_views", "link_quality_unresolved"], "linked_ci_commit_count": 0, "verification_artifact_count": 1, "design_schema_api_artifact_count": 1}, "text": "Comment chain pattern product: bad_chains\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#117\nOutcome: not_resolved_or_not_observed\nThread label: thread_has_human_issue_without_fix_context\nSource graph label: source_backed_multi_signal_graph\nReasons: source_graph_has_real_artifacts, source_graph_has_verification_artifacts, repo_has_isolated_helicopter_views, link_quality_unresolved\nChain evidence:\nIssue/PR evidence chain: timogilvie/wavemill#117\nRepo: timogilvie/wavemill\nThread label: thread_has_human_issue_without_fix_context\nOutcome: not_resolved_or_not_observed\nComment count: 1\nLinked commit count: 0\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 0\nLabels: {'agent_instruction_gap': 1}\nPolarities: {'bad': 1}\nChanged file labels: {}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-ed21351ce1cb56e6\",\n    \"kind\": \"pull_request_body\",\n    \"label\": \"agent_instruction_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/timogilvie/wavemill/pull/117\",\n    \"text\": \"GitHub feedback: agent_instruction_gap\\nPolarity: bad\\nKind: pull_request_body\\nRepo: timogilvie/wavemill\\nAuthor: timogilvie (User)\\nURL: https://github.com/timogilvie/wavemill/pull/117\\nTitle: HOK-951: Suppress repeated empty backlog messages in mill mode\\nBody:\\n## Summary\\n\\n- Eliminates console spam when wavemill mill runs with an empty backlog\\n- Waiting messages now print once per state change instead of every poll cycle (~10s)\\n- Uses the same state tracking pattern as the existing task selection display suppression\\n\\n## Changes\\n\\n**File**: `shared/lib/wavemill-mill.sh`\\n\\n1. Added `LAST_WAITING_MSG` variable to track the last waiting message printed\\n2. Modified \\\"Backlog empty\\\" message handler (lines 2165-2172) to check if message differs before printing\\n3. Modified \\\"No new tasks available\\\" message handler (lines 2150-2157) to check if message differs before printing\\n4. Clear waiting state when tasks become available (line 2076) or are launched (line 2145)\\n\\n## Test plan\\n\\n- [x] Shellcheck passes with no issues in modified sections\\n- [ ] Manual test: Start wavemill mill with empty backlog, verify message prints once\\n- [ ] Manual test: Wait through multiple poll cycles, verify no repeated mes\"\n  }\n]\nChanged files:\n[]\nLinked chain ids:\n[\"evidence-chain-comment_to_commit-ff82ef72caefdb7a\"]\nSource graph evidence:\nSource evidence repo graph summary\nRepo: timogilvie/wavemill\nGraph label: source_backed_multi_signal_graph\nNodes: 10\nEdges: 12\nNode types: {\"cooccurrence_profile\": 1, \"github_repo_summary\": 1, \"helicopter_repo_view\": 4, \"repo\": 1, \"source_artifact\": 2, \"source_bundle\": 1}\nEdge types: {\"artifact_needs_claim_verification\": 1, \"artifact_supports_verification\": 1, \"repo_has_cooccurrence_profile\": 1, \"repo_has_github_evidence_summary\": 1, \"repo_has_graphs_helicopter_view\": 2, \"repo_has_schemas_helicopter_view\": 2, \"repo_has_source_artifact\": 2, \"repo_has_source_bundle\": 1, \"source_bundle_uses_cooccurrence\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/timogilvie/wavemill", "source_id": "comment-chain-pattern-bad_chains-ff2d2b92df1867da", "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": "timogilvie/wavemill", "source_dataset": "comment_chain_patterns/bad_chains", "training_usage": "negative_or_unresolved"}}}, {"ruleId": "foundry_bad_chain", "level": "error", "message": {"text": "Foundry mined bad chains: timogilvie/wavemill"}, "properties": {"repobilityId": 391421, "scanner": "foundry_dataset", "fingerprint": "8bfecd7e4c42633d251a24334ef8cda731b47fe37f07483a8ffdf08776795d66", "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": "timogilvie/wavemill#115", "human_labels": ["security_auth_secret"], "issue_number": "115", "thread_label": "thread_has_human_issue_without_fix_context", "outcome_label": "not_resolved_or_not_observed", "source_backed": true, "max_confidence": 0.0, "repo_full_name": "timogilvie/wavemill", "training_usage": "negative_or_unresolved", "confidence_tier": "unresolved", "source_chain_id": "evidence-chain-issue_chain-4bdeae099e745f98", "helicopter_views": {"graphs": 2, "schemas": 2}, "artifact_families": {"docs": 1, "schemas": 1}, "source_chain_kind": "issue_chain", "changed_file_count": 0, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {}, "linked_commit_count": 0, "helicopter_view_count": 4, "source_artifact_count": 2, "classification_reasons": ["source_graph_has_real_artifacts", "source_graph_has_verification_artifacts", "repo_has_isolated_helicopter_views", "link_quality_unresolved", "high_risk_human_feedback_label"], "linked_ci_commit_count": 0, "verification_artifact_count": 1, "design_schema_api_artifact_count": 1}, "text": "Comment chain pattern product: bad_chains\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#115\nOutcome: not_resolved_or_not_observed\nThread label: thread_has_human_issue_without_fix_context\nSource graph label: source_backed_multi_signal_graph\nReasons: source_graph_has_real_artifacts, source_graph_has_verification_artifacts, repo_has_isolated_helicopter_views, link_quality_unresolved, high_risk_human_feedback_label\nChain evidence:\nIssue/PR evidence chain: timogilvie/wavemill#115\nRepo: timogilvie/wavemill\nThread label: thread_has_human_issue_without_fix_context\nOutcome: not_resolved_or_not_observed\nComment count: 1\nLinked commit count: 0\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 0\nLabels: {'security_auth_secret': 1}\nPolarities: {'bad': 1}\nChanged file labels: {}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-215660d1cc78da63\",\n    \"kind\": \"pull_request_body\",\n    \"label\": \"security_auth_secret\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/timogilvie/wavemill/pull/115\",\n    \"text\": \"GitHub feedback: security_auth_secret\\nPolarity: bad\\nKind: pull_request_body\\nRepo: timogilvie/wavemill\\nAuthor: timogilvie (User)\\nURL: https://github.com/timogilvie/wavemill/pull/115\\nTitle: HOK-935: Add robust diagnostics and health checks to review tool\\nBody:\\n## Summary\\n\\nThis PR addresses intermittent failures in the review tool (exit code 2 with no output) by adding comprehensive diagnostics and pre-flight checks.\\n\\n- **Pre-flight checks** verify Claude CLI availability before review execution\\n- **Enhanced error diagnostics** detect specific failure modes and provide actionable guidance\\n- **Standalone health check** command validates setup independently\\n\\n## Changes\\n\\n### 1. Pre-Flight Checks (`shared/lib/review-engine.ts`)\\n- Added `checkClaudeAvailability()` call before review execution\\n- Verifies Claude CLI is installed, executable, and authenticated\\n- Fails fast with actionable error messages\\n- Can be skipped with `SKIP_PREFLIGHT_CHECK=1` env var for testing\\n\\n### 2. Enhanced Error Diagnostics (`shared/lib/llm-cli.ts`)\\n\\n**New `checkClaudeAvailability()` function:**\\n- 3-stage health check: PATH detection \u2192 version check \u2192 test call\\n- Returns detailed diagnostics and troubleshooting s\"\n  }\n]\nChanged files:\n[]\nLinked chain ids:\n[\"evidence-chain-comment_to_commit-8e52016a579cb185\"]\nSource graph evidence:\nSource evidence repo graph summary\nRepo: timogilvie/wavemill\nGraph label: source_backed_multi_signal_graph\nNodes: 10\nEdges: 12\nNode types: {\"cooccurrence_profile\": 1, \"github_repo_summary\": 1, \"helicopter_repo_view\": 4, \"repo\": 1, \"source_artifact\": 2, \"source_bundle\": 1}\nEdge types: {\"artifact_needs_claim_verification\": 1, \"artifact_supports_verification\": 1, \"repo_has_cooccurrence_profile\": 1, \"repo_has_github_evidence_summary\": 1, \"repo_has_graphs_helicopter_view\": 2, \"repo_has_schemas_helicopter_view\": 2, \"repo_has_source_artifact\": 2, \"repo_has_source_bundle\": 1, \"sour\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/timogilvie/wavemill", "source_id": "comment-chain-pattern-bad_chains-432750af43c43ff8", "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": "timogilvie/wavemill", "source_dataset": "comment_chain_patterns/bad_chains", "training_usage": "negative_or_unresolved"}}}, {"ruleId": "foundry_auth_guardrail_gap", "level": "error", "message": {"text": "Foundry mined security auth guardrail gaps: timogilvie/wavemill"}, "properties": {"repobilityId": 414845, "scanner": "foundry_dataset", "fingerprint": "5e655f9a08deb8fc323e1aa9ad46941e9ea886aadeded6748427bc2722c0b5a8", "category": "auth", "severity": "critical", "confidence": 0.78, "triageState": "open", "verdict": "needs_review", "isResolved": false, "reason": "Imported from mined Foundry/Fable5 evidence with real GitHub/source provenance. Review source_id before acting.", "evidence": {"meta": {"kind": "graph_query_record", "title": "Security/auth changes without enough guardrails", "intent": "Assumption-check security/auth examples requiring stronger tests or CI.", "labels": {"security_auth_secret": 1, "verification_or_tests": 1, "issue_or_pull_request_thread": 1, "ambiguous_needs_more_evidence": 3, "comment_has_related_commit_context": 1, "thread_has_human_issue_and_fix_context": 2}, "source": "graph_query_export", "motif_id": "security_auth_without_guardrails", "outcomes": {"ambiguous_needs_more_evidence": 6}, "polarity": "bad", "query_id": "security_auth_guardrail_gaps", "severity": "critical", "ci_labels": {}, "synthetic": false, "edge_count": 12, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 1, "thread_has_comment": 1, "chain_has_link_quality": 3, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 1, "comment_chain_links_commit": 1, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 1}, "node_count": 10, "node_types": {"repo": 1, "commit": 1, "thread": 1, "comment": 1, "fix_outcome": 1, "issue_chain": 1, "link_quality": 3, "comment_chain": 1}, "query_type": "motif_query", "thread_key": "timogilvie/wavemill#729", "issue_number": "729", "quality_tiers": {"high_confidence": 3}, "repo_full_name": "timogilvie/wavemill", "training_usage": "assumption_check", "source_motif_id": "graph-pattern-motif-thread-2150b93a5c59f438", "graph_gold_label": "supported_by_high_confidence_link", "changed_file_labels": {}}, "text": "Graph query export: Security/auth changes without enough guardrails\nQuery id: security_auth_guardrail_gaps\nQuery type: motif_query\nIntent: Assumption-check security/auth examples requiring stronger tests or CI.\nMotif: security_auth_without_guardrails\nTraining usage: assumption_check\nGraph gold label: supported_by_high_confidence_link\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#729\nEvidence:\nGraph motif: Security/auth change without enough guardrails\nMotif id: security_auth_without_guardrails\nPolarity: bad\nTraining usage: assumption_check\nSeverity: critical\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#729\nGraph gold label: supported_by_high_confidence_link\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: timogilvie/wavemill#729\nRepo: timogilvie/wavemill\nIssue/PR number: 729\nGraph consistency label: supported_by_high_confidence_link\nNodes: 10\nEdges: 12\nNode types: {'link_quality': 3, 'thread': 1, 'repo': 1, 'comment': 1, 'comment_chain': 1, 'commit': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'chain_has_link_quality': 3, 'repo_has_thread': 1, 'thread_has_comment': 1, 'thread_has_comment_chain': 1, 'comment_has_chain': 1, 'comment_chain_links_commit': 1, 'thread_has_issue_chain': 1, 'issue_chain_has_comment_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'ambiguous_needs_more_evidence': 3, 'thread_has_human_issue_and_fix_context': 2, 'issue_or_pull_request_thread': 1, 'security_auth_secret': 1, 'comment_has_related_commit_context': 1, 'verification_or_tests': 1}\nOutcomes: {'ambiguous_needs_more_evidence': 6}\nQuality tiers: {'high_confidence': 3}\nCI labels: {}\nCurriculum targets:\n- Train auth boundary repair with tests, permission matrices, and secret-handling checks.\n- Keep risky auth changes separate from ordinary bug-fix examples.\nAssumption checks:\n- Are auth/permission paths covered by tests?\n- Are secrets, CORS, or access rules verified rather than summarized?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/timogilvie/wavemill", "source_id": "graph-query-motif_query-32508522b1a0aba6", "synthetic": false, "gold_label": "", "graph_label": "", "source_path": "/data/distillate/foundry_data/graph_queries/security_auth_guardrail_gaps/shard-0.jsonl", "bundle_label": "", "priority_band": "", "priority_score": 0, "repo_full_name": "timogilvie/wavemill", "source_dataset": "graph_queries/security_auth_guardrail_gaps", "training_usage": "assumption_check"}}}, {"ruleId": "foundry_auth_guardrail_gap", "level": "error", "message": {"text": "Foundry mined security auth guardrail gaps: timogilvie/wavemill"}, "properties": {"repobilityId": 414844, "scanner": "foundry_dataset", "fingerprint": "9da96212308c799c1e88d6bcb58d1ab4ccf8d694e04c1e0e4c0d714c78742638", "category": "auth", "severity": "critical", "confidence": 0.78, "triageState": "open", "verdict": "needs_review", "isResolved": false, "reason": "Imported from mined Foundry/Fable5 evidence with real GitHub/source provenance. Review source_id before acting.", "evidence": {"meta": {"kind": "graph_query_record", "title": "Security/auth changes without enough guardrails", "intent": "Assumption-check security/auth examples requiring stronger tests or CI.", "labels": {"security_auth_secret": 1, "verification_or_tests": 1, "issue_or_pull_request_thread": 1, "ambiguous_needs_more_evidence": 3, "comment_has_related_commit_context": 1, "thread_has_human_issue_and_fix_context": 2}, "source": "graph_query_export", "motif_id": "security_auth_without_guardrails", "outcomes": {"ambiguous_needs_more_evidence": 6}, "polarity": "bad", "query_id": "security_auth_guardrail_gaps", "severity": "critical", "ci_labels": {}, "synthetic": false, "edge_count": 12, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 1, "thread_has_comment": 1, "chain_has_link_quality": 3, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 1, "comment_chain_links_commit": 1, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 1}, "node_count": 10, "node_types": {"repo": 1, "commit": 1, "thread": 1, "comment": 1, "fix_outcome": 1, "issue_chain": 1, "link_quality": 3, "comment_chain": 1}, "query_type": "motif_query", "thread_key": "timogilvie/wavemill#727", "issue_number": "727", "quality_tiers": {"high_confidence": 3}, "repo_full_name": "timogilvie/wavemill", "training_usage": "assumption_check", "source_motif_id": "graph-pattern-motif-thread-a5638f60384dfb35", "graph_gold_label": "supported_by_high_confidence_link", "changed_file_labels": {}}, "text": "Graph query export: Security/auth changes without enough guardrails\nQuery id: security_auth_guardrail_gaps\nQuery type: motif_query\nIntent: Assumption-check security/auth examples requiring stronger tests or CI.\nMotif: security_auth_without_guardrails\nTraining usage: assumption_check\nGraph gold label: supported_by_high_confidence_link\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#727\nEvidence:\nGraph motif: Security/auth change without enough guardrails\nMotif id: security_auth_without_guardrails\nPolarity: bad\nTraining usage: assumption_check\nSeverity: critical\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#727\nGraph gold label: supported_by_high_confidence_link\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: timogilvie/wavemill#727\nRepo: timogilvie/wavemill\nIssue/PR number: 727\nGraph consistency label: supported_by_high_confidence_link\nNodes: 10\nEdges: 12\nNode types: {'link_quality': 3, 'thread': 1, 'repo': 1, 'comment': 1, 'comment_chain': 1, 'commit': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'chain_has_link_quality': 3, 'repo_has_thread': 1, 'thread_has_comment': 1, 'thread_has_comment_chain': 1, 'comment_has_chain': 1, 'comment_chain_links_commit': 1, 'thread_has_issue_chain': 1, 'issue_chain_has_comment_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'ambiguous_needs_more_evidence': 3, 'thread_has_human_issue_and_fix_context': 2, 'issue_or_pull_request_thread': 1, 'security_auth_secret': 1, 'comment_has_related_commit_context': 1, 'verification_or_tests': 1}\nOutcomes: {'ambiguous_needs_more_evidence': 6}\nQuality tiers: {'high_confidence': 3}\nCI labels: {}\nCurriculum targets:\n- Train auth boundary repair with tests, permission matrices, and secret-handling checks.\n- Keep risky auth changes separate from ordinary bug-fix examples.\nAssumption checks:\n- Are auth/permission paths covered by tests?\n- Are secrets, CORS, or access rules verified rather than summarized?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/timogilvie/wavemill", "source_id": "graph-query-motif_query-563e209e8f1e0eda", "synthetic": false, "gold_label": "", "graph_label": "", "source_path": "/data/distillate/foundry_data/graph_queries/security_auth_guardrail_gaps/shard-0.jsonl", "bundle_label": "", "priority_band": "", "priority_score": 0, "repo_full_name": "timogilvie/wavemill", "source_dataset": "graph_queries/security_auth_guardrail_gaps", "training_usage": "assumption_check"}}}, {"ruleId": "foundry_auth_guardrail_gap", "level": "error", "message": {"text": "Foundry mined security auth guardrail gaps: timogilvie/wavemill"}, "properties": {"repobilityId": 414843, "scanner": "foundry_dataset", "fingerprint": "5f67ec92d130931d653d4446bb4e72f9ed182045bb287116c11939d9d5f6def8", "category": "auth", "severity": "critical", "confidence": 0.78, "triageState": "open", "verdict": "needs_review", "isResolved": false, "reason": "Imported from mined Foundry/Fable5 evidence with real GitHub/source provenance. Review source_id before acting.", "evidence": {"meta": {"kind": "graph_query_record", "title": "Security/auth changes without enough guardrails", "intent": "Assumption-check security/auth examples requiring stronger tests or CI.", "labels": {"security_auth_secret": 1, "verification_or_tests": 1, "issue_or_pull_request_thread": 1, "ambiguous_needs_more_evidence": 3, "comment_has_related_commit_context": 1, "thread_has_human_issue_and_fix_context": 2}, "source": "graph_query_export", "motif_id": "security_auth_without_guardrails", "outcomes": {"ambiguous_needs_more_evidence": 6}, "polarity": "bad", "query_id": "security_auth_guardrail_gaps", "severity": "critical", "ci_labels": {}, "synthetic": false, "edge_count": 12, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 1, "thread_has_comment": 1, "chain_has_link_quality": 3, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 1, "comment_chain_links_commit": 1, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 1}, "node_count": 10, "node_types": {"repo": 1, "commit": 1, "thread": 1, "comment": 1, "fix_outcome": 1, "issue_chain": 1, "link_quality": 3, "comment_chain": 1}, "query_type": "motif_query", "thread_key": "timogilvie/wavemill#726", "issue_number": "726", "quality_tiers": {"high_confidence": 3}, "repo_full_name": "timogilvie/wavemill", "training_usage": "assumption_check", "source_motif_id": "graph-pattern-motif-thread-f71fa68efb9722eb", "graph_gold_label": "supported_by_high_confidence_link", "changed_file_labels": {}}, "text": "Graph query export: Security/auth changes without enough guardrails\nQuery id: security_auth_guardrail_gaps\nQuery type: motif_query\nIntent: Assumption-check security/auth examples requiring stronger tests or CI.\nMotif: security_auth_without_guardrails\nTraining usage: assumption_check\nGraph gold label: supported_by_high_confidence_link\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#726\nEvidence:\nGraph motif: Security/auth change without enough guardrails\nMotif id: security_auth_without_guardrails\nPolarity: bad\nTraining usage: assumption_check\nSeverity: critical\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#726\nGraph gold label: supported_by_high_confidence_link\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: timogilvie/wavemill#726\nRepo: timogilvie/wavemill\nIssue/PR number: 726\nGraph consistency label: supported_by_high_confidence_link\nNodes: 10\nEdges: 12\nNode types: {'link_quality': 3, 'thread': 1, 'repo': 1, 'comment': 1, 'comment_chain': 1, 'commit': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'chain_has_link_quality': 3, 'repo_has_thread': 1, 'thread_has_comment': 1, 'thread_has_comment_chain': 1, 'comment_has_chain': 1, 'comment_chain_links_commit': 1, 'thread_has_issue_chain': 1, 'issue_chain_has_comment_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'ambiguous_needs_more_evidence': 3, 'thread_has_human_issue_and_fix_context': 2, 'issue_or_pull_request_thread': 1, 'security_auth_secret': 1, 'comment_has_related_commit_context': 1, 'verification_or_tests': 1}\nOutcomes: {'ambiguous_needs_more_evidence': 6}\nQuality tiers: {'high_confidence': 3}\nCI labels: {}\nCurriculum targets:\n- Train auth boundary repair with tests, permission matrices, and secret-handling checks.\n- Keep risky auth changes separate from ordinary bug-fix examples.\nAssumption checks:\n- Are auth/permission paths covered by tests?\n- Are secrets, CORS, or access rules verified rather than summarized?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/timogilvie/wavemill", "source_id": "graph-query-motif_query-f61c68843be1b41f", "synthetic": false, "gold_label": "", "graph_label": "", "source_path": "/data/distillate/foundry_data/graph_queries/security_auth_guardrail_gaps/shard-0.jsonl", "bundle_label": "", "priority_band": "", "priority_score": 0, "repo_full_name": "timogilvie/wavemill", "source_dataset": "graph_queries/security_auth_guardrail_gaps", "training_usage": "assumption_check"}}}, {"ruleId": "foundry_auth_guardrail_gap", "level": "error", "message": {"text": "Foundry mined security auth guardrail gaps: timogilvie/wavemill"}, "properties": {"repobilityId": 414842, "scanner": "foundry_dataset", "fingerprint": "af48113f954542956746f192b7a2b549493800d310149908cd9a5e9198d62753", "category": "auth", "severity": "critical", "confidence": 0.78, "triageState": "open", "verdict": "needs_review", "isResolved": false, "reason": "Imported from mined Foundry/Fable5 evidence with real GitHub/source provenance. Review source_id before acting.", "evidence": {"meta": {"kind": "graph_query_record", "title": "Security/auth changes without enough guardrails", "intent": "Assumption-check security/auth examples requiring stronger tests or CI.", "labels": {"bug_fix": 1, "security_auth_secret": 1, "claimed_resolved_unverified": 3, "issue_or_pull_request_thread": 1, "human_reported_issue_then_fix_attempt": 1, "thread_has_human_issue_and_fix_context": 2}, "source": "graph_query_export", "motif_id": "security_auth_without_guardrails", "outcomes": {"claimed_resolved_unverified": 6}, "polarity": "bad", "query_id": "security_auth_guardrail_gaps", "severity": "critical", "ci_labels": {}, "synthetic": false, "edge_count": 12, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 1, "thread_has_comment": 1, "chain_has_link_quality": 3, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 1, "comment_chain_links_commit": 1, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 1}, "node_count": 10, "node_types": {"repo": 1, "commit": 1, "thread": 1, "comment": 1, "fix_outcome": 1, "issue_chain": 1, "link_quality": 3, "comment_chain": 1}, "query_type": "motif_query", "thread_key": "timogilvie/wavemill#714", "issue_number": "714", "quality_tiers": {"high_confidence": 3}, "repo_full_name": "timogilvie/wavemill", "training_usage": "assumption_check", "source_motif_id": "graph-pattern-motif-thread-a45bb68637bfdb27", "graph_gold_label": "supported_by_high_confidence_link", "changed_file_labels": {}}, "text": "Graph query export: Security/auth changes without enough guardrails\nQuery id: security_auth_guardrail_gaps\nQuery type: motif_query\nIntent: Assumption-check security/auth examples requiring stronger tests or CI.\nMotif: security_auth_without_guardrails\nTraining usage: assumption_check\nGraph gold label: supported_by_high_confidence_link\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#714\nEvidence:\nGraph motif: Security/auth change without enough guardrails\nMotif id: security_auth_without_guardrails\nPolarity: bad\nTraining usage: assumption_check\nSeverity: critical\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#714\nGraph gold label: supported_by_high_confidence_link\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: timogilvie/wavemill#714\nRepo: timogilvie/wavemill\nIssue/PR number: 714\nGraph consistency label: supported_by_high_confidence_link\nNodes: 10\nEdges: 12\nNode types: {'link_quality': 3, 'thread': 1, 'repo': 1, 'comment': 1, 'comment_chain': 1, 'commit': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'chain_has_link_quality': 3, 'repo_has_thread': 1, 'thread_has_comment': 1, 'thread_has_comment_chain': 1, 'comment_has_chain': 1, 'comment_chain_links_commit': 1, 'thread_has_issue_chain': 1, 'issue_chain_has_comment_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'claimed_resolved_unverified': 3, 'thread_has_human_issue_and_fix_context': 2, 'issue_or_pull_request_thread': 1, 'security_auth_secret': 1, 'human_reported_issue_then_fix_attempt': 1, 'bug_fix': 1}\nOutcomes: {'claimed_resolved_unverified': 6}\nQuality tiers: {'high_confidence': 3}\nCI labels: {}\nCurriculum targets:\n- Train auth boundary repair with tests, permission matrices, and secret-handling checks.\n- Keep risky auth changes separate from ordinary bug-fix examples.\nAssumption checks:\n- Are auth/permission paths covered by tests?\n- Are secrets, CORS, or access rules verified rather than summarized?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/timogilvie/wavemill", "source_id": "graph-query-motif_query-ae908bcdc213568a", "synthetic": false, "gold_label": "", "graph_label": "", "source_path": "/data/distillate/foundry_data/graph_queries/security_auth_guardrail_gaps/shard-0.jsonl", "bundle_label": "", "priority_band": "", "priority_score": 0, "repo_full_name": "timogilvie/wavemill", "source_dataset": "graph_queries/security_auth_guardrail_gaps", "training_usage": "assumption_check"}}}, {"ruleId": "foundry_auth_guardrail_gap", "level": "error", "message": {"text": "Foundry mined security auth guardrail gaps: timogilvie/wavemill"}, "properties": {"repobilityId": 414841, "scanner": "foundry_dataset", "fingerprint": "260b0a5eadc763bb0fe271050f9dd241ad1663502ac0b89a4bf734f6b33529ab", "category": "auth", "severity": "critical", "confidence": 0.78, "triageState": "open", "verdict": "needs_review", "isResolved": false, "reason": "Imported from mined Foundry/Fable5 evidence with real GitHub/source provenance. Review source_id before acting.", "evidence": {"meta": {"kind": "graph_query_record", "title": "Security/auth changes without enough guardrails", "intent": "Assumption-check security/auth examples requiring stronger tests or CI.", "labels": {"commit_general": 1, "security_auth_secret": 1, "issue_or_pull_request_thread": 1, "ambiguous_needs_more_evidence": 3, "comment_has_related_commit_context": 1, "thread_has_human_issue_and_fix_context": 2}, "source": "graph_query_export", "motif_id": "security_auth_without_guardrails", "outcomes": {"ambiguous_needs_more_evidence": 6}, "polarity": "bad", "query_id": "security_auth_guardrail_gaps", "severity": "critical", "ci_labels": {}, "synthetic": false, "edge_count": 12, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 1, "thread_has_comment": 1, "chain_has_link_quality": 3, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 1, "comment_chain_links_commit": 1, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 1}, "node_count": 10, "node_types": {"repo": 1, "commit": 1, "thread": 1, "comment": 1, "fix_outcome": 1, "issue_chain": 1, "link_quality": 3, "comment_chain": 1}, "query_type": "motif_query", "thread_key": "timogilvie/wavemill#712", "issue_number": "712", "quality_tiers": {"weak_supervision": 3}, "repo_full_name": "timogilvie/wavemill", "training_usage": "assumption_check", "source_motif_id": "graph-pattern-motif-thread-754ae9d06e7de1ab", "graph_gold_label": "weak_supervision_needs_review", "changed_file_labels": {}}, "text": "Graph query export: Security/auth changes without enough guardrails\nQuery id: security_auth_guardrail_gaps\nQuery type: motif_query\nIntent: Assumption-check security/auth examples requiring stronger tests or CI.\nMotif: security_auth_without_guardrails\nTraining usage: assumption_check\nGraph gold label: weak_supervision_needs_review\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#712\nEvidence:\nGraph motif: Security/auth change without enough guardrails\nMotif id: security_auth_without_guardrails\nPolarity: bad\nTraining usage: assumption_check\nSeverity: critical\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#712\nGraph gold label: weak_supervision_needs_review\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: timogilvie/wavemill#712\nRepo: timogilvie/wavemill\nIssue/PR number: 712\nGraph consistency label: weak_supervision_needs_review\nNodes: 10\nEdges: 12\nNode types: {'link_quality': 3, 'thread': 1, 'repo': 1, 'comment': 1, 'comment_chain': 1, 'commit': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'chain_has_link_quality': 3, 'repo_has_thread': 1, 'thread_has_comment': 1, 'thread_has_comment_chain': 1, 'comment_has_chain': 1, 'comment_chain_links_commit': 1, 'thread_has_issue_chain': 1, 'issue_chain_has_comment_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'ambiguous_needs_more_evidence': 3, 'thread_has_human_issue_and_fix_context': 2, 'issue_or_pull_request_thread': 1, 'security_auth_secret': 1, 'comment_has_related_commit_context': 1, 'commit_general': 1}\nOutcomes: {'ambiguous_needs_more_evidence': 6}\nQuality tiers: {'weak_supervision': 3}\nCI labels: {}\nCurriculum targets:\n- Train auth boundary repair with tests, permission matrices, and secret-handling checks.\n- Keep risky auth changes separate from ordinary bug-fix examples.\nAssumption checks:\n- Are auth/permission paths covered by tests?\n- Are secrets, CORS, or access rules verified rather than summarized?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/timogilvie/wavemill", "source_id": "graph-query-motif_query-5f0dec22b77657fb", "synthetic": false, "gold_label": "", "graph_label": "", "source_path": "/data/distillate/foundry_data/graph_queries/security_auth_guardrail_gaps/shard-0.jsonl", "bundle_label": "", "priority_band": "", "priority_score": 0, "repo_full_name": "timogilvie/wavemill", "source_dataset": "graph_queries/security_auth_guardrail_gaps", "training_usage": "assumption_check"}}}, {"ruleId": "foundry_auth_guardrail_gap", "level": "error", "message": {"text": "Foundry mined security auth guardrail gaps: timogilvie/wavemill"}, "properties": {"repobilityId": 414840, "scanner": "foundry_dataset", "fingerprint": "b9fa8697cc4bbb5767c35b920c73d8ec1b00a670a1edc1fe4a1163e4b3349e5b", "category": "auth", "severity": "critical", "confidence": 0.78, "triageState": "open", "verdict": "needs_review", "isResolved": false, "reason": "Imported from mined Foundry/Fable5 evidence with real GitHub/source provenance. Review source_id before acting.", "evidence": {"meta": {"kind": "graph_query_record", "title": "Security/auth changes without enough guardrails", "intent": "Assumption-check security/auth examples requiring stronger tests or CI.", "labels": {"security_auth_secret": 1, "issue_or_pull_request_thread": 1, "not_resolved_or_not_observed": 3, "human_reported_issue_no_linked_fix": 1, "thread_has_human_issue_without_fix_context": 2}, "source": "graph_query_export", "motif_id": "security_auth_without_guardrails", "outcomes": {"not_resolved_or_not_observed": 6}, "polarity": "bad", "query_id": "security_auth_guardrail_gaps", "severity": "critical", "ci_labels": {}, "synthetic": false, "edge_count": 11, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 1, "thread_has_comment": 1, "chain_has_link_quality": 3, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 1, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 1}, "node_count": 9, "node_types": {"repo": 1, "thread": 1, "comment": 1, "fix_outcome": 1, "issue_chain": 1, "link_quality": 3, "comment_chain": 1}, "query_type": "motif_query", "thread_key": "timogilvie/wavemill#115", "issue_number": "115", "quality_tiers": {"unresolved": 3}, "repo_full_name": "timogilvie/wavemill", "training_usage": "assumption_check", "source_motif_id": "graph-pattern-motif-thread-960a6f965bc211ad", "graph_gold_label": "needs_more_evidence", "changed_file_labels": {}}, "text": "Graph query export: Security/auth changes without enough guardrails\nQuery id: security_auth_guardrail_gaps\nQuery type: motif_query\nIntent: Assumption-check security/auth examples requiring stronger tests or CI.\nMotif: security_auth_without_guardrails\nTraining usage: assumption_check\nGraph gold label: needs_more_evidence\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#115\nEvidence:\nGraph motif: Security/auth change without enough guardrails\nMotif id: security_auth_without_guardrails\nPolarity: bad\nTraining usage: assumption_check\nSeverity: critical\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#115\nGraph gold label: needs_more_evidence\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: timogilvie/wavemill#115\nRepo: timogilvie/wavemill\nIssue/PR number: 115\nGraph consistency label: needs_more_evidence\nNodes: 9\nEdges: 11\nNode types: {'link_quality': 3, 'thread': 1, 'repo': 1, 'comment': 1, 'comment_chain': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'chain_has_link_quality': 3, 'repo_has_thread': 1, 'thread_has_comment': 1, 'thread_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: {'not_resolved_or_not_observed': 3, 'thread_has_human_issue_without_fix_context': 2, 'issue_or_pull_request_thread': 1, 'security_auth_secret': 1, 'human_reported_issue_no_linked_fix': 1}\nOutcomes: {'not_resolved_or_not_observed': 6}\nQuality tiers: {'unresolved': 3}\nCI labels: {}\nCurriculum targets:\n- Train auth boundary repair with tests, permission matrices, and secret-handling checks.\n- Keep risky auth changes separate from ordinary bug-fix examples.\nAssumption checks:\n- Are auth/permission paths covered by tests?\n- Are secrets, CORS, or access rules verified rather than summarized?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/timogilvie/wavemill", "source_id": "graph-query-motif_query-7e312f84f74fe28e", "synthetic": false, "gold_label": "", "graph_label": "", "source_path": "/data/distillate/foundry_data/graph_queries/security_auth_guardrail_gaps/shard-0.jsonl", "bundle_label": "", "priority_band": "", "priority_score": 0, "repo_full_name": "timogilvie/wavemill", "source_dataset": "graph_queries/security_auth_guardrail_gaps", "training_usage": "assumption_check"}}}, {"ruleId": "foundry_fake_real_gap", "level": "error", "message": {"text": "Foundry mined mock as real or placeholder: timogilvie/wavemill"}, "properties": {"repobilityId": 408263, "scanner": "foundry_dataset", "fingerprint": "90cb1488145b0f35238f197a014366c562a00e51e0e50fd8a5775cabfb4ceafa", "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": {"test_or_ci": 1, "api_or_backend": 2, "source_or_other": 1, "mock_placeholder": 1, "dependency_or_build": 1, "issue_or_pull_request_thread": 1, "not_resolved_or_not_observed": 3, "human_reported_issue_no_linked_fix": 1, "thread_has_human_issue_without_fix_context": 2}, "source": "graph_query_export", "motif_id": "mock_as_real_or_placeholder", "outcomes": {"not_resolved_or_not_observed": 6}, "polarity": "bad", "query_id": "mock_as_real_or_placeholder", "severity": "critical", "ci_labels": {}, "synthetic": false, "edge_count": 26, "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_touches_file": 5, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 1}, "node_count": 14, "node_types": {"repo": 1, "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": "timogilvie/wavemill#735", "issue_number": "735", "quality_tiers": {"unresolved": 3}, "repo_full_name": "timogilvie/wavemill", "training_usage": "hard_negative", "source_motif_id": "graph-pattern-motif-thread-6e1a83e8ca37bcfb", "graph_gold_label": "needs_more_evidence", "changed_file_labels": {"test_or_ci": 4, "api_or_backend": 8, "source_or_other": 4, "dependency_or_build": 4}}, "text": "Graph query export: Mock, sample, placeholder, or self-attested behavior treated as real\nQuery id: mock_as_real_or_placeholder\nQuery type: motif_query\nIntent: Hard negatives for fake completeness and missing real data paths.\nMotif: mock_as_real_or_placeholder\nTraining usage: hard_negative\nGraph gold label: needs_more_evidence\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#735\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: timogilvie/wavemill\nThread: timogilvie/wavemill#735\nGraph gold label: needs_more_evidence\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: timogilvie/wavemill#735\nRepo: timogilvie/wavemill\nIssue/PR number: 735\nGraph consistency label: needs_more_evidence\nNodes: 14\nEdges: 26\nNode types: {'pr_file': 5, '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, '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: {'not_resolved_or_not_observed': 3, 'api_or_backend': 2, 'thread_has_human_issue_without_fix_context': 2, 'issue_or_pull_request_thread': 1, 'mock_placeholder': 1, 'dependency_or_build': 1, 'source_or_other': 1, 'test_or_ci': 1, 'human_reported_issue_no_linked_fix': 1}\nOutcomes: {'not_resolved_or_not_observed': 6}\nQuality tiers: {'unresolved': 3}\nCI labels: {}\nCurriculum targets:\n- 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/timogilvie/wavemill", "source_id": "graph-query-motif_query-e94c8397b97e8be7", "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": "timogilvie/wavemill", "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: timogilvie/wavemill"}, "properties": {"repobilityId": 408262, "scanner": "foundry_dataset", "fingerprint": "f5c7d8d6289bf685cdcbbf26aabad2378c3a673d560170993e4028f7554e9ac9", "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": {"mock_placeholder": 1, "verification_or_tests": 1, "issue_or_pull_request_thread": 1, "ambiguous_needs_more_evidence": 3, "comment_has_related_commit_context": 1, "thread_has_human_issue_and_fix_context": 2}, "source": "graph_query_export", "motif_id": "mock_as_real_or_placeholder", "outcomes": {"ambiguous_needs_more_evidence": 6}, "polarity": "bad", "query_id": "mock_as_real_or_placeholder", "severity": "critical", "ci_labels": {}, "synthetic": false, "edge_count": 12, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 1, "thread_has_comment": 1, "chain_has_link_quality": 3, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 1, "comment_chain_links_commit": 1, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 1}, "node_count": 10, "node_types": {"repo": 1, "commit": 1, "thread": 1, "comment": 1, "fix_outcome": 1, "issue_chain": 1, "link_quality": 3, "comment_chain": 1}, "query_type": "motif_query", "thread_key": "timogilvie/wavemill#728", "issue_number": "728", "quality_tiers": {"high_confidence": 3}, "repo_full_name": "timogilvie/wavemill", "training_usage": "hard_negative", "source_motif_id": "graph-pattern-motif-thread-1511c624189cf0ad", "graph_gold_label": "supported_by_high_confidence_link", "changed_file_labels": {}}, "text": "Graph query export: Mock, sample, placeholder, or self-attested behavior treated as real\nQuery id: mock_as_real_or_placeholder\nQuery type: motif_query\nIntent: Hard negatives for fake completeness and missing real data paths.\nMotif: mock_as_real_or_placeholder\nTraining usage: hard_negative\nGraph gold label: supported_by_high_confidence_link\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#728\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: timogilvie/wavemill\nThread: timogilvie/wavemill#728\nGraph gold label: supported_by_high_confidence_link\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: timogilvie/wavemill#728\nRepo: timogilvie/wavemill\nIssue/PR number: 728\nGraph consistency label: supported_by_high_confidence_link\nNodes: 10\nEdges: 12\nNode types: {'link_quality': 3, 'thread': 1, 'repo': 1, 'comment': 1, 'comment_chain': 1, 'commit': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'chain_has_link_quality': 3, 'repo_has_thread': 1, 'thread_has_comment': 1, 'thread_has_comment_chain': 1, 'comment_has_chain': 1, 'comment_chain_links_commit': 1, 'thread_has_issue_chain': 1, 'issue_chain_has_comment_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'ambiguous_needs_more_evidence': 3, 'thread_has_human_issue_and_fix_context': 2, 'issue_or_pull_request_thread': 1, 'mock_placeholder': 1, 'comment_has_related_commit_context': 1, 'verification_or_tests': 1}\nOutcomes: {'ambiguous_needs_more_evidence': 6}\nQuality tiers: {'high_confidence': 3}\nCI labels: {}\nCurriculum targets:\n- Train real-data plumbing and mock-removal tasks from source to UI.\n- Use as hard negatives for dashboards or apps claiming real runs without provenance.\nAssumption checks:\n- Is user-visible behavior backed by real storage/API/CI artifacts?\n- Are placeholders, sample data, or generated claims still in a production path?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/timogilvie/wavemill", "source_id": "graph-query-motif_query-983310ca5cf45257", "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": "timogilvie/wavemill", "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: timogilvie/wavemill"}, "properties": {"repobilityId": 408261, "scanner": "foundry_dataset", "fingerprint": "15d2939038bc8d0235d01723132710c8c4c5e5bbff4cae34fbbcafc77bd871f9", "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": {"generated_provenance": 1, "agent_instruction_gap": 1, "self_attested_unverified": 3, "issue_or_pull_request_thread": 1, "thread_has_human_issue_and_fix_context": 2, "self_attested_or_generated_fix_unverified": 1}, "source": "graph_query_export", "motif_id": "mock_as_real_or_placeholder", "outcomes": {"self_attested_unverified": 6}, "polarity": "bad", "query_id": "mock_as_real_or_placeholder", "severity": "critical", "ci_labels": {}, "synthetic": false, "edge_count": 12, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 1, "thread_has_comment": 1, "chain_has_link_quality": 3, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 1, "comment_chain_links_commit": 1, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 1}, "node_count": 10, "node_types": {"repo": 1, "commit": 1, "thread": 1, "comment": 1, "fix_outcome": 1, "issue_chain": 1, "link_quality": 3, "comment_chain": 1}, "query_type": "motif_query", "thread_key": "timogilvie/wavemill#716", "issue_number": "716", "quality_tiers": {"high_confidence": 3}, "repo_full_name": "timogilvie/wavemill", "training_usage": "hard_negative", "source_motif_id": "graph-pattern-motif-thread-7212e9267477ecab", "graph_gold_label": "supported_by_high_confidence_link", "changed_file_labels": {}}, "text": "Graph query export: Mock, sample, placeholder, or self-attested behavior treated as real\nQuery id: mock_as_real_or_placeholder\nQuery type: motif_query\nIntent: Hard negatives for fake completeness and missing real data paths.\nMotif: mock_as_real_or_placeholder\nTraining usage: hard_negative\nGraph gold label: supported_by_high_confidence_link\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#716\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: timogilvie/wavemill\nThread: timogilvie/wavemill#716\nGraph gold label: supported_by_high_confidence_link\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: timogilvie/wavemill#716\nRepo: timogilvie/wavemill\nIssue/PR number: 716\nGraph consistency label: supported_by_high_confidence_link\nNodes: 10\nEdges: 12\nNode types: {'link_quality': 3, 'thread': 1, 'repo': 1, 'comment': 1, 'comment_chain': 1, 'commit': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'chain_has_link_quality': 3, 'repo_has_thread': 1, 'thread_has_comment': 1, 'thread_has_comment_chain': 1, 'comment_has_chain': 1, 'comment_chain_links_commit': 1, 'thread_has_issue_chain': 1, 'issue_chain_has_comment_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'self_attested_unverified': 3, 'thread_has_human_issue_and_fix_context': 2, 'issue_or_pull_request_thread': 1, 'agent_instruction_gap': 1, 'self_attested_or_generated_fix_unverified': 1, 'generated_provenance': 1}\nOutcomes: {'self_attested_unverified': 6}\nQuality tiers: {'high_confidence': 3}\nCI labels: {}\nCurriculum targets:\n- Train real-data plumbing and mock-removal tasks from source to UI.\n- Use as hard negatives for dashboards or apps claiming real runs without provenance.\nAssumption checks:\n- Is user-visible behavior backed by real storage/API/CI artifacts?\n- Are placeholders, sample data, or generated claims still in a production path?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/timogilvie/wavemill", "source_id": "graph-query-motif_query-3d552ef9bcacabe9", "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": "timogilvie/wavemill", "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: timogilvie/wavemill"}, "properties": {"repobilityId": 408260, "scanner": "foundry_dataset", "fingerprint": "14692df10a19743e2be27e9125d6874c3327e4fb2a675b0910d49938394296c4", "category": "practices", "severity": "critical", "confidence": 0.82, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Imported from mined Foundry/Fable5 evidence with real GitHub/source provenance. Review source_id before acting.", "evidence": {"meta": {"kind": "graph_query_record", "title": "Mock, sample, placeholder, or self-attested behavior treated as real", "intent": "Hard negatives for fake completeness and missing real data paths.", "labels": {"bug_fix": 2, "feature": 1, "test_or_ci": 1, "data_schema": 2, "source_or_other": 1, "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": 22, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 1, "thread_has_comment": 1, "thread_touches_file": 2, "chain_has_link_quality": 3, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "issue_chain_touches_file": 2, "thread_has_comment_chain": 1, "comment_chain_links_commit": 5, "comment_chain_touches_file": 2, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 1}, "node_count": 16, "node_types": {"repo": 1, "commit": 5, "thread": 1, "comment": 1, "pr_file": 2, "fix_outcome": 1, "issue_chain": 1, "link_quality": 3, "comment_chain": 1}, "query_type": "motif_query", "thread_key": "timogilvie/wavemill#702", "issue_number": "702", "quality_tiers": {"weak_supervision": 3}, "repo_full_name": "timogilvie/wavemill", "training_usage": "hard_negative", "source_motif_id": "graph-pattern-motif-thread-c222cec74605cff5", "graph_gold_label": "weak_supervision_needs_review", "changed_file_labels": {"test_or_ci": 4, "source_or_other": 4}}, "text": "Graph query export: Mock, sample, placeholder, or self-attested behavior treated as real\nQuery id: mock_as_real_or_placeholder\nQuery type: motif_query\nIntent: Hard negatives for fake completeness and missing real data paths.\nMotif: mock_as_real_or_placeholder\nTraining usage: hard_negative\nGraph gold label: weak_supervision_needs_review\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#702\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: timogilvie/wavemill\nThread: timogilvie/wavemill#702\nGraph gold label: weak_supervision_needs_review\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: timogilvie/wavemill#702\nRepo: timogilvie/wavemill\nIssue/PR number: 702\nGraph consistency label: weak_supervision_needs_review\nNodes: 16\nEdges: 22\nNode types: {'commit': 5, 'link_quality': 3, 'pr_file': 2, 'thread': 1, 'repo': 1, 'comment': 1, 'comment_chain': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'comment_chain_links_commit': 5, 'chain_has_link_quality': 3, 'thread_touches_file': 2, 'comment_chain_touches_file': 2, 'issue_chain_touches_file': 2, 'repo_has_thread': 1, 'thread_has_comment': 1, 'thread_has_comment_chain': 1, 'comment_has_chain': 1, 'thread_has_issue_chain': 1, 'issue_chain_has_comment_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'claimed_resolved_unverified': 3, 'data_schema': 2, 'bug_fix': 2, 'thread_has_human_issue_and_fix_context': 2, 'issue_or_pull_request_thread': 1, 'mock_placeholder': 1, 'source_or_other': 1, 'test_or_ci': 1, 'human_reported_issue_then_fix_attempt': 1, 'feature': 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/timogilvie/wavemill", "source_id": "graph-query-motif_query-d6d884c33d47a3ee", "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": "timogilvie/wavemill", "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: timogilvie/wavemill"}, "properties": {"repobilityId": 408259, "scanner": "foundry_dataset", "fingerprint": "84b291fd109dbdb3b4d8825c6e7567260571d3a3f9a7212759ec8eedc9b44ece", "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": {"data_schema": 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": 13, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 1, "thread_has_comment": 1, "chain_has_link_quality": 3, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 1, "comment_chain_links_commit": 2, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 1}, "node_count": 11, "node_types": {"repo": 1, "commit": 2, "thread": 1, "comment": 1, "fix_outcome": 1, "issue_chain": 1, "link_quality": 3, "comment_chain": 1}, "query_type": "motif_query", "thread_key": "timogilvie/wavemill#696", "issue_number": "696", "quality_tiers": {"weak_supervision": 3}, "repo_full_name": "timogilvie/wavemill", "training_usage": "hard_negative", "source_motif_id": "graph-pattern-motif-thread-a5c7e4c04ee745d2", "graph_gold_label": "weak_supervision_needs_review", "changed_file_labels": {}}, "text": "Graph query export: Mock, sample, placeholder, or self-attested behavior treated as real\nQuery id: mock_as_real_or_placeholder\nQuery type: motif_query\nIntent: Hard negatives for fake completeness and missing real data paths.\nMotif: mock_as_real_or_placeholder\nTraining usage: hard_negative\nGraph gold label: weak_supervision_needs_review\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#696\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: timogilvie/wavemill\nThread: timogilvie/wavemill#696\nGraph gold label: weak_supervision_needs_review\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: timogilvie/wavemill#696\nRepo: timogilvie/wavemill\nIssue/PR number: 696\nGraph consistency label: weak_supervision_needs_review\nNodes: 11\nEdges: 13\nNode types: {'link_quality': 3, 'commit': 2, 'thread': 1, 'repo': 1, 'comment': 1, 'comment_chain': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'chain_has_link_quality': 3, 'comment_chain_links_commit': 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: {'claimed_resolved_unverified': 3, 'data_schema': 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/timogilvie/wavemill", "source_id": "graph-query-motif_query-9df3be12273f9f3b", "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": "timogilvie/wavemill", "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: timogilvie/wavemill"}, "properties": {"repobilityId": 408258, "scanner": "foundry_dataset", "fingerprint": "6c3e82164227f82fd6384f424d2e149e6deefe345430837a3c9be4d84732a0f2", "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": {"generated_provenance": 1, "agent_instruction_gap": 1, "self_attested_unverified": 3, "issue_or_pull_request_thread": 1, "thread_has_human_issue_and_fix_context": 2, "self_attested_or_generated_fix_unverified": 1}, "source": "graph_query_export", "motif_id": "mock_as_real_or_placeholder", "outcomes": {"self_attested_unverified": 6}, "polarity": "bad", "query_id": "mock_as_real_or_placeholder", "severity": "critical", "ci_labels": {}, "synthetic": false, "edge_count": 12, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 1, "thread_has_comment": 1, "chain_has_link_quality": 3, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 1, "comment_chain_links_commit": 1, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 1}, "node_count": 10, "node_types": {"repo": 1, "commit": 1, "thread": 1, "comment": 1, "fix_outcome": 1, "issue_chain": 1, "link_quality": 3, "comment_chain": 1}, "query_type": "motif_query", "thread_key": "timogilvie/wavemill#584", "issue_number": "584", "quality_tiers": {"weak_supervision": 3}, "repo_full_name": "timogilvie/wavemill", "training_usage": "hard_negative", "source_motif_id": "graph-pattern-motif-thread-bd7ef82bd062d7f7", "graph_gold_label": "weak_supervision_needs_review", "changed_file_labels": {}}, "text": "Graph query export: Mock, sample, placeholder, or self-attested behavior treated as real\nQuery id: mock_as_real_or_placeholder\nQuery type: motif_query\nIntent: Hard negatives for fake completeness and missing real data paths.\nMotif: mock_as_real_or_placeholder\nTraining usage: hard_negative\nGraph gold label: weak_supervision_needs_review\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#584\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: timogilvie/wavemill\nThread: timogilvie/wavemill#584\nGraph gold label: weak_supervision_needs_review\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: timogilvie/wavemill#584\nRepo: timogilvie/wavemill\nIssue/PR number: 584\nGraph consistency label: weak_supervision_needs_review\nNodes: 10\nEdges: 12\nNode types: {'link_quality': 3, 'thread': 1, 'repo': 1, 'comment': 1, 'comment_chain': 1, 'commit': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'chain_has_link_quality': 3, 'repo_has_thread': 1, 'thread_has_comment': 1, 'thread_has_comment_chain': 1, 'comment_has_chain': 1, 'comment_chain_links_commit': 1, 'thread_has_issue_chain': 1, 'issue_chain_has_comment_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'self_attested_unverified': 3, 'thread_has_human_issue_and_fix_context': 2, 'issue_or_pull_request_thread': 1, 'agent_instruction_gap': 1, 'self_attested_or_generated_fix_unverified': 1, 'generated_provenance': 1}\nOutcomes: {'self_attested_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/timogilvie/wavemill", "source_id": "graph-query-motif_query-15171c6e9a8f8ac6", "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": "timogilvie/wavemill", "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: timogilvie/wavemill"}, "properties": {"repobilityId": 408257, "scanner": "foundry_dataset", "fingerprint": "aeb5e6dc84f4d5de5c937ef6d3d699db3b5536fea3d2780ed53454fe4a626731", "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": {"generated_provenance": 1, "agent_instruction_gap": 1, "self_attested_unverified": 3, "issue_or_pull_request_thread": 1, "thread_has_human_issue_and_fix_context": 2, "self_attested_or_generated_fix_unverified": 1}, "source": "graph_query_export", "motif_id": "mock_as_real_or_placeholder", "outcomes": {"self_attested_unverified": 6}, "polarity": "bad", "query_id": "mock_as_real_or_placeholder", "severity": "critical", "ci_labels": {}, "synthetic": false, "edge_count": 12, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 1, "thread_has_comment": 1, "chain_has_link_quality": 3, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 1, "comment_chain_links_commit": 1, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 1}, "node_count": 10, "node_types": {"repo": 1, "commit": 1, "thread": 1, "comment": 1, "fix_outcome": 1, "issue_chain": 1, "link_quality": 3, "comment_chain": 1}, "query_type": "motif_query", "thread_key": "timogilvie/wavemill#546", "issue_number": "546", "quality_tiers": {"weak_supervision": 3}, "repo_full_name": "timogilvie/wavemill", "training_usage": "hard_negative", "source_motif_id": "graph-pattern-motif-thread-9c4c7e58a61c01b1", "graph_gold_label": "weak_supervision_needs_review", "changed_file_labels": {}}, "text": "Graph query export: Mock, sample, placeholder, or self-attested behavior treated as real\nQuery id: mock_as_real_or_placeholder\nQuery type: motif_query\nIntent: Hard negatives for fake completeness and missing real data paths.\nMotif: mock_as_real_or_placeholder\nTraining usage: hard_negative\nGraph gold label: weak_supervision_needs_review\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#546\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: timogilvie/wavemill\nThread: timogilvie/wavemill#546\nGraph gold label: weak_supervision_needs_review\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: timogilvie/wavemill#546\nRepo: timogilvie/wavemill\nIssue/PR number: 546\nGraph consistency label: weak_supervision_needs_review\nNodes: 10\nEdges: 12\nNode types: {'link_quality': 3, 'thread': 1, 'repo': 1, 'comment': 1, 'comment_chain': 1, 'commit': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'chain_has_link_quality': 3, 'repo_has_thread': 1, 'thread_has_comment': 1, 'thread_has_comment_chain': 1, 'comment_has_chain': 1, 'comment_chain_links_commit': 1, 'thread_has_issue_chain': 1, 'issue_chain_has_comment_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'self_attested_unverified': 3, 'thread_has_human_issue_and_fix_context': 2, 'issue_or_pull_request_thread': 1, 'agent_instruction_gap': 1, 'self_attested_or_generated_fix_unverified': 1, 'generated_provenance': 1}\nOutcomes: {'self_attested_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/timogilvie/wavemill", "source_id": "graph-query-motif_query-cccf1fd29e3406a5", "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": "timogilvie/wavemill", "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: timogilvie/wavemill"}, "properties": {"repobilityId": 408256, "scanner": "foundry_dataset", "fingerprint": "3c67728156769140c4f93bd5b26d2d8ae52783fcf7fd5f67028ed29bb8ed3113", "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, "data_schema": 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": 16, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 1, "thread_has_comment": 1, "chain_has_link_quality": 3, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 1, "comment_chain_links_commit": 5, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 1}, "node_count": 14, "node_types": {"repo": 1, "commit": 5, "thread": 1, "comment": 1, "fix_outcome": 1, "issue_chain": 1, "link_quality": 3, "comment_chain": 1}, "query_type": "motif_query", "thread_key": "timogilvie/wavemill#507", "issue_number": "507", "quality_tiers": {"weak_supervision": 3}, "repo_full_name": "timogilvie/wavemill", "training_usage": "hard_negative", "source_motif_id": "graph-pattern-motif-thread-4675c10e26ace6c7", "graph_gold_label": "weak_supervision_needs_review", "changed_file_labels": {}}, "text": "Graph query export: Mock, sample, placeholder, or self-attested behavior treated as real\nQuery id: mock_as_real_or_placeholder\nQuery type: motif_query\nIntent: Hard negatives for fake completeness and missing real data paths.\nMotif: mock_as_real_or_placeholder\nTraining usage: hard_negative\nGraph gold label: weak_supervision_needs_review\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#507\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: timogilvie/wavemill\nThread: timogilvie/wavemill#507\nGraph gold label: weak_supervision_needs_review\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: timogilvie/wavemill#507\nRepo: timogilvie/wavemill\nIssue/PR number: 507\nGraph consistency label: weak_supervision_needs_review\nNodes: 14\nEdges: 16\nNode types: {'commit': 5, 'link_quality': 3, 'thread': 1, 'repo': 1, 'comment': 1, 'comment_chain': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'comment_chain_links_commit': 5, 'chain_has_link_quality': 3, 'repo_has_thread': 1, 'thread_has_comment': 1, 'thread_has_comment_chain': 1, 'comment_has_chain': 1, 'thread_has_issue_chain': 1, 'issue_chain_has_comment_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'bug_fix': 3, 'claimed_resolved_unverified': 3, 'data_schema': 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/timogilvie/wavemill", "source_id": "graph-query-motif_query-23527d111c110e66", "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": "timogilvie/wavemill", "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: timogilvie/wavemill"}, "properties": {"repobilityId": 408255, "scanner": "foundry_dataset", "fingerprint": "641d18d02361b3e1e66183d572a50c7a85c9766a59d9be34d396eafb7c7f3146", "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": {"mock_placeholder": 1, "issue_or_pull_request_thread": 1, "not_resolved_or_not_observed": 3, "human_reported_issue_no_linked_fix": 1, "thread_has_human_issue_without_fix_context": 2}, "source": "graph_query_export", "motif_id": "mock_as_real_or_placeholder", "outcomes": {"not_resolved_or_not_observed": 6}, "polarity": "bad", "query_id": "mock_as_real_or_placeholder", "severity": "critical", "ci_labels": {}, "synthetic": false, "edge_count": 11, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 1, "thread_has_comment": 1, "chain_has_link_quality": 3, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 1, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 1}, "node_count": 9, "node_types": {"repo": 1, "thread": 1, "comment": 1, "fix_outcome": 1, "issue_chain": 1, "link_quality": 3, "comment_chain": 1}, "query_type": "motif_query", "thread_key": "timogilvie/wavemill#145", "issue_number": "145", "quality_tiers": {"unresolved": 3}, "repo_full_name": "timogilvie/wavemill", "training_usage": "hard_negative", "source_motif_id": "graph-pattern-motif-thread-6440d7609ab25fff", "graph_gold_label": "needs_more_evidence", "changed_file_labels": {}}, "text": "Graph query export: Mock, sample, placeholder, or self-attested behavior treated as real\nQuery id: mock_as_real_or_placeholder\nQuery type: motif_query\nIntent: Hard negatives for fake completeness and missing real data paths.\nMotif: mock_as_real_or_placeholder\nTraining usage: hard_negative\nGraph gold label: needs_more_evidence\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#145\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: timogilvie/wavemill\nThread: timogilvie/wavemill#145\nGraph gold label: needs_more_evidence\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: timogilvie/wavemill#145\nRepo: timogilvie/wavemill\nIssue/PR number: 145\nGraph consistency label: needs_more_evidence\nNodes: 9\nEdges: 11\nNode types: {'link_quality': 3, 'thread': 1, 'repo': 1, 'comment': 1, 'comment_chain': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'chain_has_link_quality': 3, 'repo_has_thread': 1, 'thread_has_comment': 1, 'thread_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: {'not_resolved_or_not_observed': 3, 'thread_has_human_issue_without_fix_context': 2, 'issue_or_pull_request_thread': 1, 'mock_placeholder': 1, 'human_reported_issue_no_linked_fix': 1}\nOutcomes: {'not_resolved_or_not_observed': 6}\nQuality tiers: {'unresolved': 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/timogilvie/wavemill", "source_id": "graph-query-motif_query-14bf256ba592a8bf", "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": "timogilvie/wavemill", "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: timogilvie/wavemill"}, "properties": {"repobilityId": 408254, "scanner": "foundry_dataset", "fingerprint": "1de5f556a0d3c707ff5e66ecc38a3d6cc829e09646a2fbb38819dfe0c0e45c0a", "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": {"data_schema": 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": 13, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 1, "thread_has_comment": 1, "chain_has_link_quality": 3, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 1, "comment_chain_links_commit": 2, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 1}, "node_count": 11, "node_types": {"repo": 1, "commit": 2, "thread": 1, "comment": 1, "fix_outcome": 1, "issue_chain": 1, "link_quality": 3, "comment_chain": 1}, "query_type": "motif_query", "thread_key": "timogilvie/wavemill#123", "issue_number": "123", "quality_tiers": {"weak_supervision": 3}, "repo_full_name": "timogilvie/wavemill", "training_usage": "hard_negative", "source_motif_id": "graph-pattern-motif-thread-3c6ca77425d969ee", "graph_gold_label": "weak_supervision_needs_review", "changed_file_labels": {}}, "text": "Graph query export: Mock, sample, placeholder, or self-attested behavior treated as real\nQuery id: mock_as_real_or_placeholder\nQuery type: motif_query\nIntent: Hard negatives for fake completeness and missing real data paths.\nMotif: mock_as_real_or_placeholder\nTraining usage: hard_negative\nGraph gold label: weak_supervision_needs_review\nRepo: timogilvie/wavemill\nThread: timogilvie/wavemill#123\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: timogilvie/wavemill\nThread: timogilvie/wavemill#123\nGraph gold label: weak_supervision_needs_review\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: timogilvie/wavemill#123\nRepo: timogilvie/wavemill\nIssue/PR number: 123\nGraph consistency label: weak_supervision_needs_review\nNodes: 11\nEdges: 13\nNode types: {'link_quality': 3, 'commit': 2, 'thread': 1, 'repo': 1, 'comment': 1, 'comment_chain': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'chain_has_link_quality': 3, 'comment_chain_links_commit': 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: {'claimed_resolved_unverified': 3, 'data_schema': 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/timogilvie/wavemill", "source_id": "graph-query-motif_query-6fd116725ca0a03f", "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": "timogilvie/wavemill", "source_dataset": "graph_queries/mock_as_real_or_placeholder", "training_usage": "hard_negative"}}}, {"ruleId": "scanner-f26b51743f63e14c", "level": "note", "message": {"text": "Possibly dead Python function: forward"}, "properties": {"repobilityId": "ea414cce7f8e5874", "scanner": "scanner-primary", "fingerprint": "f26b51743f63e14c", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "dspy/claude_cli_lm.py:84"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-5d0a4f7bce83ea6d", "level": "note", "message": {"text": "Possibly dead Python function: routing_metric"}, "properties": {"repobilityId": "229d34c99fe6152a", "scanner": "scanner-primary", "fingerprint": "5d0a4f7bce83ea6d", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "dspy/optimize.py:30"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-db9760a2d6aa6489", "level": "note", "message": {"text": "Possibly dead Python function: prepare_planner_examples"}, "properties": {"repobilityId": "1a60a952603093c5", "scanner": "scanner-primary", "fingerprint": "db9760a2d6aa6489", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "dspy/optimize_stages.py:80"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-91e759bae9760857", "level": "note", "message": {"text": "Possibly dead Python function: prepare_coder_examples"}, "properties": {"repobilityId": "e86d834ef32a684a", "scanner": "scanner-primary", "fingerprint": "91e759bae9760857", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "dspy/optimize_stages.py:106"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-0d32cf779556a696", "level": "note", "message": {"text": "Possibly dead Python function: prepare_reviewer_examples"}, "properties": {"repobilityId": "a0abbc702e09e609", "scanner": "scanner-primary", "fingerprint": "0d32cf779556a696", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "dspy/optimize_stages.py:134"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-47d4ae708a34ba17", "level": "note", "message": {"text": "Possibly dead Python function: optimized_predict"}, "properties": {"repobilityId": "9da6c8e0ad712e7a", "scanner": "scanner-primary", "fingerprint": "47d4ae708a34ba17", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "dspy/evaluate.py:158"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-ccbc7224239c61fa", "level": "note", "message": {"text": "Possibly dead Python function: coder_metric"}, "properties": {"repobilityId": "c4d200641ee99048", "scanner": "scanner-primary", "fingerprint": "ccbc7224239c61fa", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "dspy/evaluators/coder_evaluator.py:274"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-a162581298313c30", "level": "note", "message": {"text": "Possibly dead Python function: routing_metric"}, "properties": {"repobilityId": "229d34c99fe6152a", "scanner": "scanner-primary", "fingerprint": "a162581298313c30", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "dspy/evaluators/model_router_evaluator.py:279"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-795b40051ebdafaf", "level": "note", "message": {"text": "Possibly dead Python function: planner_metric"}, "properties": {"repobilityId": "6acb9eb36432907f", "scanner": "scanner-primary", "fingerprint": "795b40051ebdafaf", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "dspy/evaluators/planner_evaluator.py:300"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-39ca972218717445", "level": "note", "message": {"text": "Possibly dead Python function: extract_placeholders"}, "properties": {"repobilityId": "e0dadf4c2b1b2b6c", "scanner": "scanner-primary", "fingerprint": "39ca972218717445", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "dspy/evaluators/template_utils.py:25"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-119a1c6ec03abbb0", "level": "note", "message": {"text": "Possibly dead Python function: issue_writer_metric"}, "properties": {"repobilityId": "6829c99f5f39f749", "scanner": "scanner-primary", "fingerprint": "119a1c6ec03abbb0", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "dspy/evaluators/issue_writer_evaluator.py:206"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-87bc16e882c6b62c", "level": "note", "message": {"text": "Possibly dead Python function: reviewer_metric"}, "properties": {"repobilityId": "36a0a14a23f5c69e", "scanner": "scanner-primary", "fingerprint": "87bc16e882c6b62c", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "dspy/evaluators/reviewer_evaluator.py:272"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-ef129a781e25825b", "level": "note", "message": {"text": "Possibly dead Python function: eval_judge_metric"}, "properties": {"repobilityId": "4da508331d09c677", "scanner": "scanner-primary", "fingerprint": "ef129a781e25825b", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "dspy/evaluators/eval_judge_evaluator.py:165"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-bead75b0f9233e05", "level": "none", "message": {"text": "No API endpoints detected"}, "properties": {"repobilityId": "0f8bb852027c38f8", "scanner": "scanner-primary", "fingerprint": "bead75b0f9233e05", "layer": "api", "severity": "info", "confidence": 1.0, "tags": ["coverage"]}}, {"ruleId": "scanner-c2bdad1e86925622", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 shared/lib/config.ts:848"}, "properties": {"repobilityId": "3b1e74f05e0fe333", "scanner": "scanner-primary", "fingerprint": "c2bdad1e86925622", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-a047843df2cad68a", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 shared/lib/workflow-cost.ts:231"}, "properties": {"repobilityId": "2d4c5afe59a87dfb", "scanner": "scanner-primary", "fingerprint": "a047843df2cad68a", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-eb5d731f7f6a9158", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 shared/lib/eval-schema.test.ts:39"}, "properties": {"repobilityId": "eda0c3b3dcb66015", "scanner": "scanner-primary", "fingerprint": "eb5d731f7f6a9158", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-fd015d43781de7f6", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 shared/lib/eval-export.test.ts:27"}, "properties": {"repobilityId": "df075c11e8fd4990", "scanner": "scanner-primary", "fingerprint": "fd015d43781de7f6", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-7dd4b3337f25417a", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 shared/lib/permissions-tool.ts:80"}, "properties": {"repobilityId": "9e04bb1255b310cb", "scanner": "scanner-primary", "fingerprint": "7dd4b3337f25417a", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-d7ac5ee224f7cf4f", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 shared/lib/challenge-comparison.test.ts:21"}, "properties": {"repobilityId": "4db12cffb4fd039c", "scanner": "scanner-primary", "fingerprint": "d7ac5ee224f7cf4f", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-bf112b69f2dc67a8", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 shared/lib/eval-summary-printer.ts:162"}, "properties": {"repobilityId": "adde0cbd0bd38b2b", "scanner": "scanner-primary", "fingerprint": "bf112b69f2dc67a8", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b6164209dfdd4593", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 shared/lib/task-descriptor-backfill.test.ts:12"}, "properties": {"repobilityId": "d529fb3a9e1b974d", "scanner": "scanner-primary", "fingerprint": "b6164209dfdd4593", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-0b6872cafdac8ebd", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 shared/lib/sync-config-classifier.test.ts:12"}, "properties": {"repobilityId": "7db4e953587d5484", "scanner": "scanner-primary", "fingerprint": "0b6872cafdac8ebd", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-dabd946d95021867", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 shared/lib/hokusai-router.test.ts:19"}, "properties": {"repobilityId": "28b6a37f5e3d6919", "scanner": "scanner-primary", "fingerprint": "dabd946d95021867", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-04b07888225a88ca", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 shared/lib/workflow-cost.test.ts:34"}, "properties": {"repobilityId": "42a76192cb3a9f6b", "scanner": "scanner-primary", "fingerprint": "04b07888225a88ca", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-d260c172b304d161", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 shared/lib/eval-analysis.ts:52"}, "properties": {"repobilityId": "c86d7185345ca718", "scanner": "scanner-primary", "fingerprint": "d260c172b304d161", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-1b4e16f3fe6f0f14", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 shared/lib/issue-labeler.ts:53"}, "properties": {"repobilityId": "3f79ecb96ceee158", "scanner": "scanner-primary", "fingerprint": "1b4e16f3fe6f0f14", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-2064e5ffb8bd1816", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 shared/lib/initiative-lister.ts:68"}, "properties": {"repobilityId": "59000b3b614c20da", "scanner": "scanner-primary", "fingerprint": "2064e5ffb8bd1816", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-851593477426ca86", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 shared/lib/task-context-analyzer.test.ts:23"}, "properties": {"repobilityId": "67c23f9449687d51", "scanner": "scanner-primary", "fingerprint": "851593477426ca86", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-c73304711a8ccbcb", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 shared/lib/deepseek-launcher.test.ts:29"}, "properties": {"repobilityId": "3068cbc1fe7ad3b9", "scanner": "scanner-primary", "fingerprint": "c73304711a8ccbcb", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-e4d7f8eb4b9fdc99", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 shared/lib/github.test.js:98"}, "properties": {"repobilityId": "419a052c4413e993", "scanner": "scanner-primary", "fingerprint": "e4d7f8eb4b9fdc99", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-657edcfe53a59e9e", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 shared/lib/linear.ts:506"}, "properties": {"repobilityId": "87497fa8ffb0a72e", "scanner": "scanner-primary", "fingerprint": "657edcfe53a59e9e", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-2654a00511b140e6", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 shared/lib/review-orchestrator.ts:114"}, "properties": {"repobilityId": "0e80e629e8274fe1", "scanner": "scanner-primary", "fingerprint": "2654a00511b140e6", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-30e12008d504f7fa", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 shared/lib/concept-page-generator.ts:100"}, "properties": {"repobilityId": "1948ef57353e9755", "scanner": "scanner-primary", "fingerprint": "30e12008d504f7fa", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-c113876786239722", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 shared/lib/difficulty-analyzer.ts:400"}, "properties": {"repobilityId": "94fbbd1c2df0361d", "scanner": "scanner-primary", "fingerprint": "c113876786239722", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-4eac142cdb5e675a", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 shared/lib/issue-expander.ts:213"}, "properties": {"repobilityId": "a85d6663c8356358", "scanner": "scanner-primary", "fingerprint": "4eac142cdb5e675a", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-ed25200392f42b26", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 shared/lib/initiative-decomposer.ts:137"}, "properties": {"repobilityId": "f3e066522a679a53", "scanner": "scanner-primary", "fingerprint": "ed25200392f42b26", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-be1cc5936afcc76a", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 shared/lib/task-packet-validator.test.ts:20"}, "properties": {"repobilityId": "810fc86ec66b1c43", "scanner": "scanner-primary", "fingerprint": "be1cc5936afcc76a", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-d6ae96f3832ca23e", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 shared/lib/check-routing.test.ts:15"}, "properties": {"repobilityId": "f63ae994e2543bc4", "scanner": "scanner-primary", "fingerprint": "d6ae96f3832ca23e", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-66d7bedacde7cee6", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 shared/lib/review-intervention-mapper.ts:154"}, "properties": {"repobilityId": "a1f1a9f0d37b738d", "scanner": "scanner-primary", "fingerprint": "66d7bedacde7cee6", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-83c472c843db2c9c", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 shared/lib/post-completion-hook.ts:194"}, "properties": {"repobilityId": "f83b4003ae32c7ad", "scanner": "scanner-primary", "fingerprint": "83c472c843db2c9c", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-53c9c6b19d87daa6", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 shared/lib/constraint-parser.test.ts:14"}, "properties": {"repobilityId": "d2445d2e8e0c8a0a", "scanner": "scanner-primary", "fingerprint": "53c9c6b19d87daa6", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-7364d4f686d6139b", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 shared/lib/worktree-manager.test.ts:11"}, "properties": {"repobilityId": "fc69ded63236b628", "scanner": "scanner-primary", "fingerprint": "7364d4f686d6139b", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-9c6683e948da2ffb", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 shared/lib/hokusai-queue-drain.ts:243"}, "properties": {"repobilityId": "7ac5f81dd223dfc0", "scanner": "scanner-primary", "fingerprint": "9c6683e948da2ffb", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-4fb32252e7c379b5", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 shared/lib/router-diversity.test.ts:20"}, "properties": {"repobilityId": "00681566500f401d", "scanner": "scanner-primary", "fingerprint": "4fb32252e7c379b5", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-c87563be1fbf029a", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 shared/lib/github.ts:229"}, "properties": {"repobilityId": "cb74702440771fac", "scanner": "scanner-primary", "fingerprint": "c87563be1fbf029a", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-c3085e03f13009b7", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 shared/lib/resource-selection.test.ts:19"}, "properties": {"repobilityId": "e85e6edad672f6e8", "scanner": "scanner-primary", "fingerprint": "c3085e03f13009b7", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-cfe8be453d36809e", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 shared/lib/worktree-manager.ts:53"}, "properties": {"repobilityId": "dcd8a1e7bac215ee", "scanner": "scanner-primary", "fingerprint": "cfe8be453d36809e", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-efa0ed17d7c971d2", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 shared/lib/llm-router.test.ts:30"}, "properties": {"repobilityId": "8d42081b8ea443bc", "scanner": "scanner-primary", "fingerprint": "efa0ed17d7c971d2", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-6f925a5bb033f778", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 shared/lib/project-context-generator.ts:212"}, "properties": {"repobilityId": "599761b080776f6e", "scanner": "scanner-primary", "fingerprint": "6f925a5bb033f778", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-25cd1b79ed17423e", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 shared/lib/subsystem-search.test.ts:14"}, "properties": {"repobilityId": "98a7960e8504e77e", "scanner": "scanner-primary", "fingerprint": "25cd1b79ed17423e", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b1e17e1279acfaf6", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 shared/lib/eval-backfill.test.ts:15"}, "properties": {"repobilityId": "4571924a7addb53d", "scanner": "scanner-primary", "fingerprint": "b1e17e1279acfaf6", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-901a1229db1c89b6", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 shared/lib/tool-runner.ts:23"}, "properties": {"repobilityId": "897a5884e9f336ed", "scanner": "scanner-primary", "fingerprint": "901a1229db1c89b6", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-2bd4f379ed851f18", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 shared/lib/checks.ts:71"}, "properties": {"repobilityId": "9d6754719594587a", "scanner": "scanner-primary", "fingerprint": "2bd4f379ed851f18", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-f4af8dc09190b58a", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 shared/lib/session-timer.ts:25"}, "properties": {"repobilityId": "a9c7ff12a6bd859f", "scanner": "scanner-primary", "fingerprint": "f4af8dc09190b58a", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-7d8b63877d268da3", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 shared/lib/subsystem-updater.ts:66"}, "properties": {"repobilityId": "056a3ab318f9d84e", "scanner": "scanner-primary", "fingerprint": "7d8b63877d268da3", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-3b446134c7e12f36", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 shared/lib/challenge-mode.test.ts:29"}, "properties": {"repobilityId": "38eab4d3af91a5ef", "scanner": "scanner-primary", "fingerprint": "3b446134c7e12f36", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-bff72e9ee899563e", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 shared/lib/hokusai-router-audit.test.ts:27"}, "properties": {"repobilityId": "688b8f4d20a73450", "scanner": "scanner-primary", "fingerprint": "bff72e9ee899563e", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-2d8130d767eba49a", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 shared/lib/context-updater.ts:128"}, "properties": {"repobilityId": "f1679309e5210c91", "scanner": "scanner-primary", "fingerprint": "2d8130d767eba49a", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-90313c9b076f85e2", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 shared/lib/deepseek-provider.ts:133"}, "properties": {"repobilityId": "38dec9edcecf1575", "scanner": "scanner-primary", "fingerprint": "90313c9b076f85e2", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-d320556c7ac6757b", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 shared/lib/permissions-verifier.test.ts:18"}, "properties": {"repobilityId": "04aee30449b4c730", "scanner": "scanner-primary", "fingerprint": "d320556c7ac6757b", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-fc42600de0ca0957", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 shared/lib/cli-prompt.test.ts:34"}, "properties": {"repobilityId": "e6c77938dc18a3f2", "scanner": "scanner-primary", "fingerprint": "fc42600de0ca0957", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-c45e434f45c4ac2a", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 shared/lib/context-linter.test.ts:16"}, "properties": {"repobilityId": "9e8ca9466a35a2fd", "scanner": "scanner-primary", "fingerprint": "c45e434f45c4ac2a", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-8c6294a3002ac873", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 shared/lib/eval-orchestrator.ts:207"}, "properties": {"repobilityId": "495ab2ec3b6f9a55", "scanner": "scanner-primary", "fingerprint": "8c6294a3002ac873", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-146aafb7eb4fe299", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 shared/lib/rule-generator.test.ts:15"}, "properties": {"repobilityId": "c730ec828d4380de", "scanner": "scanner-primary", "fingerprint": "146aafb7eb4fe299", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-60129c76d64c1875", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 shared/lib/repo-context-analyzer.test.ts:29"}, "properties": {"repobilityId": "272a6a036cf546af", "scanner": "scanner-primary", "fingerprint": "60129c76d64c1875", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-91cdd2bcdcd783d3", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 shared/lib/task-dependency-planner.test.ts:17"}, "properties": {"repobilityId": "87836ac6eb67c542", "scanner": "scanner-primary", "fingerprint": "91cdd2bcdcd783d3", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-3859ee48e4f1a417", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 shared/lib/run-verification.ts:109"}, "properties": {"repobilityId": "7cb5df7a9f2608d6", "scanner": "scanner-primary", "fingerprint": "3859ee48e4f1a417", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-05dd977668349bd1", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 shared/lib/llm-cli.ts:1406"}, "properties": {"repobilityId": "747c359171020e39", "scanner": "scanner-primary", "fingerprint": "05dd977668349bd1", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-8300aabddf58d887", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 shared/lib/string-utils.test.js:36"}, "properties": {"repobilityId": "347849317d2d52bf", "scanner": "scanner-primary", "fingerprint": "8300aabddf58d887", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-acef5df0cdde7fd4", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 shared/lib/rule-generator.ts:158"}, "properties": {"repobilityId": "8aa6f73145e642f1", "scanner": "scanner-primary", "fingerprint": "acef5df0cdde7fd4", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-8fd8ab307c29cb98", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 shared/lib/router-exploration.test.ts:23"}, "properties": {"repobilityId": "8bc6f964be8b4697", "scanner": "scanner-primary", "fingerprint": "8fd8ab307c29cb98", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-d53988a3ffb9d3fd", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 shared/lib/task-packet-utils.ts:233"}, "properties": {"repobilityId": "ffc2c261d5b5963f", "scanner": "scanner-primary", "fingerprint": "d53988a3ffb9d3fd", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-a97c5a4904dfaed1", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 shared/lib/stage-aware-router.test.ts:30"}, "properties": {"repobilityId": "ab6baf035afbbd6b", "scanner": "scanner-primary", "fingerprint": "a97c5a4904dfaed1", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-871e5d92593dad72", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 shared/lib/colors.ts:11"}, "properties": {"repobilityId": "8cc5d217235549e5", "scanner": "scanner-primary", "fingerprint": "871e5d92593dad72", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-954b4551855c497b", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 shared/lib/config.test.ts:81"}, "properties": {"repobilityId": "c51f01894ede7366", "scanner": "scanner-primary", "fingerprint": "954b4551855c497b", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-94d6cac97275306d", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 shared/lib/tool-runner.test.ts:206"}, "properties": {"repobilityId": "803027b1c735b1fa", "scanner": "scanner-primary", "fingerprint": "94d6cac97275306d", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-1958023809f85b3f", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 shared/lib/task-difficulty-classifier.test.ts:27"}, "properties": {"repobilityId": "986a1fc23efa430d", "scanner": "scanner-primary", "fingerprint": "1958023809f85b3f", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-c33daf3e56726ac7", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 shared/lib/difficulty-analyzer.test.ts:26"}, "properties": {"repobilityId": "74d9ead2d410db97", "scanner": "scanner-primary", "fingerprint": "c33daf3e56726ac7", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-2da6a1a6386d9845", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 shared/lib/ready-stage.ts:909"}, "properties": {"repobilityId": "00f2b9e19588b75b", "scanner": "scanner-primary", "fingerprint": "2da6a1a6386d9845", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-e26aa037d29a3595", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 shared/lib/review-stats.test.ts:12"}, "properties": {"repobilityId": "f92cfc37c39e3535", "scanner": "scanner-primary", "fingerprint": "e26aa037d29a3595", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-0e70bd5c6f164265", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 shared/lib/issue-expander.test.ts:11"}, "properties": {"repobilityId": "ed8621230821e69f", "scanner": "scanner-primary", "fingerprint": "0e70bd5c6f164265", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-5d559918b16e1953", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 shared/lib/codebase-context-gatherer.ts:87"}, "properties": {"repobilityId": "7f1dcc0cc727cddc", "scanner": "scanner-primary", "fingerprint": "5d559918b16e1953", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-a4d76d76dc30ed4e", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 shared/lib/challenge-scheduler.test.ts:25"}, "properties": {"repobilityId": "c2482aef48e79771", "scanner": "scanner-primary", "fingerprint": "a4d76d76dc30ed4e", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-fa57140d646f228a", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 shared/lib/plan-prompt-selector.ts:20"}, "properties": {"repobilityId": "332be64a682e4ab5", "scanner": "scanner-primary", "fingerprint": "fa57140d646f228a", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-2bc993a6b33b12fa", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 shared/lib/pr-metadata.test.ts:86"}, "properties": {"repobilityId": "8a27f73f9419b057", "scanner": "scanner-primary", "fingerprint": "2bc993a6b33b12fa", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-0b97a8c9546a8da7", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 shared/lib/review-context-gatherer.test.ts:15"}, "properties": {"repobilityId": "c6d429260c7ca8d8", "scanner": "scanner-primary", "fingerprint": "0b97a8c9546a8da7", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-ead04b7c7b79f889", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 shared/lib/eval-formatter.ts:65"}, "properties": {"repobilityId": "a80e6e3bbdf872b1", "scanner": "scanner-primary", "fingerprint": "ead04b7c7b79f889", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-184a9f5ccdd7d8fa", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 shared/lib/hokusai-adapter.test.ts:15"}, "properties": {"repobilityId": "26d9ed5d7adbc610", "scanner": "scanner-primary", "fingerprint": "184a9f5ccdd7d8fa", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-f18b9eae0eb92df1", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 shared/lib/issue-tool.ts:60"}, "properties": {"repobilityId": "6a604483290ac0b0", "scanner": "scanner-primary", "fingerprint": "f18b9eae0eb92df1", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-085831894224ad78", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 shared/lib/eval.ts:573"}, "properties": {"repobilityId": "d0e433d3e6582907", "scanner": "scanner-primary", "fingerprint": "085831894224ad78", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-efec60a223b473f4", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 shared/lib/eval-aggregator.test.ts:12"}, "properties": {"repobilityId": "d833c83ca4b98240", "scanner": "scanner-primary", "fingerprint": "efec60a223b473f4", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-a8df9e6105033f6b", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 shared/lib/eval-deduplication.test.ts:19"}, "properties": {"repobilityId": "1bba336dbd3cbaf7", "scanner": "scanner-primary", "fingerprint": "a8df9e6105033f6b", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-efabc21e42aefadb", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 shared/lib/constraint-storage.test.ts:24"}, "properties": {"repobilityId": "86813d7b7db3a3b3", "scanner": "scanner-primary", "fingerprint": "efabc21e42aefadb", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-5b3ad02a9de45127", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 shared/lib/eval-aggregator.ts:223"}, "properties": {"repobilityId": "28a1a3967e0ae406", "scanner": "scanner-primary", "fingerprint": "5b3ad02a9de45127", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-ea8686a41cbf7daa", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 shared/lib/workflow-router.test.ts:20"}, "properties": {"repobilityId": "da7f93528155f2b5", "scanner": "scanner-primary", "fingerprint": "ea8686a41cbf7daa", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-7361639efc3d7ac3", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 shared/lib/validation-formatter.ts:29"}, "properties": {"repobilityId": "f4b76a983a488f10", "scanner": "scanner-primary", "fingerprint": "7361639efc3d7ac3", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-4791905841d8fe45", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 shared/lib/constraint-validator.test.ts:19"}, "properties": {"repobilityId": "295bdd20b2fb21b1", "scanner": "scanner-primary", "fingerprint": "4791905841d8fe45", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-79d418c38f500800", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 shared/lib/session-adapters.ts:71"}, "properties": {"repobilityId": "003ed39e3a683cca", "scanner": "scanner-primary", "fingerprint": "79d418c38f500800", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-fb41b7e362c65d29", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 shared/lib/post-completion-hook.test.ts:23"}, "properties": {"repobilityId": "3a2d1bad3561d9a5", "scanner": "scanner-primary", "fingerprint": "fb41b7e362c65d29", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-622948b3f1b94c8c", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 shared/lib/config-sync.test.ts:20"}, "properties": {"repobilityId": "3e8981fa788a53c6", "scanner": "scanner-primary", "fingerprint": "622948b3f1b94c8c", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-47690f37ab74e396", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 shared/lib/eval-persistence.test.ts:25"}, "properties": {"repobilityId": "ad91f6770fe52520", "scanner": "scanner-primary", "fingerprint": "47690f37ab74e396", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-54978b11f7c76df3", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 shared/lib/route-batch.test.ts:21"}, "properties": {"repobilityId": "aaeaddd21c695365", "scanner": "scanner-primary", "fingerprint": "54978b11f7c76df3", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-8237bf8dc73b1ae2", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 codex/tests/git.test.js:10"}, "properties": {"repobilityId": "6a82c176c63290b1", "scanner": "scanner-primary", "fingerprint": "8237bf8dc73b1ae2", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-9c0e70a791c997ed", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 codex/tests/workflow-state.test.js:29"}, "properties": {"repobilityId": "af1dd9a9bf828b47", "scanner": "scanner-primary", "fingerprint": "9c0e70a791c997ed", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-23ec2722b605e238", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 codex/src/commands/start-plan.js:43"}, "properties": {"repobilityId": "2515e614dd418c10", "scanner": "scanner-primary", "fingerprint": "23ec2722b605e238", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-026bdb84139e1aed", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 codex/src/commands/backlog.js:7"}, "properties": {"repobilityId": "d4c637987a9291a6", "scanner": "scanner-primary", "fingerprint": "026bdb84139e1aed", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-0eded5f6a372a821", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 codex/src/commands/start-bugfix.js:43"}, "properties": {"repobilityId": "6d230cb0aff5c0b7", "scanner": "scanner-primary", "fingerprint": "0eded5f6a372a821", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-dc4baf3ce9a7dc25", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 codex/src/commands/start-workflow.js:44"}, "properties": {"repobilityId": "1e86f5d0a5d5898f", "scanner": "scanner-primary", "fingerprint": "dc4baf3ce9a7dc25", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-5a3a3b0fe2427a9b", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 codex/src/commands/workflow.js:8"}, "properties": {"repobilityId": "aaac2504f0d18581", "scanner": "scanner-primary", "fingerprint": "5a3a3b0fe2427a9b", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-464b573b6f8cf387", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 codex/src/commands/generate-doc.js:39"}, "properties": {"repobilityId": "4d8bd95ba63ac61d", "scanner": "scanner-primary", "fingerprint": "464b573b6f8cf387", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b75c95b8173c9ca7", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tools/context-check.ts:158"}, "properties": {"repobilityId": "f4fd451a87a1dec9", "scanner": "scanner-primary", "fingerprint": "b75c95b8173c9ca7", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-10579bed6c7b164a", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tools/check-drift.ts:74"}, "properties": {"repobilityId": "a501f3fdc406eb55", "scanner": "scanner-primary", "fingerprint": "10579bed6c7b164a", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-99c4040a2fb2e3b2", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tools/eval-workflow.ts:60"}, "properties": {"repobilityId": "44cc9c28c1c63d0d", "scanner": "scanner-primary", "fingerprint": "99c4040a2fb2e3b2", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-c278d1ff234a87ca", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tools/get-operating-mode.ts:88"}, "properties": {"repobilityId": "ce91ac365fb96671", "scanner": "scanner-primary", "fingerprint": "c278d1ff234a87ca", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-d608aed6e0829459", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tools/quota-control.ts:130"}, "properties": {"repobilityId": "33949c73ed744594", "scanner": "scanner-primary", "fingerprint": "d608aed6e0829459", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-3190b9327ee2dd0f", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tools/job-tracker.ts:49"}, "properties": {"repobilityId": "2b352d6f7d067678", "scanner": "scanner-primary", "fingerprint": "3190b9327ee2dd0f", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-64615a8f1ebf943c", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tools/backfill-stage-scores.ts:193"}, "properties": {"repobilityId": "17a239104d17aec8", "scanner": "scanner-primary", "fingerprint": "64615a8f1ebf943c", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-edc81710df37fefe", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tools/analyze-challenges.ts:27"}, "properties": {"repobilityId": "d9c88a542081e206", "scanner": "scanner-primary", "fingerprint": "edc81710df37fefe", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-0bdd00f7076da511", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tools/show-hokusai-ledger.ts:41"}, "properties": {"repobilityId": "7f3a26886baa4705", "scanner": "scanner-primary", "fingerprint": "0bdd00f7076da511", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-5571a8d8ab586792", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tools/backfill-rubric-eval-records.ts:23"}, "properties": {"repobilityId": "2e2b26c50e804dc3", "scanner": "scanner-primary", "fingerprint": "5571a8d8ab586792", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-4c528159f9e079ff", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tools/backfill-workflow-cost.ts:26"}, "properties": {"repobilityId": "8c4282beb0c37619", "scanner": "scanner-primary", "fingerprint": "4c528159f9e079ff", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-4e8eb31b2157b967", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tools/set-issue-state.ts:29"}, "properties": {"repobilityId": "772469b39523575a", "scanner": "scanner-primary", "fingerprint": "4e8eb31b2157b967", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-1e874cfc0724ac33", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tools/stage-result-cli.ts:61"}, "properties": {"repobilityId": "463217d5d6a056c9", "scanner": "scanner-primary", "fingerprint": "1e874cfc0724ac33", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-d68f63609b17f98a", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tools/ready-watchdog.ts:170"}, "properties": {"repobilityId": "4003db2e8042dc54", "scanner": "scanner-primary", "fingerprint": "d68f63609b17f98a", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-e92398efd59f4c7a", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tools/linear-retry-drain.ts:48"}, "properties": {"repobilityId": "2fd188ecdd74d5f5", "scanner": "scanner-primary", "fingerprint": "e92398efd59f4c7a", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-c0214a747c2033cb", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tools/sync-config.ts:39"}, "properties": {"repobilityId": "0308a21f429830cb", "scanner": "scanner-primary", "fingerprint": "c0214a747c2033cb", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-ae8f5c438bf3eb31", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tools/registry.ts:34"}, "properties": {"repobilityId": "39c89eda14f33eb4", "scanner": "scanner-primary", "fingerprint": "ae8f5c438bf3eb31", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-de611bfedc2b9ff5", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tools/resolve-challenge-task.ts:79"}, "properties": {"repobilityId": "c00f64aee4a2e133", "scanner": "scanner-primary", "fingerprint": "de611bfedc2b9ff5", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-17b72bbeb33bed50", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tools/update-issue.ts:36"}, "properties": {"repobilityId": "4b903eb861ee3324", "scanner": "scanner-primary", "fingerprint": "17b72bbeb33bed50", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-110eee37a5cc6a04", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tools/validate-evals.ts:52"}, "properties": {"repobilityId": "ae229666c53408d0", "scanner": "scanner-primary", "fingerprint": "110eee37a5cc6a04", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-4d489ceaf67b48ef", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tools/backfill-stage-attribution.ts:181"}, "properties": {"repobilityId": "fea71a1bd4af267d", "scanner": "scanner-primary", "fingerprint": "4d489ceaf67b48ef", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-f90893eb39d9ad83", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tools/review-pr.ts:36"}, "properties": {"repobilityId": "b0bdbe4f4573403a", "scanner": "scanner-primary", "fingerprint": "f90893eb39d9ad83", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-42ff7bf6cfb6fc65", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tools/ready.ts:162"}, "properties": {"repobilityId": "74b41cae97555cc1", "scanner": "scanner-primary", "fingerprint": "42ff7bf6cfb6fc65", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-f424ccfead89e1a1", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tools/hokusai-router-audit.ts:58"}, "properties": {"repobilityId": "7ce505ac0d44f8b7", "scanner": "scanner-primary", "fingerprint": "f424ccfead89e1a1", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-4b8545aa1bae5e5f", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tools/tend.ts:57"}, "properties": {"repobilityId": "cce93a19a73b3ccb", "scanner": "scanner-primary", "fingerprint": "4b8545aa1bae5e5f", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-fea50ffb3df065c2", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tools/review-stats.ts:74"}, "properties": {"repobilityId": "6b1f3ad3c9103379", "scanner": "scanner-primary", "fingerprint": "fea50ffb3df065c2", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-2948af9ad1a3ce2f", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tools/recost-opus-4-6.ts:182"}, "properties": {"repobilityId": "3a3fa60757ac60d5", "scanner": "scanner-primary", "fingerprint": "2948af9ad1a3ce2f", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-c7ae578264d67d8f", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tools/hokusai-manage.ts:50"}, "properties": {"repobilityId": "47bf222b447eafe2", "scanner": "scanner-primary", "fingerprint": "c7ae578264d67d8f", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-64ffa36c9ce8b9cc", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tools/check-cross-pr-reverts.ts:152"}, "properties": {"repobilityId": "179be59e1e8bb3d8", "scanner": "scanner-primary", "fingerprint": "64ffa36c9ce8b9cc", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-0ac22e409d35e7fc", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tools/validate-constraints.ts:72"}, "properties": {"repobilityId": "0f3e111a379e8912", "scanner": "scanner-primary", "fingerprint": "0ac22e409d35e7fc", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-978af04281d264bb", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tools/backfill-task-descriptors.ts:93"}, "properties": {"repobilityId": "29b2827d829f02e6", "scanner": "scanner-primary", "fingerprint": "978af04281d264bb", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-00a83dc43a30791f", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tools/run-wavemill-router-eval.ts:62"}, "properties": {"repobilityId": "95514e49b1990788", "scanner": "scanner-primary", "fingerprint": "00a83dc43a30791f", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-0f12cb8cd8f376df", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tools/session.ts:22"}, "properties": {"repobilityId": "6fdfd9a24d7b292c", "scanner": "scanner-primary", "fingerprint": "0f12cb8cd8f376df", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-24259e193ea1818e", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tools/gather-review-context.ts:33"}, "properties": {"repobilityId": "68865ee234f3b454", "scanner": "scanner-primary", "fingerprint": "24259e193ea1818e", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-97042a094118f45e", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tools/generate-permissions.ts:46"}, "properties": {"repobilityId": "4c0054bec6113364", "scanner": "scanner-primary", "fingerprint": "97042a094118f45e", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-eb22faf18464aa40", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tools/context-init.ts:11"}, "properties": {"repobilityId": "3f7701dc0fe37997", "scanner": "scanner-primary", "fingerprint": "eb22faf18464aa40", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-9a769c74e4b60e1e", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tools/context-search.ts:35"}, "properties": {"repobilityId": "7ddb4c37e571dff7", "scanner": "scanner-primary", "fingerprint": "9a769c74e4b60e1e", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-268c1dfd2a290836", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 tools/plan-initiative.ts:107"}, "properties": {"repobilityId": "91c1f8b8bc15cf45", "scanner": "scanner-primary", "fingerprint": "268c1dfd2a290836", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-0049520039d79f54", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tools/plan-initiative.ts:63"}, "properties": {"repobilityId": "f6759ecefa10f292", "scanner": "scanner-primary", "fingerprint": "0049520039d79f54", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-48975033b490186c", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tools/compact-project-context.ts:46"}, "properties": {"repobilityId": "471cb884a1d5c74f", "scanner": "scanner-primary", "fingerprint": "48975033b490186c", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-5c735e9e27657a68", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tools/list-prs.ts:112"}, "properties": {"repobilityId": "4c46d355a110b07c", "scanner": "scanner-primary", "fingerprint": "5c735e9e27657a68", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-de7db8824be9f079", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tools/check-review-setup.ts:199"}, "properties": {"repobilityId": "96db693766fc50d7", "scanner": "scanner-primary", "fingerprint": "de7db8824be9f079", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-3915a86f7adbd500", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tools/generate-concept.ts:35"}, "properties": {"repobilityId": "da9b1bb49fba5f83", "scanner": "scanner-primary", "fingerprint": "3915a86f7adbd500", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-25414baae47e1884", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tools/deduplicate-evals.ts:60"}, "properties": {"repobilityId": "9046c7f247875a5e", "scanner": "scanner-primary", "fingerprint": "25414baae47e1884", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-55107232fdb15072", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tools/init-github-labels.ts:24"}, "properties": {"repobilityId": "3f7e7cf727fe92dc", "scanner": "scanner-primary", "fingerprint": "55107232fdb15072", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-a0ce2c09ba3cd2e9", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tools/generate-constraint-rules.ts:42"}, "properties": {"repobilityId": "35055d8954a6e76b", "scanner": "scanner-primary", "fingerprint": "a0ce2c09ba3cd2e9", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-8116b723cc71f74d", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tools/list-backlog-json.ts:29"}, "properties": {"repobilityId": "da9eba7510fc0d68", "scanner": "scanner-primary", "fingerprint": "8116b723cc71f74d", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-acfb5cf2d058650a", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tools/get-backlog.ts:9"}, "properties": {"repobilityId": "11c2cb984a508afd", "scanner": "scanner-primary", "fingerprint": "acfb5cf2d058650a", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-52ddc64529a5d854", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tools/smoke-deepseek.ts:82"}, "properties": {"repobilityId": "4224f6671decf373", "scanner": "scanner-primary", "fingerprint": "52ddc64529a5d854", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-095f5c4bee0e1305", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tools/controller-ready.ts:26"}, "properties": {"repobilityId": "6d56ec51bd61c872", "scanner": "scanner-primary", "fingerprint": "095f5c4bee0e1305", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-84aeafa85130d895", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tools/backfill-manifest-refs.ts:36"}, "properties": {"repobilityId": "9d4850d0440e0add", "scanner": "scanner-primary", "fingerprint": "84aeafa85130d895", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-43ea59bd447b4d14", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tools/add-issue-label.ts:45"}, "properties": {"repobilityId": "6bdb33cc361ed3c5", "scanner": "scanner-primary", "fingerprint": "43ea59bd447b4d14", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-64cb8b8093ceb2ed", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tools/migrate-eval-corpus.ts:62"}, "properties": {"repobilityId": "9f4ffc7bf9019547", "scanner": "scanner-primary", "fingerprint": "64cb8b8093ceb2ed", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-8ad047a4e624468b", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tools/promote.ts:31"}, "properties": {"repobilityId": "643ece491956a69a", "scanner": "scanner-primary", "fingerprint": "8ad047a4e624468b", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-d335357ae5ecb8d2", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tools/classify-packet.ts:23"}, "properties": {"repobilityId": "70e748f16fba3453", "scanner": "scanner-primary", "fingerprint": "d335357ae5ecb8d2", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-33c12ff12211e6be", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tools/generate-claude-permissions.ts:39"}, "properties": {"repobilityId": "6dc1301c3a676357", "scanner": "scanner-primary", "fingerprint": "33c12ff12211e6be", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-3508e8382e16dba2", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tools/init-labels.ts:38"}, "properties": {"repobilityId": "93cb3f8f05087850", "scanner": "scanner-primary", "fingerprint": "3508e8382e16dba2", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-20ab56f3c35f9a46", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tools/verify-permissions.ts:33"}, "properties": {"repobilityId": "698036128bf28ce8", "scanner": "scanner-primary", "fingerprint": "20ab56f3c35f9a46", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-25c8166ce2b4e246", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tools/expand-issue.ts:68"}, "properties": {"repobilityId": "8a740b0de47ea338", "scanner": "scanner-primary", "fingerprint": "25c8166ce2b4e246", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-cc5fbffd60bff293", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tools/resolve-runtime-resource.ts:42"}, "properties": {"repobilityId": "86416acd579c2e5b", "scanner": "scanner-primary", "fingerprint": "cc5fbffd60bff293", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-4282fccfd6d11ba1", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tools/get-issue-state.ts:26"}, "properties": {"repobilityId": "c50e2354bad649c9", "scanner": "scanner-primary", "fingerprint": "4282fccfd6d11ba1", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-5827e0c46389037e", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tools/backfill-workflow-cost-status.ts:101"}, "properties": {"repobilityId": "111e33cd9ed2cc89", "scanner": "scanner-primary", "fingerprint": "5827e0c46389037e", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-4674042f66adbdc0", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tools/scaffold-migrate-dryrun.ts:76"}, "properties": {"repobilityId": "9f8df9226b357e44", "scanner": "scanner-primary", "fingerprint": "4674042f66adbdc0", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-c6097816785471da", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tools/check-routing.ts:31"}, "properties": {"repobilityId": "4060bb94930971f9", "scanner": "scanner-primary", "fingerprint": "c6097816785471da", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-9cd416e039ac3ff1", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tools/router-diversity-report.ts:37"}, "properties": {"repobilityId": "0937c7bb246bdd35", "scanner": "scanner-primary", "fingerprint": "9cd416e039ac3ff1", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-77160add4c4015b0", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tools/merge-queue-select.ts:25"}, "properties": {"repobilityId": "9699739b5b0f7314", "scanner": "scanner-primary", "fingerprint": "77160add4c4015b0", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-967fd41ed944b7bf", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tools/route-tasks.ts:223"}, "properties": {"repobilityId": "e880a375c34b42eb", "scanner": "scanner-primary", "fingerprint": "967fd41ed944b7bf", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-0c2650eec2c8ba23", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tools/review-changes.ts:135"}, "properties": {"repobilityId": "519d5a611f849e26", "scanner": "scanner-primary", "fingerprint": "0c2650eec2c8ba23", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-f63290349b50ca52", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tools/set-issues-state.ts:32"}, "properties": {"repobilityId": "10abed0f829dcd35", "scanner": "scanner-primary", "fingerprint": "f63290349b50ca52", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-da103b8bddbc3e97", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tools/backfill-pricing-snapshot.ts:130"}, "properties": {"repobilityId": "25f3dbed48679377", "scanner": "scanner-primary", "fingerprint": "da103b8bddbc3e97", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-5a06de3bb6928673", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tools/generate-codex-permissions.ts:33"}, "properties": {"repobilityId": "df4c4c6469f93b1b", "scanner": "scanner-primary", "fingerprint": "5a06de3bb6928673", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-0e53c1fadc756a23", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tools/aggregate-evals.ts:99"}, "properties": {"repobilityId": "7781d3894c04596f", "scanner": "scanner-primary", "fingerprint": "0e53c1fadc756a23", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-726b94875de008e6", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tools/route-task.ts:130"}, "properties": {"repobilityId": "0d2613f3c7b7add6", "scanner": "scanner-primary", "fingerprint": "726b94875de008e6", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-653f964c45f87814", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tools/compare-prs.ts:90"}, "properties": {"repobilityId": "0141da83011aeede", "scanner": "scanner-primary", "fingerprint": "653f964c45f87814", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-7b642110ed640686", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tools/check-config-version.ts:125"}, "properties": {"repobilityId": "978252ce843f95ca", "scanner": "scanner-primary", "fingerprint": "7b642110ed640686", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-730fe50e518e4143", "level": "warning", "message": {"text": "Privileged port 11 in use"}, "properties": {"repobilityId": "5b3038c67fabb4c8", "scanner": "scanner-primary", "fingerprint": "730fe50e518e4143", "layer": "network", "severity": "medium", "confidence": 1.0, "tags": ["security", "ports"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "tests/ready-log-spam.test.sh"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-85c9d1b3dbcec78c", "level": "warning", "message": {"text": "Privileged port 10 in use"}, "properties": {"repobilityId": "735372d6b5594915", "scanner": "scanner-primary", "fingerprint": "85c9d1b3dbcec78c", "layer": "network", "severity": "medium", "confidence": 1.0, "tags": ["security", "ports"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "tests/stage-state.test.sh"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-0247719dab55ec26", "level": "warning", "message": {"text": "Privileged port 5 in use"}, "properties": {"repobilityId": "a8f80b4866464301", "scanner": "scanner-primary", "fingerprint": "0247719dab55ec26", "layer": "network", "severity": "medium", "confidence": 1.0, "tags": ["security", "ports"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "tests/stage-state.test.sh"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-02ea3925226f464d", "level": "warning", "message": {"text": "Privileged port 9 in use"}, "properties": {"repobilityId": "31590a6ba3409390", "scanner": "scanner-primary", "fingerprint": "02ea3925226f464d", "layer": "network", "severity": "medium", "confidence": 1.0, "tags": ["security", "ports"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "tests/stage-state.test.sh"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-f91cdbe6e86212ac", "level": "warning", "message": {"text": "Privileged port 12 in use"}, "properties": {"repobilityId": "65e7eefa33f2def4", "scanner": "scanner-primary", "fingerprint": "f91cdbe6e86212ac", "layer": "network", "severity": "medium", "confidence": 1.0, "tags": ["security", "ports"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "tests/wavemill-status.test.sh"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-d0bb55d8279785db", "level": "warning", "message": {"text": "Privileged port 30 in use"}, "properties": {"repobilityId": "54f172e7d16fc662", "scanner": "scanner-primary", "fingerprint": "d0bb55d8279785db", "layer": "network", "severity": "medium", "confidence": 1.0, "tags": ["security", "ports"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "tests/wavemill-status.test.sh"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-355e0374c73aa996", "level": "warning", "message": {"text": "Privileged port 18 in use"}, "properties": {"repobilityId": "2d7b5e7d9c158e43", "scanner": "scanner-primary", "fingerprint": "355e0374c73aa996", "layer": "network", "severity": "medium", "confidence": 1.0, "tags": ["security", "ports"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "tests/wavemill-status.test.sh"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-96d20c7c0e1d35ce", "level": "warning", "message": {"text": "Privileged port 16 in use"}, "properties": {"repobilityId": "d31009168c502ace", "scanner": "scanner-primary", "fingerprint": "96d20c7c0e1d35ce", "layer": "network", "severity": "medium", "confidence": 1.0, "tags": ["security", "ports"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "tests/wavemill-status.test.sh"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-e14eee234d76ac7a", "level": "warning", "message": {"text": "Privileged port 14 in use"}, "properties": {"repobilityId": "2dbd4b719a1412ff", "scanner": "scanner-primary", "fingerprint": "e14eee234d76ac7a", "layer": "network", "severity": "medium", "confidence": 1.0, "tags": ["security", "ports"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "tests/launch-ready-phase.test.sh"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-08893039810a1e41", "level": "warning", "message": {"text": "Privileged port 55 in use"}, "properties": {"repobilityId": "51a768b3e1831ac0", "scanner": "scanner-primary", "fingerprint": "08893039810a1e41", "layer": "network", "severity": "medium", "confidence": 1.0, "tags": ["security", "ports"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "tests/launch-ready-phase.test.sh"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-bcc15ae61d1923ab", "level": "warning", "message": {"text": "Privileged port 15 in use"}, "properties": {"repobilityId": "3340f9a170f285cd", "scanner": "scanner-primary", "fingerprint": "bcc15ae61d1923ab", "layer": "network", "severity": "medium", "confidence": 1.0, "tags": ["security", "ports"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "shared/lib/wavemill-status.sh"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-d3355271f2fda925", "level": "warning", "message": {"text": "Privileged port 23 in use"}, "properties": {"repobilityId": "a1230e3dfc4becfa", "scanner": "scanner-primary", "fingerprint": "d3355271f2fda925", "layer": "network", "severity": "medium", "confidence": 1.0, "tags": ["security", "ports"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "shared/lib/wavemill-eval-report.sh"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-f88e3b1c3ea397d4", "level": "warning", "message": {"text": "Privileged port 59 in use"}, "properties": {"repobilityId": "6c14a9dab4958e92", "scanner": "scanner-primary", "fingerprint": "f88e3b1c3ea397d4", "layer": "network", "severity": "medium", "confidence": 1.0, "tags": ["security", "ports"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "shared/lib/wavemill-eval-report.sh"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-724e237aefffc5bc", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in shared/lib/ready-migration-base.ts:1"}, "properties": {"repobilityId": "b555e02fdf38e18f", "scanner": "scanner-primary", "fingerprint": "724e237aefffc5bc", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "shared/lib/ready-migration-base.ts"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-a5da220fc7ca126f", "level": "error", "message": {"text": "Insecure pattern 'eval_used' in shared/lib/eval-schema.json:51"}, "properties": {"repobilityId": "6307f6b2665ceaef", "scanner": "scanner-primary", "fingerprint": "a5da220fc7ca126f", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["owasp", "eval_used"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "shared/lib/eval-schema.json"}, "region": {"startLine": 51}}}]}, {"ruleId": "scanner-2785b2ae72840551", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in shared/lib/ready-watchdog.ts:4"}, "properties": {"repobilityId": "a7807f13d684103d", "scanner": "scanner-primary", "fingerprint": "2785b2ae72840551", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "shared/lib/ready-watchdog.ts"}, "region": {"startLine": 4}}}]}, {"ruleId": "scanner-531eaa2e2704ecf9", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in shared/lib/llm-cli.test.ts:2"}, "properties": {"repobilityId": "7b3205079021a8f6", "scanner": "scanner-primary", "fingerprint": "531eaa2e2704ecf9", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "shared/lib/llm-cli.test.ts"}, "region": {"startLine": 2}}}]}, {"ruleId": "scanner-d4a8e2c051798a52", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in shared/lib/tend-controller.test.ts:2"}, "properties": {"repobilityId": "0ed046fd7e03d3c0", "scanner": "scanner-primary", "fingerprint": "d4a8e2c051798a52", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "shared/lib/tend-controller.test.ts"}, "region": {"startLine": 2}}}]}, {"ruleId": "scanner-ab1f59991917d7b2", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in shared/lib/resource-selection.test.ts:2"}, "properties": {"repobilityId": "49d4ba855f603cae", "scanner": "scanner-primary", "fingerprint": "ab1f59991917d7b2", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "shared/lib/resource-selection.test.ts"}, "region": {"startLine": 2}}}]}, {"ruleId": "scanner-be012b66c8cfacb5", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in shared/lib/context-updater.ts:2"}, "properties": {"repobilityId": "a1fc4cc4085f6712", "scanner": "scanner-primary", "fingerprint": "be012b66c8cfacb5", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "shared/lib/context-updater.ts"}, "region": {"startLine": 2}}}]}, {"ruleId": "scanner-54a107617d350ddf", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in shared/lib/cli-prompt.test.ts:2"}, "properties": {"repobilityId": "3c77342d3e09c703", "scanner": "scanner-primary", "fingerprint": "54a107617d350ddf", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "shared/lib/cli-prompt.test.ts"}, "region": {"startLine": 2}}}]}, {"ruleId": "scanner-c78df30fd8a88b31", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in shared/lib/context-linter.test.ts:5"}, "properties": {"repobilityId": "038e6655821fe52c", "scanner": "scanner-primary", "fingerprint": "c78df30fd8a88b31", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "shared/lib/context-linter.test.ts"}, "region": {"startLine": 5}}}]}, {"ruleId": "scanner-554a3ec55756c35a", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in shared/lib/run-verification.ts:22"}, "properties": {"repobilityId": "26f0367780bfacaf", "scanner": "scanner-primary", "fingerprint": "554a3ec55756c35a", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "shared/lib/run-verification.ts"}, "region": {"startLine": 22}}}]}, {"ruleId": "scanner-4212538a38f87779", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in shared/lib/llm-cli.ts:18"}, "properties": {"repobilityId": "964205bef252aad4", "scanner": "scanner-primary", "fingerprint": "4212538a38f87779", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "shared/lib/llm-cli.ts"}, "region": {"startLine": 18}}}]}, {"ruleId": "scanner-634c46de6375bbda", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in shared/lib/rule-generator.ts:116"}, "properties": {"repobilityId": "a5a294418eb47261", "scanner": "scanner-primary", "fingerprint": "634c46de6375bbda", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "shared/lib/rule-generator.ts"}, "region": {"startLine": 116}}}]}, {"ruleId": "scanner-f70dc9e21f917d08", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in shared/lib/pr-comparison.ts:1"}, "properties": {"repobilityId": "f830755a6838f36e", "scanner": "scanner-primary", "fingerprint": "f70dc9e21f917d08", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "shared/lib/pr-comparison.ts"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-67b6473ee7a056a5", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in shared/lib/ready-stage.ts:33"}, "properties": {"repobilityId": "fcfadc28a2c08487", "scanner": "scanner-primary", "fingerprint": "67b6473ee7a056a5", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "shared/lib/ready-stage.ts"}, "region": {"startLine": 33}}}]}, {"ruleId": "scanner-b73db76bf5ed3f0c", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in shared/lib/evals-paths.test.ts:2"}, "properties": {"repobilityId": "d7e2f82ad623d7b0", "scanner": "scanner-primary", "fingerprint": "b73db76bf5ed3f0c", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "shared/lib/evals-paths.test.ts"}, "region": {"startLine": 2}}}]}, {"ruleId": "scanner-ae5cbfec8ddaba84", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in shared/lib/patch-size-validator.ts:11"}, "properties": {"repobilityId": "3738d9824449e507", "scanner": "scanner-primary", "fingerprint": "ae5cbfec8ddaba84", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "shared/lib/patch-size-validator.ts"}, "region": {"startLine": 11}}}]}, {"ruleId": "scanner-ae6872bc08e42d21", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in shared/lib/review-context-gatherer.test.ts:8"}, "properties": {"repobilityId": "31adbb43ea721b81", "scanner": "scanner-primary", "fingerprint": "ae6872bc08e42d21", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "shared/lib/review-context-gatherer.test.ts"}, "region": {"startLine": 8}}}]}, {"ruleId": "scanner-3810489b57ae0dda", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in shared/lib/constraint-validator.ts:9"}, "properties": {"repobilityId": "b0ccfb28957b0fd7", "scanner": "scanner-primary", "fingerprint": "3810489b57ae0dda", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "shared/lib/constraint-validator.ts"}, "region": {"startLine": 9}}}]}, {"ruleId": "scanner-702375de3fdacf74", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in shared/lib/operating-mode.test.ts:2"}, "properties": {"repobilityId": "423df16e38ff97b6", "scanner": "scanner-primary", "fingerprint": "702375de3fdacf74", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "shared/lib/operating-mode.test.ts"}, "region": {"startLine": 2}}}]}, {"ruleId": "scanner-116bdf6757b1b58a", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in shared/lib/deepseek-smoke.ts:1"}, "properties": {"repobilityId": "d0b7e9fcbc60b137", "scanner": "scanner-primary", "fingerprint": "116bdf6757b1b58a", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "shared/lib/deepseek-smoke.ts"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-9734f7924a666642", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in shared/lib/job-tracker.test.ts:6"}, "properties": {"repobilityId": "c0d63723c0685812", "scanner": "scanner-primary", "fingerprint": "9734f7924a666642", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "shared/lib/job-tracker.test.ts"}, "region": {"startLine": 6}}}]}, {"ruleId": "scanner-a2519d12f33dabe7", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in shared/lib/shell-utils.ts:8"}, "properties": {"repobilityId": "e2e30b6e3460a374", "scanner": "scanner-primary", "fingerprint": "a2519d12f33dabe7", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "shared/lib/shell-utils.ts"}, "region": {"startLine": 8}}}]}, {"ruleId": "scanner-9c5af38ea23db17f", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in shared/lib/cross-pr-revert-detector.test.ts:2"}, "properties": {"repobilityId": "e5a1a0bea31784b5", "scanner": "scanner-primary", "fingerprint": "9c5af38ea23db17f", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "shared/lib/cross-pr-revert-detector.test.ts"}, "region": {"startLine": 2}}}]}, {"ruleId": "scanner-fa14f165556c0a7a", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in shared/lib/quota-state.test.ts:2"}, "properties": {"repobilityId": "21b8b79f8d46fe96", "scanner": "scanner-primary", "fingerprint": "fa14f165556c0a7a", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "shared/lib/quota-state.test.ts"}, "region": {"startLine": 2}}}]}, {"ruleId": "scanner-66b56977831de08c", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in shared/lib/resource-adapters/tool-env-adapter.ts:3"}, "properties": {"repobilityId": "b62aea70dfd12e26", "scanner": "scanner-primary", "fingerprint": "66b56977831de08c", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "shared/lib/resource-adapters/tool-env-adapter.ts"}, "region": {"startLine": 3}}}]}, {"ruleId": "scanner-0a8b6e5862754479", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in tools/sync-config.test.ts:6"}, "properties": {"repobilityId": "33a4e76bddb8f179", "scanner": "scanner-primary", "fingerprint": "0a8b6e5862754479", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "tools/sync-config.test.ts"}, "region": {"startLine": 6}}}]}, {"ruleId": "scanner-d03e83b2e7518e00", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in tools/context-check.ts:5"}, "properties": {"repobilityId": "80ef48b34fff3f05", "scanner": "scanner-primary", "fingerprint": "d03e83b2e7518e00", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "tools/context-check.ts"}, "region": {"startLine": 5}}}]}, {"ruleId": "scanner-87b17a5ba55f3f7e", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in tools/backfill-workflow-cost.ts:6"}, "properties": {"repobilityId": "1868bc1012af8227", "scanner": "scanner-primary", "fingerprint": "87b17a5ba55f3f7e", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "tools/backfill-workflow-cost.ts"}, "region": {"startLine": 6}}}]}, {"ruleId": "scanner-740d3f7419ca91e3", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in tools/ready-watchdog.ts:3"}, "properties": {"repobilityId": "4b582351535eda0c", "scanner": "scanner-primary", "fingerprint": "740d3f7419ca91e3", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "tools/ready-watchdog.ts"}, "region": {"startLine": 3}}}]}, {"ruleId": "scanner-575321f973b7d449", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in tools/select-wave.test.ts:3"}, "properties": {"repobilityId": "367b35d220e63080", "scanner": "scanner-primary", "fingerprint": "575321f973b7d449", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "tools/select-wave.test.ts"}, "region": {"startLine": 3}}}]}, {"ruleId": "scanner-2dc573193b1bd72b", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in tools/observer.ts:3"}, "properties": {"repobilityId": "8c70eeee584bbb0c", "scanner": "scanner-primary", "fingerprint": "2dc573193b1bd72b", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "tools/observer.ts"}, "region": {"startLine": 3}}}]}, {"ruleId": "scanner-41a197deb17175db", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in tools/route-tasks.test.ts:3"}, "properties": {"repobilityId": "baf1edaf4bd81b0c", "scanner": "scanner-primary", "fingerprint": "41a197deb17175db", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "tools/route-tasks.test.ts"}, "region": {"startLine": 3}}}]}, {"ruleId": "scanner-ce1488bc598c1531", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in tools/plan-queue.test.ts:3"}, "properties": {"repobilityId": "af7e5777896f9ff9", "scanner": "scanner-primary", "fingerprint": "ce1488bc598c1531", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "tools/plan-queue.test.ts"}, "region": {"startLine": 3}}}]}, {"ruleId": "scanner-bc4141470ad70428", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in tools/state.ts:3"}, "properties": {"repobilityId": "071561e6625cd246", "scanner": "scanner-primary", "fingerprint": "bc4141470ad70428", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "tools/state.ts"}, "region": {"startLine": 3}}}]}, {"ruleId": "scanner-f3a047c8783b64a6", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in tools/check-cross-pr-reverts.test.ts:2"}, "properties": {"repobilityId": "8984f0fdd045a283", "scanner": "scanner-primary", "fingerprint": "f3a047c8783b64a6", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "tools/check-cross-pr-reverts.test.ts"}, "region": {"startLine": 2}}}]}, {"ruleId": "scanner-cc70d693daf549ab", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in tools/smoke-deepseek.test.ts:2"}, "properties": {"repobilityId": "a3b493bdae70d94c", "scanner": "scanner-primary", "fingerprint": "cc70d693daf549ab", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "tools/smoke-deepseek.test.ts"}, "region": {"startLine": 2}}}]}, {"ruleId": "scanner-8165c72ece9964b8", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in tools/review-changes.ts:15"}, "properties": {"repobilityId": "d50c79220739b792", "scanner": "scanner-primary", "fingerprint": "8165c72ece9964b8", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "tools/review-changes.ts"}, "region": {"startLine": 15}}}]}, {"ruleId": "scanner-ca82714e859cfd09", "level": "warning", "message": {"text": "Insecure pattern 'weak_hash' in tools/aggregate-evals.ts:69"}, "properties": {"repobilityId": "d240683c0be77e66", "scanner": "scanner-primary", "fingerprint": "ca82714e859cfd09", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "weak_hash"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "tools/aggregate-evals.ts"}, "region": {"startLine": 69}}}]}, {"ruleId": "scanner-6b86c56d7c325759", "level": "error", "message": {"text": "Insecure pattern 'eval_used' in src/evaluation/adapters/wavemill-router-adapter.ts:451"}, "properties": {"repobilityId": "85196fd7a4af8122", "scanner": "scanner-primary", "fingerprint": "6b86c56d7c325759", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["owasp", "eval_used"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/evaluation/adapters/wavemill-router-adapter.ts"}, "region": {"startLine": 451}}}]}, {"ruleId": "scanner-4bb72ad886589e15", "level": "note", "message": {"text": "Very large file: tests/check-shell.sh (3153 lines)"}, "properties": {"repobilityId": "53308629b5d914a9", "scanner": "scanner-primary", "fingerprint": "4bb72ad886589e15", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-f423a281cf63b542", "level": "note", "message": {"text": "Very large file: tests/lifecycle-harness.test.sh (1408 lines)"}, "properties": {"repobilityId": "9bccdbeaa7ffd0b2", "scanner": "scanner-primary", "fingerprint": "f423a281cf63b542", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-0bb9030c503f29e2", "level": "note", "message": {"text": "Very large file: shared/lib/wavemill-mill.sh (10807 lines)"}, "properties": {"repobilityId": "fdf3e4e6edb197aa", "scanner": "scanner-primary", "fingerprint": "0bb9030c503f29e2", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-764024d055642bbb", "level": "note", "message": {"text": "Very large file: shared/lib/eval-schema.test.ts (1835 lines)"}, "properties": {"repobilityId": "13d380c0c5576b88", "scanner": "scanner-primary", "fingerprint": "764024d055642bbb", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-1a5f895d5b79cb57", "level": "note", "message": {"text": "Very large file: shared/lib/workflow-router.ts (1827 lines)"}, "properties": {"repobilityId": "b25bcd5d5126ec7a", "scanner": "scanner-primary", "fingerprint": "1a5f895d5b79cb57", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-6e59b1072bf6c530", "level": "note", "message": {"text": "Very large file: shared/lib/agent-adapters.sh (2342 lines)"}, "properties": {"repobilityId": "bb726540d75837b5", "scanner": "scanner-primary", "fingerprint": "6e59b1072bf6c530", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-bef5aea33dfcc9e5", "level": "note", "message": {"text": "Very large file: shared/lib/tend-controller.test.ts (1493 lines)"}, "properties": {"repobilityId": "9f5c9561995f7b13", "scanner": "scanner-primary", "fingerprint": "bef5aea33dfcc9e5", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-412b1d64e09fa056", "level": "note", "message": {"text": "Very large file: shared/lib/promotion-controller.test.ts (1283 lines)"}, "properties": {"repobilityId": "da4767c4665fff70", "scanner": "scanner-primary", "fingerprint": "412b1d64e09fa056", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-eb5141aacf4817d6", "level": "note", "message": {"text": "Very large file: shared/lib/eval-schema.ts (1605 lines)"}, "properties": {"repobilityId": "219c9d108e70234e", "scanner": "scanner-primary", "fingerprint": "eb5141aacf4817d6", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-cd4d642f3a5a6a2e", "level": "note", "message": {"text": "Very large file: shared/lib/wavemill-common.sh (2228 lines)"}, "properties": {"repobilityId": "d782086e0bf628b9", "scanner": "scanner-primary", "fingerprint": "cd4d642f3a5a6a2e", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-c30a0821fb21d864", "level": "note", "message": {"text": "Very large file: shared/lib/llm-cli.ts (1866 lines)"}, "properties": {"repobilityId": "937ee49e514e9791", "scanner": "scanner-primary", "fingerprint": "c30a0821fb21d864", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-ce4af5f32f0b9ecb", "level": "note", "message": {"text": "Very large file: shared/lib/ready-stage.test.ts (2509 lines)"}, "properties": {"repobilityId": "438207954cd73d7d", "scanner": "scanner-primary", "fingerprint": "ce4af5f32f0b9ecb", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-892da8eefc7661fe", "level": "note", "message": {"text": "Very large file: shared/lib/stage-aware-router.test.ts (1651 lines)"}, "properties": {"repobilityId": "d016232157aa255d", "scanner": "scanner-primary", "fingerprint": "892da8eefc7661fe", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-fee58376b7ef03b4", "level": "note", "message": {"text": "Very large file: shared/lib/config.test.ts (3007 lines)"}, "properties": {"repobilityId": "62287459c27c1648", "scanner": "scanner-primary", "fingerprint": "fee58376b7ef03b4", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-69bd614a6920475d", "level": "note", "message": {"text": "Very large file: shared/lib/ready-stage.ts (2816 lines)"}, "properties": {"repobilityId": "b70e7421e2632c2e", "scanner": "scanner-primary", "fingerprint": "69bd614a6920475d", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-2fbe176a90ede8a4", "level": "note", "message": {"text": "33 TODO/FIXME markers"}, "properties": {"repobilityId": "4b38c118003e07d2", "scanner": "scanner-primary", "fingerprint": "2fbe176a90ede8a4", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["maintenance"]}}, {"ruleId": "scanner-b3ed68815bca2f8c", "level": "note", "message": {"text": "Node manifest has dependencies but no lockfile: package.json"}, "properties": {"repobilityId": "7edae0550c126386", "scanner": "scanner-primary", "fingerprint": "b3ed68815bca2f8c", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["dependency", "lockfile", "reproducibility", "generated-repo-pattern"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-3c6f2d410af528a3", "level": "note", "message": {"text": "Node manifest has dependencies but no lockfile: tools/package.json"}, "properties": {"repobilityId": "ae887ca5559e145a", "scanner": "scanner-primary", "fingerprint": "3c6f2d410af528a3", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["dependency", "lockfile", "reproducibility", "generated-repo-pattern"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "tools/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-3ab5d313dda8e5f9", "level": "note", "message": {"text": "Debug logging residue appears in source files"}, "properties": {"repobilityId": "5b3575a3498bee26", "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": "3d7b2f68181a1131", "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": "bee6b1d2ab8f9c31", "scanner": "scanner-primary", "fingerprint": "2d0c7b7ab8f8aacf", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["placeholder", "mock-data", "critical-flow", "generated-repo-pattern"]}}, {"ruleId": "scanner-749d4bc1bd66df5f", "level": "warning", "message": {"text": "Agent instructions exist but release-hardening basics are missing"}, "properties": {"repobilityId": "93fef5d68128d186", "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": "b3e891659a61e62f", "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": "8130a6ceb69a1885", "scanner": "scanner-primary", "fingerprint": "8424db9c75e04ba4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["provenance", "git-history", "generated-repo-pattern"]}}, {"ruleId": "scanner-17d866d91a7c451e", "level": "error", "message": {"text": "Agent instruction/config may expose a secret: CLAUDE.md"}, "properties": {"repobilityId": "ccce5984e58a48f0", "scanner": "scanner-primary", "fingerprint": "17d866d91a7c451e", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["agent-instructions", "secrets", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "CLAUDE.md"}, "region": {"startLine": 48}}}]}, {"ruleId": "scanner-8381cde1eb96cab5", "level": "none", "message": {"text": "Commented-code block (5 lines) in shared/lib/workflow-cost.test.ts:130"}, "properties": {"repobilityId": "e2619158c705e0cf", "scanner": "scanner-primary", "fingerprint": "8381cde1eb96cab5", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-fbe6b5021e577b44", "level": "note", "message": {"text": "Legacy-named symbol `featureLegacy` in shared/lib/review-context-gatherer.ts:295"}, "properties": {"repobilityId": "5614e925592204a2", "scanner": "scanner-primary", "fingerprint": "fbe6b5021e577b44", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-b587d5f87c915c52", "level": "none", "message": {"text": "Commented-code block (6 lines) in shared/lib/tend-controller.ts:463"}, "properties": {"repobilityId": "f906b71e47502499", "scanner": "scanner-primary", "fingerprint": "b587d5f87c915c52", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4654eaab74b23542", "level": "none", "message": {"text": "Commented-code block (6 lines) in shared/lib/promotion-controller.ts:931"}, "properties": {"repobilityId": "b5a5131d5d147c2a", "scanner": "scanner-primary", "fingerprint": "4654eaab74b23542", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-66cc34cb74c060fc", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 tools/observer.ts:755"}, "properties": {"repobilityId": "87314247de8a73c2", "scanner": "scanner-primary", "fingerprint": "66cc34cb74c060fc", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-7dd67fca4e97656a", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 tools/list-prs.ts:59"}, "properties": {"repobilityId": "e686e2e8291d5ba6", "scanner": "scanner-primary", "fingerprint": "7dd67fca4e97656a", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-4d223bfdf539b12d", "level": "note", "message": {"text": "42 env vars used in code but missing from .env.example"}, "properties": {"repobilityId": "5bbbd2b50dcb630d", "scanner": "scanner-primary", "fingerprint": "4d223bfdf539b12d", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "config-drift"]}}, {"ruleId": "scanner-02525d39071dd2c7", "level": "note", "message": {"text": "Near-duplicate function bodies in 5 places"}, "properties": {"repobilityId": "e8dcb0d89bcd569f", "scanner": "scanner-primary", "fingerprint": "02525d39071dd2c7", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-33a6b62e30ce7ab4", "level": "note", "message": {"text": "Near-duplicate function bodies in 6 places"}, "properties": {"repobilityId": "5e1f5de2669733f5", "scanner": "scanner-primary", "fingerprint": "33a6b62e30ce7ab4", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}]}]}