{"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: TayfunTurgut/phantom-table", "shortDescription": {"text": "Foundry mined unresolved feedback: TayfunTurgut/phantom-table"}, "fullDescription": {"text": "Graph query export: Human feedback without linked fix evidence\nQuery id: unresolved_feedback\nQuery type: motif_query\nIntent: Negative/unresolved examples that should not be hallucinated into fixes.\nMotif: unlinked_feedback_needs_evidence\nTraining usage: negative_or_unresolved\nGraph gold label: needs_more_evidence\nRepo: TayfunTurgut/phantom-table\nThread: TayfunTurgut/phantom-table#4\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: TayfunTurgut/phantom-table\nThread: TayfunTurgut/phantom-table#4\nGraph gold label: needs_more_evidence\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: TayfunTurgut/phantom-table#4\nRepo: TayfunTurgut/phantom-table\nIssue/PR number: 4\nGraph consistency label: needs_more_evidence\nNodes: 50\nEdges: 76\nNode types: {'pr_file': 41, 'link_quality': 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: TayfunTurgut/phantom-table", "shortDescription": {"text": "Foundry mined blueprint gap alignment: TayfunTurgut/phantom-table"}, "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: assumption_check\nRepo: TayfunTurgut/phantom-table\nThread: TayfunTurgut/phantom-table#1\nEvidence:\nGraph motif: Human feedback aligns with blueprint or architecture gaps\nMotif id: blueprint_gap_alignment\nPolarity: mixed\nTraining usage: curriculum_gap\nSeverity: medium\nRepo: TayfunTurgut/phantom-table\nThread: TayfunTurgut/phantom-table#1\nGraph gold label: assumption_check\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: TayfunTurgut/phantom-table#1\nRepo: TayfunTurgut/phantom-table\nIssue/PR number: 1\nGraph consistency label: assumption_check\nNodes: 27\nEdges: 50\nNode types: {'pr_file': 9, 'link_quality': 6, '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_test_ci_gap", "name": "Foundry mined test ci gap after feedback: TayfunTurgut/phantom-table", "shortDescription": {"text": "Foundry mined test ci gap after feedback: TayfunTurgut/phantom-table"}, "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: assumption_check\nRepo: TayfunTurgut/phantom-table\nThread: TayfunTurgut/phantom-table#1\nEvidence:\nGraph motif: Feedback or fix context exposes missing test/CI guardrails\nMotif id: test_ci_gap_after_feedback\nPolarity: bad\nTraining usage: hard_negative\nSeverity: high\nRepo: TayfunTurgut/phantom-table\nThread: TayfunTurgut/phantom-table#1\nGraph gold label: assumption_check\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: TayfunTurgut/phantom-table#1\nRepo: TayfunTurgut/phantom-table\nIssue/PR number: 1\nGraph consistency label: assumption_check\nNodes: 27\nEdges: 50\nNode types: {'pr_file': 9, 'link_quality': 6, '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_bad_chain", "name": "Foundry mined bad chains: TayfunTurgut/phantom-table", "shortDescription": {"text": "Foundry mined bad chains: TayfunTurgut/phantom-table"}, "fullDescription": {"text": "Comment chain pattern product: bad_chains\nRepo: TayfunTurgut/phantom-table\nThread: TayfunTurgut/phantom-table#4\nOutcome: not_resolved_or_not_observed\nThread label: thread_has_human_issue_without_fix_context\nSource graph label: source_artifact_without_verification_graph\nReasons: source_graph_has_real_artifacts, link_quality_unresolved, high_risk_human_feedback_label\nChain evidence:\nIssue/PR evidence chain: TayfunTurgut/phantom-table#4\nRepo: TayfunTurgut/phantom-table\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: 41\nLabels: {'runtime_failure': 1}\nPolarities: {'bad': 1}\nChanged file labels: {'source_or_other': 1, 'docs_or_claims': 1, 'ui_or_frontend': 20, 'schema_or_data': 1, 'api_or_backend': 1, 'test_or_ci': 17}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-e6758b59a43c1bd2\",\n    \"kind\": \"pull_request_body\",\n    \"label\": \"runtim"}, "properties": {"scanner": "foundry_dataset", "category": "practices", "severity": "high", "confidence": 0.84, "cwe": "", "owasp": ""}}, {"id": "scanner-9710c8d059e53154", "name": "No frontend routes/components detected", "shortDescription": {"text": "No frontend routes/components detected"}, "fullDescription": {"text": "No React/Vue/Next routes were found. This is fine for backend-only repos."}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-4601e3ad3bb28677", "name": "No CI/CD pipelines detected", "shortDescription": {"text": "No CI/CD pipelines detected"}, "fullDescription": {"text": "No GitHub Actions, GitLab CI, or CircleCI configs found. Without CI you can't gate deploys on tests/lints."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-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-2c04133e54348533", "name": "Near-duplicate function bodies in 2 places", "shortDescription": {"text": "Near-duplicate function bodies in 2 places"}, "fullDescription": {"text": "Functions with the same first-5-line body hash:\nsrc/playtest/engine/loader.py:load_engine_from_path, src/playtest/engine/loader.py:load_engine\n\nThis is *the* AI-coder failure mode (4\u00d7 more duplication in vibe-coded repos \u2014 see https://jw.hn/ai-code-hygiene). Consolidate or document why they're separate."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-be46ea126aa5d8dc", "name": "Near-duplicate function bodies in 3 places", "shortDescription": {"text": "Near-duplicate function bodies in 3 places"}, "fullDescription": {"text": "Functions with the same first-5-line body hash:\nsrc/playtest/llm/__init__.py:complete, src/playtest/llm/claude_cli.py:complete, src/playtest/llm/openai_api.py:complete\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/20850"}, "properties": {"repository": "TayfunTurgut/phantom-table", "repoUrl": "https://github.com/TayfunTurgut/phantom-table", "branch": "main"}, "results": [{"ruleId": "foundry_unresolved_feedback", "level": "warning", "message": {"text": "Foundry mined unresolved feedback: TayfunTurgut/phantom-table"}, "properties": {"repobilityId": 361628, "scanner": "foundry_dataset", "fingerprint": "9471f1c8acd58662d7b19542acb8a3f564347dbe55ba81fce2d74f2e7109e4bb", "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": 1, "docs_or_claims": 1, "schema_or_data": 1, "ui_or_frontend": 20, "runtime_failure": 1, "source_or_other": 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": 76, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 1, "thread_has_comment": 1, "thread_touches_file": 41, "chain_has_link_quality": 3, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "issue_chain_touches_file": 12, "thread_has_comment_chain": 1, "comment_chain_touches_file": 12, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 1}, "node_count": 50, "node_types": {"repo": 1, "thread": 1, "comment": 1, "pr_file": 41, "fix_outcome": 1, "issue_chain": 1, "link_quality": 3, "comment_chain": 1}, "query_type": "motif_query", "thread_key": "TayfunTurgut/phantom-table#4", "issue_number": "4", "quality_tiers": {"unresolved": 3}, "repo_full_name": "TayfunTurgut/phantom-table", "training_usage": "negative_or_unresolved", "source_motif_id": "graph-pattern-motif-thread-3a5dd16fe02f194f", "graph_gold_label": "needs_more_evidence", "changed_file_labels": {"test_or_ci": 68, "api_or_backend": 4, "docs_or_claims": 4, "schema_or_data": 4, "ui_or_frontend": 80, "source_or_other": 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: TayfunTurgut/phantom-table\nThread: TayfunTurgut/phantom-table#4\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: TayfunTurgut/phantom-table\nThread: TayfunTurgut/phantom-table#4\nGraph gold label: needs_more_evidence\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: TayfunTurgut/phantom-table#4\nRepo: TayfunTurgut/phantom-table\nIssue/PR number: 4\nGraph consistency label: needs_more_evidence\nNodes: 50\nEdges: 76\nNode types: {'pr_file': 41, 'link_quality': 3, 'thread': 1, 'repo': 1, 'comment': 1, 'comment_chain': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'thread_touches_file': 41, 'comment_chain_touches_file': 12, 'issue_chain_touches_file': 12, 'chain_has_link_quality': 3, 'repo_has_thread': 1, 'thread_has_comment': 1, 'thread_has_comment_chain': 1, 'comment_has_chain': 1, 'thread_has_issue_chain': 1, 'issue_chain_has_comment_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'ui_or_frontend': 20, 'test_or_ci': 17, 'not_resolved_or_not_observed': 3, 'thread_has_human_issue_without_fix_context': 2, 'issue_or_pull_request_thread': 1, 'runtime_failure': 1, 'source_or_other': 1, 'docs_or_claims': 1, 'schema_or_data': 1, 'api_or_backend': 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/TayfunTurgut/phantom-table", "source_id": "graph-query-motif_query-8079197d07cf8ac2", "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": "TayfunTurgut/phantom-table", "source_dataset": "graph_queries/unresolved_feedback", "training_usage": "negative_or_unresolved"}}}, {"ruleId": "foundry_unresolved_feedback", "level": "warning", "message": {"text": "Foundry mined unresolved feedback: TayfunTurgut/phantom-table"}, "properties": {"repobilityId": 361627, "scanner": "foundry_dataset", "fingerprint": "ba13802e46f986c575a72b0fdd64e6c78e17c1b039cc3df427cc04cd05c2efb7", "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": 4, "ui_or_frontend": 9, "runtime_failure": 1, "source_or_other": 2, "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": 50, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 1, "thread_has_comment": 1, "thread_touches_file": 15, "chain_has_link_quality": 3, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "issue_chain_touches_file": 12, "thread_has_comment_chain": 1, "comment_chain_touches_file": 12, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 1}, "node_count": 24, "node_types": {"repo": 1, "thread": 1, "comment": 1, "pr_file": 15, "fix_outcome": 1, "issue_chain": 1, "link_quality": 3, "comment_chain": 1}, "query_type": "motif_query", "thread_key": "TayfunTurgut/phantom-table#3", "issue_number": "3", "quality_tiers": {"unresolved": 3}, "repo_full_name": "TayfunTurgut/phantom-table", "training_usage": "negative_or_unresolved", "source_motif_id": "graph-pattern-motif-thread-0d962e939bed08a8", "graph_gold_label": "needs_more_evidence", "changed_file_labels": {"test_or_ci": 16, "ui_or_frontend": 36, "source_or_other": 8}}, "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: TayfunTurgut/phantom-table\nThread: TayfunTurgut/phantom-table#3\nEvidence:\nGraph motif: Human feedback exists without a linked fix\nMotif id: unlinked_feedback_needs_evidence\nPolarity: bad\nTraining usage: negative_or_unresolved\nSeverity: medium\nRepo: TayfunTurgut/phantom-table\nThread: TayfunTurgut/phantom-table#3\nGraph gold label: needs_more_evidence\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: TayfunTurgut/phantom-table#3\nRepo: TayfunTurgut/phantom-table\nIssue/PR number: 3\nGraph consistency label: needs_more_evidence\nNodes: 24\nEdges: 50\nNode types: {'pr_file': 15, 'link_quality': 3, 'thread': 1, 'repo': 1, 'comment': 1, 'comment_chain': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'thread_touches_file': 15, 'comment_chain_touches_file': 12, 'issue_chain_touches_file': 12, 'chain_has_link_quality': 3, 'repo_has_thread': 1, 'thread_has_comment': 1, 'thread_has_comment_chain': 1, 'comment_has_chain': 1, 'thread_has_issue_chain': 1, 'issue_chain_has_comment_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'ui_or_frontend': 9, 'test_or_ci': 4, 'not_resolved_or_not_observed': 3, 'source_or_other': 2, 'thread_has_human_issue_without_fix_context': 2, 'issue_or_pull_request_thread': 1, 'runtime_failure': 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/TayfunTurgut/phantom-table", "source_id": "graph-query-motif_query-99276d5bcd9d3747", "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": "TayfunTurgut/phantom-table", "source_dataset": "graph_queries/unresolved_feedback", "training_usage": "negative_or_unresolved"}}}, {"ruleId": "foundry_unresolved_feedback", "level": "warning", "message": {"text": "Foundry mined unresolved feedback: TayfunTurgut/phantom-table"}, "properties": {"repobilityId": 361626, "scanner": "foundry_dataset", "fingerprint": "0a9be7610a969632e84489630b4394d607d88daafbae1390838338823a08fb0a", "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": 6, "ui_or_frontend": 11, "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": 52, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 1, "thread_has_comment": 1, "thread_touches_file": 17, "chain_has_link_quality": 3, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "issue_chain_touches_file": 12, "thread_has_comment_chain": 1, "comment_chain_touches_file": 12, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 1}, "node_count": 26, "node_types": {"repo": 1, "thread": 1, "comment": 1, "pr_file": 17, "fix_outcome": 1, "issue_chain": 1, "link_quality": 3, "comment_chain": 1}, "query_type": "motif_query", "thread_key": "TayfunTurgut/phantom-table#2", "issue_number": "2", "quality_tiers": {"unresolved": 3}, "repo_full_name": "TayfunTurgut/phantom-table", "training_usage": "negative_or_unresolved", "source_motif_id": "graph-pattern-motif-thread-949fdc0a5f96a831", "graph_gold_label": "needs_more_evidence", "changed_file_labels": {"test_or_ci": 24, "ui_or_frontend": 44}}, "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: TayfunTurgut/phantom-table\nThread: TayfunTurgut/phantom-table#2\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: TayfunTurgut/phantom-table\nThread: TayfunTurgut/phantom-table#2\nGraph gold label: needs_more_evidence\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: TayfunTurgut/phantom-table#2\nRepo: TayfunTurgut/phantom-table\nIssue/PR number: 2\nGraph consistency label: needs_more_evidence\nNodes: 26\nEdges: 52\nNode types: {'pr_file': 17, 'link_quality': 3, 'thread': 1, 'repo': 1, 'comment': 1, 'comment_chain': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'thread_touches_file': 17, 'comment_chain_touches_file': 12, 'issue_chain_touches_file': 12, 'chain_has_link_quality': 3, 'repo_has_thread': 1, 'thread_has_comment': 1, 'thread_has_comment_chain': 1, 'comment_has_chain': 1, 'thread_has_issue_chain': 1, 'issue_chain_has_comment_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'ui_or_frontend': 11, 'test_or_ci': 6, '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/TayfunTurgut/phantom-table", "source_id": "graph-query-motif_query-6961396e07111cc9", "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": "TayfunTurgut/phantom-table", "source_dataset": "graph_queries/unresolved_feedback", "training_usage": "negative_or_unresolved"}}}, {"ruleId": "foundry_unresolved_feedback", "level": "warning", "message": {"text": "Foundry mined unresolved feedback: TayfunTurgut/phantom-table"}, "properties": {"repobilityId": 361625, "scanner": "foundry_dataset", "fingerprint": "4ed360c3a6c2b08567d33377ec0335c59bf671a2e7586ddd61e3b4e998d72d75", "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": 2, "test_ci_gap": 1, "ui_or_frontend": 7, "weak blueprint fit": 1, "partial blueprint fit": 2, "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": 50, "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_touches_file": 9, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 1}, "node_count": 27, "node_types": {"repo": 1, "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": "TayfunTurgut/phantom-table#1", "issue_number": "1", "quality_tiers": {"unresolved": 3, "assumption_check": 3}, "repo_full_name": "TayfunTurgut/phantom-table", "training_usage": "negative_or_unresolved", "source_motif_id": "graph-pattern-motif-thread-bded20a8a07c4506", "graph_gold_label": "assumption_check", "changed_file_labels": {"test_or_ci": 8, "ui_or_frontend": 28}}, "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: TayfunTurgut/phantom-table\nThread: TayfunTurgut/phantom-table#1\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: TayfunTurgut/phantom-table\nThread: TayfunTurgut/phantom-table#1\nGraph gold label: assumption_check\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: TayfunTurgut/phantom-table#1\nRepo: TayfunTurgut/phantom-table\nIssue/PR number: 1\nGraph consistency label: assumption_check\nNodes: 27\nEdges: 50\nNode types: {'pr_file': 9, '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': 9, 'comment_chain_touches_file': 9, 'issue_chain_touches_file': 9, '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: {'ui_or_frontend': 7, 'not_resolved_or_not_observed': 3, 'blueprint_human_gap_alignment': 3, 'test_or_ci': 2, 'thread_has_human_issue_without_fix_context': 2, 'partial blueprint fit': 2, 'issue_or_pull_request_thread': 1, 'test_ci_gap': 1, 'human_reported_issue_no_linked_fix': 1, 'weak 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/TayfunTurgut/phantom-table", "source_id": "graph-query-motif_query-1671fa7c9fbcb17f", "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": "TayfunTurgut/phantom-table", "source_dataset": "graph_queries/unresolved_feedback", "training_usage": "negative_or_unresolved"}}}, {"ruleId": "foundry_blueprint_gap", "level": "warning", "message": {"text": "Foundry mined blueprint gap alignment: TayfunTurgut/phantom-table"}, "properties": {"repobilityId": 345416, "scanner": "foundry_dataset", "fingerprint": "8ad77f7779903a22611e22f987a47ec666be2a74b24cd10f7321d516c2a12a03", "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": 2, "test_ci_gap": 1, "ui_or_frontend": 7, "weak blueprint fit": 1, "partial blueprint fit": 2, "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": 50, "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_touches_file": 9, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 1}, "node_count": 27, "node_types": {"repo": 1, "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": "TayfunTurgut/phantom-table#1", "issue_number": "1", "quality_tiers": {"unresolved": 3, "assumption_check": 3}, "repo_full_name": "TayfunTurgut/phantom-table", "training_usage": "curriculum_gap", "source_motif_id": "graph-pattern-motif-thread-13e534e3c89ee951", "graph_gold_label": "assumption_check", "changed_file_labels": {"test_or_ci": 8, "ui_or_frontend": 28}}, "text": "Graph query export: Human feedback aligned with blueprint or architecture gaps\nQuery id: blueprint_gap_alignment\nQuery type: motif_query\nIntent: Curriculum-gap examples connecting issue threads to helicopter-view gaps.\nMotif: blueprint_gap_alignment\nTraining usage: curriculum_gap\nGraph gold label: assumption_check\nRepo: TayfunTurgut/phantom-table\nThread: TayfunTurgut/phantom-table#1\nEvidence:\nGraph motif: Human feedback aligns with blueprint or architecture gaps\nMotif id: blueprint_gap_alignment\nPolarity: mixed\nTraining usage: curriculum_gap\nSeverity: medium\nRepo: TayfunTurgut/phantom-table\nThread: TayfunTurgut/phantom-table#1\nGraph gold label: assumption_check\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: TayfunTurgut/phantom-table#1\nRepo: TayfunTurgut/phantom-table\nIssue/PR number: 1\nGraph consistency label: assumption_check\nNodes: 27\nEdges: 50\nNode types: {'pr_file': 9, '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': 9, 'comment_chain_touches_file': 9, 'issue_chain_touches_file': 9, '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: {'ui_or_frontend': 7, 'not_resolved_or_not_observed': 3, 'blueprint_human_gap_alignment': 3, 'test_or_ci': 2, 'thread_has_human_issue_without_fix_context': 2, 'partial blueprint fit': 2, 'issue_or_pull_request_thread': 1, 'test_ci_gap': 1, 'human_reported_issue_no_linked_fix': 1, 'weak 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/TayfunTurgut/phantom-table", "source_id": "graph-query-motif_query-428348e25c9789c6", "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": "TayfunTurgut/phantom-table", "source_dataset": "graph_queries/blueprint_gap_alignment", "training_usage": "curriculum_gap"}}}, {"ruleId": "foundry_test_ci_gap", "level": "error", "message": {"text": "Foundry mined test ci gap after feedback: TayfunTurgut/phantom-table"}, "properties": {"repobilityId": 336761, "scanner": "foundry_dataset", "fingerprint": "6da5ded67e89b7b094dd113a35b2a7d073f45892df420a1b2af16b19237d54d5", "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": 2, "test_ci_gap": 1, "ui_or_frontend": 7, "weak blueprint fit": 1, "partial blueprint fit": 2, "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": "test_ci_gap_after_feedback", "outcomes": {"not_resolved_or_not_observed": 6}, "polarity": "bad", "query_id": "test_ci_gap_after_feedback", "severity": "high", "ci_labels": {}, "synthetic": false, "edge_count": 50, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 1, "thread_has_comment": 1, "thread_touches_file": 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_touches_file": 9, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 1}, "node_count": 27, "node_types": {"repo": 1, "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": "TayfunTurgut/phantom-table#1", "issue_number": "1", "quality_tiers": {"unresolved": 3, "assumption_check": 3}, "repo_full_name": "TayfunTurgut/phantom-table", "training_usage": "hard_negative", "source_motif_id": "graph-pattern-motif-thread-b4748bba23cdab01", "graph_gold_label": "assumption_check", "changed_file_labels": {"test_or_ci": 8, "ui_or_frontend": 28}}, "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: TayfunTurgut/phantom-table\nThread: TayfunTurgut/phantom-table#1\nEvidence:\nGraph motif: Feedback or fix context exposes missing test/CI guardrails\nMotif id: test_ci_gap_after_feedback\nPolarity: bad\nTraining usage: hard_negative\nSeverity: high\nRepo: TayfunTurgut/phantom-table\nThread: TayfunTurgut/phantom-table#1\nGraph gold label: assumption_check\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: TayfunTurgut/phantom-table#1\nRepo: TayfunTurgut/phantom-table\nIssue/PR number: 1\nGraph consistency label: assumption_check\nNodes: 27\nEdges: 50\nNode types: {'pr_file': 9, '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': 9, 'comment_chain_touches_file': 9, 'issue_chain_touches_file': 9, '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: {'ui_or_frontend': 7, 'not_resolved_or_not_observed': 3, 'blueprint_human_gap_alignment': 3, 'test_or_ci': 2, 'thread_has_human_issue_without_fix_context': 2, 'partial blueprint fit': 2, 'issue_or_pull_request_thread': 1, 'test_ci_gap': 1, 'human_reported_issue_no_linked_fix': 1, 'weak blueprint fit': 1}\nOutcomes: {'not_resolved_or_not_observed': 6}\nQuality tiers: {'unresolved': 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/TayfunTurgut/phantom-table", "source_id": "graph-query-motif_query-1159b329e498a586", "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": "TayfunTurgut/phantom-table", "source_dataset": "graph_queries/test_ci_gap_after_feedback", "training_usage": "hard_negative"}}}, {"ruleId": "foundry_bad_chain", "level": "error", "message": {"text": "Foundry mined bad chains: TayfunTurgut/phantom-table"}, "properties": {"repobilityId": 316583, "scanner": "foundry_dataset", "fingerprint": "a5b16b2757b2970669678c194a2158ff6b1300418cad0c83a9750820a775f329", "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": "TayfunTurgut/phantom-table#4", "human_labels": ["api_or_backend", "docs_or_claims", "runtime_failure", "schema_or_data", "source_or_other", "test_or_ci", "ui_or_frontend"], "issue_number": "4", "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": "TayfunTurgut/phantom-table", "training_usage": "negative_or_unresolved", "confidence_tier": "unresolved", "source_chain_id": "evidence-chain-issue_chain-a6d6af6b96f76f52", "helicopter_views": {}, "artifact_families": {"docs": 1}, "source_chain_kind": "issue_chain", "changed_file_count": 41, "source_graph_label": "source_artifact_without_verification_graph", "changed_file_labels": {"test_or_ci": 17, "api_or_backend": 1, "docs_or_claims": 1, "schema_or_data": 1, "ui_or_frontend": 20, "source_or_other": 1}, "linked_commit_count": 0, "helicopter_view_count": 0, "source_artifact_count": 1, "classification_reasons": ["source_graph_has_real_artifacts", "link_quality_unresolved", "high_risk_human_feedback_label"], "linked_ci_commit_count": 0, "verification_artifact_count": 0, "design_schema_api_artifact_count": 0}, "text": "Comment chain pattern product: bad_chains\nRepo: TayfunTurgut/phantom-table\nThread: TayfunTurgut/phantom-table#4\nOutcome: not_resolved_or_not_observed\nThread label: thread_has_human_issue_without_fix_context\nSource graph label: source_artifact_without_verification_graph\nReasons: source_graph_has_real_artifacts, link_quality_unresolved, high_risk_human_feedback_label\nChain evidence:\nIssue/PR evidence chain: TayfunTurgut/phantom-table#4\nRepo: TayfunTurgut/phantom-table\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: 41\nLabels: {'runtime_failure': 1}\nPolarities: {'bad': 1}\nChanged file labels: {'source_or_other': 1, 'docs_or_claims': 1, 'ui_or_frontend': 20, 'schema_or_data': 1, 'api_or_backend': 1, 'test_or_ci': 17}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-e6758b59a43c1bd2\",\n    \"kind\": \"pull_request_body\",\n    \"label\": \"runtime_failure\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/TayfunTurgut/phantom-table/pull/4\",\n    \"text\": \"GitHub feedback: runtime_failure\\nPolarity: bad\\nKind: pull_request_body\\nRepo: TayfunTurgut/phantom-table\\nAuthor: TayfunTurgut (User)\\nURL: https://github.com/TayfunTurgut/phantom-table/pull/4\\nTitle: Replace hand-written rules with an ingestion-driven generic engine\\nBody:\\n## Summary\\n\\nAll game logic is now inferred from the rulebook at ingestion \u2014 the runtime contains **zero hardcoded game knowledge**. The hand-written Love Letter rules module is deleted; any ingested game runs through the same generic path.\\n\\n### Ingestion\\n- Extracts a **`GameSpec`** (`game_spec.json`): component manifest + zones, per-player-count setup plans (pool/deal steps/carry-overs), turn phases with per-action rules, a visibility spec, and natural-language end-condition/scoring text \u2014 via Structured Outputs with self-consistency validators that crash ingestion early on a bad extraction\\n- De-Love-Lettered analyzer prompts and validators (no more hardcoded card names or 16-card deck math); independent extraction steps run in parallel\\n\\n### Runtime (configured entirely by the spec)\\n- **`rules/generic.py`**: seeded setup/redeal executor (the engine shuffles \u2014 the LLM never deals), phase-based action exposure, turn ro\"\n  }\n]\nChanged files:\n[\n  {\n    \"id\": \"github-pr-file-file-a26ddf2ac14699c9\",\n    \"filename\": \".env.example\",\n    \"label\": \"source_or_other\",\n    \"status\": \"modified\",\n    \"additions\": 6,\n    \"deletions\": 0,\n    \"changes\": 6,\n    \"blob_url\": \"https://github.com/TayfunTurgut/phantom-table/blob/34f72238c09b58db356e09e32af15cb273f06f42/.env.example\"\n  },\n  {\n    \"id\": \"github-pr-file-file-457e00aaa7f331a6\",\n    \"filename\": \"README.md\",\n    \"label\": \"docs_or_claims\",\n    \"status\": \"modified\",\n    \"additions\": 28,\n    \"deletions\": 8,\n    \"changes\": 36,\n    \"blob_url\": \"https://github.com/TayfunTurgut/phantom-table/blob/34f72238c09b5\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/TayfunTurgut/phantom-table", "source_id": "comment-chain-pattern-bad_chains-ea01b3ff932d48a7", "synthetic": false, "gold_label": "", "graph_label": "source_artifact_without_verification_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": "TayfunTurgut/phantom-table", "source_dataset": "comment_chain_patterns/bad_chains", "training_usage": "negative_or_unresolved"}}}, {"ruleId": "foundry_bad_chain", "level": "error", "message": {"text": "Foundry mined bad chains: TayfunTurgut/phantom-table"}, "properties": {"repobilityId": 316582, "scanner": "foundry_dataset", "fingerprint": "eb9583fad28adad6cf1edc80cf53a86054f30eee150b2ad4d4908f191fa63ae5", "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": "TayfunTurgut/phantom-table#3", "human_labels": ["runtime_failure", "source_or_other", "test_or_ci", "ui_or_frontend"], "issue_number": "3", "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": "TayfunTurgut/phantom-table", "training_usage": "negative_or_unresolved", "confidence_tier": "unresolved", "source_chain_id": "evidence-chain-issue_chain-26acced7546d71d7", "helicopter_views": {}, "artifact_families": {"docs": 1}, "source_chain_kind": "issue_chain", "changed_file_count": 15, "source_graph_label": "source_artifact_without_verification_graph", "changed_file_labels": {"test_or_ci": 4, "ui_or_frontend": 9, "source_or_other": 2}, "linked_commit_count": 0, "helicopter_view_count": 0, "source_artifact_count": 1, "classification_reasons": ["source_graph_has_real_artifacts", "link_quality_unresolved", "high_risk_human_feedback_label"], "linked_ci_commit_count": 0, "verification_artifact_count": 0, "design_schema_api_artifact_count": 0}, "text": "Comment chain pattern product: bad_chains\nRepo: TayfunTurgut/phantom-table\nThread: TayfunTurgut/phantom-table#3\nOutcome: not_resolved_or_not_observed\nThread label: thread_has_human_issue_without_fix_context\nSource graph label: source_artifact_without_verification_graph\nReasons: source_graph_has_real_artifacts, link_quality_unresolved, high_risk_human_feedback_label\nChain evidence:\nIssue/PR evidence chain: TayfunTurgut/phantom-table#3\nRepo: TayfunTurgut/phantom-table\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: 15\nLabels: {'runtime_failure': 1}\nPolarities: {'bad': 1}\nChanged file labels: {'source_or_other': 2, 'ui_or_frontend': 9, 'test_or_ci': 4}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-ce5566197f37ad9c\",\n    \"kind\": \"pull_request_body\",\n    \"label\": \"runtime_failure\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/TayfunTurgut/phantom-table/pull/3\",\n    \"text\": \"GitHub feedback: runtime_failure\\nPolarity: bad\\nKind: pull_request_body\\nRepo: TayfunTurgut/phantom-table\\nAuthor: TayfunTurgut (User)\\nURL: https://github.com/TayfunTurgut/phantom-table/pull/3\\nTitle: Audit fixes: close GM game-flow backdoors, fix round-end reporting, cleanup\\nBody:\\nFull-codebase audit of Phantom Table (M0\u2013M7) with fixes grouped by severity. Offline gate (pytest / ruff / mypy) green after each commit.\\n\\n## Critical \u2014 close LLM-trust backdoors around the deterministic engine\\n- **Per-action `game_ended` bypass:** GM per-action resolutions took `game_ended` from the LLM summary, and `gm_node` checked it before `round_ended`. A hallucinated `game_ended=True` ended the game without running `resolve_round` (no token award). Forced `game_ended=False` in `_build_resolution` \u2014 `handle_round_end` is now the only path to game-over.\\n- **`round_ended` guard:** honor the LLM-reported `round_ended` only when the committed state corroborates it (`deck_count == 0` or \u22641 survivor), preventing the resolver from running mid-round and tripping its one-card-per-survivor check.\\n- **Next-round deal:** prompt told the LLM to deal \\\"to each non-eliminated player\\\" while reviving everyone, risking e\"\n  }\n]\nChanged files:\n[\n  {\n    \"id\": \"github-pr-file-file-4bf2f88f844c43a5\",\n    \"filename\": \".env.example\",\n    \"label\": \"source_or_other\",\n    \"status\": \"modified\",\n    \"additions\": 3,\n    \"deletions\": 0,\n    \"changes\": 3,\n    \"blob_url\": \"https://github.com/TayfunTurgut/phantom-table/blob/89aa450c1d8ad3a65c0c2d3a0edeb20e839abb10/.env.example\"\n  },\n  {\n    \"id\": \"github-pr-file-file-9bfc119ccb8c7a89\",\n    \"filename\": \"pyproject.toml\",\n    \"label\": \"source_or_other\",\n    \"status\": \"modified\",\n    \"additions\": 0,\n    \"deletions\": 3,\n    \"changes\": 3,\n    \"blob_url\": \"https://github.com/TayfunTurgut/phantom-table/blob/89aa450c1d8ad3a65c0c2d3a0edeb20e839abb10/pyproject.toml\"\n  },\n  {\n    \"id\":\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/TayfunTurgut/phantom-table", "source_id": "comment-chain-pattern-bad_chains-ef19466df6ab65a7", "synthetic": false, "gold_label": "", "graph_label": "source_artifact_without_verification_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": "TayfunTurgut/phantom-table", "source_dataset": "comment_chain_patterns/bad_chains", "training_usage": "negative_or_unresolved"}}}, {"ruleId": "foundry_bad_chain", "level": "error", "message": {"text": "Foundry mined bad chains: TayfunTurgut/phantom-table"}, "properties": {"repobilityId": 316581, "scanner": "foundry_dataset", "fingerprint": "befe969f755518eeabb11fd269123747e1176dba36ad6c6b5ee10e30eee777ce", "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": "TayfunTurgut/phantom-table#2", "human_labels": ["security_auth_secret", "test_or_ci", "ui_or_frontend"], "issue_number": "2", "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": "TayfunTurgut/phantom-table", "training_usage": "negative_or_unresolved", "confidence_tier": "unresolved", "source_chain_id": "evidence-chain-issue_chain-b1dfb9bfcc47d1e7", "helicopter_views": {}, "artifact_families": {"docs": 1}, "source_chain_kind": "issue_chain", "changed_file_count": 17, "source_graph_label": "source_artifact_without_verification_graph", "changed_file_labels": {"test_or_ci": 6, "ui_or_frontend": 11}, "linked_commit_count": 0, "helicopter_view_count": 0, "source_artifact_count": 1, "classification_reasons": ["source_graph_has_real_artifacts", "link_quality_unresolved", "high_risk_human_feedback_label"], "linked_ci_commit_count": 0, "verification_artifact_count": 0, "design_schema_api_artifact_count": 0}, "text": "Comment chain pattern product: bad_chains\nRepo: TayfunTurgut/phantom-table\nThread: TayfunTurgut/phantom-table#2\nOutcome: not_resolved_or_not_observed\nThread label: thread_has_human_issue_without_fix_context\nSource graph label: source_artifact_without_verification_graph\nReasons: source_graph_has_real_artifacts, link_quality_unresolved, high_risk_human_feedback_label\nChain evidence:\nIssue/PR evidence chain: TayfunTurgut/phantom-table#2\nRepo: TayfunTurgut/phantom-table\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: 17\nLabels: {'security_auth_secret': 1}\nPolarities: {'bad': 1}\nChanged file labels: {'ui_or_frontend': 11, 'test_or_ci': 6}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-451d5f3d4dec6326\",\n    \"kind\": \"pull_request_body\",\n    \"label\": \"security_auth_secret\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/TayfunTurgut/phantom-table/pull/2\",\n    \"text\": \"GitHub feedback: security_auth_secret\\nPolarity: bad\\nKind: pull_request_body\\nRepo: TayfunTurgut/phantom-table\\nAuthor: TayfunTurgut (User)\\nURL: https://github.com/TayfunTurgut/phantom-table/pull/2\\nTitle: Add N-player support, archetypes, and analytics (M7)\\nBody:\\n## Summary\\n\\nExtends the Love Letter playtesting tool to support **2\u20134 players**, adds **player archetypes**, a **multi-game runner**, and an **analytics layer**.\\n\\n### N-player support & deterministic round resolver\\n- Pure `resolve_round()` scores rounds (highest card, discard-sum tiebreak, full ties shared \u2014 each winner +1 token), with a single-card assertion to catch state corruption.\\n- LLM Game Master now only narrates and deals; scoring is engine-computed and passed into the prompt so narration can't disagree.\\n- Classic variant capped at 4 players (5\u20136 need the 21-card deck); per-count token thresholds surfaced in the GM prompt at runtime.\\n- Multi-winner game-ends share victory (comma-joined `winner`).\\n\\n### Player archetypes (`agents/archetypes.py`)\\n- Six prompt overlays (default/aggressive/cautious/analytical/newbie/bluffer) wired through `PlayerAgent` and `build_playtest_graph`. New `play --archetypes` flag.\\n\\n### Multi-g\"\n  }\n]\nChanged files:\n[\n  {\n    \"id\": \"github-pr-file-file-16240fda97f259e4\",\n    \"filename\": \"src/playtest/agents/archetypes.py\",\n    \"label\": \"ui_or_frontend\",\n    \"status\": \"added\",\n    \"additions\": 59,\n    \"deletions\": 0,\n    \"changes\": 59,\n    \"blob_url\": \"https://github.com/TayfunTurgut/phantom-table/blob/c5a57d9701eeeb89c6cddbffe2c081b273f6ad44/src%2Fplaytest%2Fagents%2Farchetypes.py\"\n  },\n  {\n    \"id\": \"github-pr-file-file-adc0814fd94878db\",\n    \"filename\": \"src/playtest/agents/gm.py\",\n    \"label\": \"ui_or_frontend\",\n    \"status\": \"modified\",\n    \"additions\": 135,\n    \"deletions\": 15,\n    \"changes\": 150,\n    \"blob_url\": \"https://github.com/TayfunTurgut/phantom-table/blob/c5a57d9701eeeb89c6cd\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/TayfunTurgut/phantom-table", "source_id": "comment-chain-pattern-bad_chains-fc36efe92066a85e", "synthetic": false, "gold_label": "", "graph_label": "source_artifact_without_verification_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": "TayfunTurgut/phantom-table", "source_dataset": "comment_chain_patterns/bad_chains", "training_usage": "negative_or_unresolved"}}}, {"ruleId": "foundry_bad_chain", "level": "error", "message": {"text": "Foundry mined bad chains: TayfunTurgut/phantom-table"}, "properties": {"repobilityId": 316580, "scanner": "foundry_dataset", "fingerprint": "fb9574e5ecb86812c6a1551dc591f4942c9b76f1961e4a5e9543b6a2f486bd9e", "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": "TayfunTurgut/phantom-table#1", "human_labels": ["test_ci_gap", "test_or_ci", "ui_or_frontend"], "issue_number": "1", "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": "TayfunTurgut/phantom-table", "training_usage": "negative_or_unresolved", "confidence_tier": "unresolved", "source_chain_id": "evidence-chain-issue_chain-1dfa738fc0fe9861", "helicopter_views": {}, "artifact_families": {"docs": 1}, "source_chain_kind": "issue_chain", "changed_file_count": 9, "source_graph_label": "source_artifact_without_verification_graph", "changed_file_labels": {"test_or_ci": 2, "ui_or_frontend": 7}, "linked_commit_count": 0, "helicopter_view_count": 0, "source_artifact_count": 1, "classification_reasons": ["source_graph_has_real_artifacts", "link_quality_unresolved", "high_risk_human_feedback_label"], "linked_ci_commit_count": 0, "verification_artifact_count": 0, "design_schema_api_artifact_count": 0}, "text": "Comment chain pattern product: bad_chains\nRepo: TayfunTurgut/phantom-table\nThread: TayfunTurgut/phantom-table#1\nOutcome: not_resolved_or_not_observed\nThread label: thread_has_human_issue_without_fix_context\nSource graph label: source_artifact_without_verification_graph\nReasons: source_graph_has_real_artifacts, link_quality_unresolved, high_risk_human_feedback_label\nChain evidence:\nIssue/PR evidence chain: TayfunTurgut/phantom-table#1\nRepo: TayfunTurgut/phantom-table\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: 9\nLabels: {'test_ci_gap': 1}\nPolarities: {'bad': 1}\nChanged file labels: {'ui_or_frontend': 7, 'test_or_ci': 2}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-b01d9588e8c775da\",\n    \"kind\": \"pull_request_body\",\n    \"label\": \"test_ci_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/TayfunTurgut/phantom-table/pull/1\",\n    \"text\": \"GitHub feedback: test_ci_gap\\nPolarity: bad\\nKind: pull_request_body\\nRepo: TayfunTurgut/phantom-table\\nAuthor: TayfunTurgut (User)\\nURL: https://github.com/TayfunTurgut/phantom-table/pull/1\\nTitle: Implement runtime tool layer (M2)\\nBody:\\n## Summary\\n\\nImplements the M2 runtime tool layer that game agents call during play \u2014 three shared tools plus a dispatch wrapper for generated player-action tools. Player action tools capture *intent* as structured proposals; they never execute game logic (the GM resolves them).\\n\\n- **`GameStateManager`** (`src/playtest/state/manager.py`): in-memory state with caller-filtered views. GM sees everything; player views redact other hands (`[\\\"HIDDEN\\\"] * hand_count`), the removed card, and deck order. `set_state` validates against the structure captured at `initialize` (no hardcoded keys/types), guards non-dict input, and warns if the removed card changes mid-game.\\n- **`RulebookTool`** (`tools/rulebook.py`): lazy-loaded ChromaDB query keyed by the config-dir slug, returning section-prefixed chunks.\\n- **`Get/SetGameStateTool`** (`tools/game_state.py`): OpenAI schemas wrapping the state manager; `set_game_state` is non-strict since the state object is game-specif\"\n  }\n]\nChanged files:\n[\n  {\n    \"id\": \"github-pr-file-file-adc012dc04572abf\",\n    \"filename\": \"src/playtest/ingestion/analyzer.py\",\n    \"label\": \"ui_or_frontend\",\n    \"status\": \"modified\",\n    \"additions\": 4,\n    \"deletions\": 0,\n    \"changes\": 4,\n    \"blob_url\": \"https://github.com/TayfunTurgut/phantom-table/blob/1f148e57b834ab9e3cca36c40deb89722a16ee2e/src%2Fplaytest%2Fingestion%2Fanalyzer.py\"\n  },\n  {\n    \"id\": \"github-pr-file-file-5b800baee4873a61\",\n    \"filename\": \"src/playtest/ingestion/pipeline.py\",\n    \"label\": \"ui_or_frontend\",\n    \"status\": \"modified\",\n    \"additions\": 1,\n    \"deletions\": 3,\n    \"changes\": 4,\n    \"blob_url\": \"https://github.com/TayfunTurgut/phantom-table/blob/1f148e57b834ab9e3cca36c40deb89722a16ee\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/TayfunTurgut/phantom-table", "source_id": "comment-chain-pattern-bad_chains-b10dcedb8fb6f6bc", "synthetic": false, "gold_label": "", "graph_label": "source_artifact_without_verification_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": "TayfunTurgut/phantom-table", "source_dataset": "comment_chain_patterns/bad_chains", "training_usage": "negative_or_unresolved"}}}, {"ruleId": "scanner-9710c8d059e53154", "level": "none", "message": {"text": "No frontend routes/components detected"}, "properties": {"repobilityId": "44ca61485762e494", "scanner": "scanner-primary", "fingerprint": "9710c8d059e53154", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["coverage"]}}, {"ruleId": "scanner-4601e3ad3bb28677", "level": "warning", "message": {"text": "No CI/CD pipelines detected"}, "properties": {"repobilityId": "c3ee439bce2bc51e", "scanner": "scanner-primary", "fingerprint": "4601e3ad3bb28677", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["coverage"]}}, {"ruleId": "scanner-ea8f3013f588db25", "level": "note", "message": {"text": "Shallow git history limits provenance confidence"}, "properties": {"repobilityId": "ac745162514a0b8f", "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": "00a88693b5cb1ad0", "scanner": "scanner-primary", "fingerprint": "8424db9c75e04ba4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["provenance", "git-history", "generated-repo-pattern"]}}, {"ruleId": "scanner-2c04133e54348533", "level": "note", "message": {"text": "Near-duplicate function bodies in 2 places"}, "properties": {"repobilityId": "0624fcc125dfb4a6", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-be46ea126aa5d8dc", "level": "note", "message": {"text": "Near-duplicate function bodies in 3 places"}, "properties": {"repobilityId": "02f41d57e118cacc", "scanner": "scanner-primary", "fingerprint": "be46ea126aa5d8dc", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}]}]}