{"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: yang960920/LiveNovelAI", "shortDescription": {"text": "Foundry mined unresolved feedback: yang960920/LiveNovelAI"}, "fullDescription": {"text": "Graph query export: Human feedback without linked fix evidence\nQuery id: unresolved_feedback\nQuery type: motif_query\nIntent: Negative/unresolved examples that should not be hallucinated into fixes.\nMotif: unlinked_feedback_needs_evidence\nTraining usage: negative_or_unresolved\nGraph gold label: supported_by_verification_signal\nRepo: yang960920/LiveNovelAI\nThread: yang960920/LiveNovelAI#7\nEvidence:\nGraph motif: Human feedback exists without a linked fix\nMotif id: unlinked_feedback_needs_evidence\nPolarity: bad\nTraining usage: negative_or_unresolved\nSeverity: medium\nRepo: yang960920/LiveNovelAI\nThread: yang960920/LiveNovelAI#7\nGraph gold label: supported_by_verification_signal\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: yang960920/LiveNovelAI#7\nRepo: yang960920/LiveNovelAI\nIssue/PR number: 7\nGraph consistency label: supported_by_verification_signal\nNodes: 26\nEdges: 45\nNode types: {'link_quality': 7, 'comment': 4, 'comment_chain': 4, 'commit': 3, 'pr_file': 2, 'thread':"}, "properties": {"scanner": "foundry_dataset", "category": "practices", "severity": "medium", "confidence": 0.7, "cwe": "", "owasp": ""}}, {"id": "foundry_blueprint_gap", "name": "Foundry mined blueprint gap alignment: yang960920/LiveNovelAI", "shortDescription": {"text": "Foundry mined blueprint gap alignment: yang960920/LiveNovelAI"}, "fullDescription": {"text": "Graph query export: Human feedback aligned with blueprint or architecture gaps\nQuery id: blueprint_gap_alignment\nQuery type: motif_query\nIntent: Curriculum-gap examples connecting issue threads to helicopter-view gaps.\nMotif: blueprint_gap_alignment\nTraining usage: curriculum_gap\nGraph gold label: supported_by_verification_signal\nRepo: yang960920/LiveNovelAI\nThread: yang960920/LiveNovelAI#7\nEvidence:\nGraph motif: Human feedback aligns with blueprint or architecture gaps\nMotif id: blueprint_gap_alignment\nPolarity: mixed\nTraining usage: curriculum_gap\nSeverity: medium\nRepo: yang960920/LiveNovelAI\nThread: yang960920/LiveNovelAI#7\nGraph gold label: supported_by_verification_signal\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: yang960920/LiveNovelAI#7\nRepo: yang960920/LiveNovelAI\nIssue/PR number: 7\nGraph consistency label: supported_by_verification_signal\nNodes: 26\nEdges: 45\nNode types: {'link_quality': 7, 'comment': 4, 'comment_chain': 4, 'commit': 3, 'pr_file': 2, 'thre"}, "properties": {"scanner": "foundry_dataset", "category": "tech_debt", "severity": "medium", "confidence": 0.7, "cwe": "", "owasp": ""}}, {"id": "foundry_assumption_check", "name": "Foundry mined assumption checks: yang960920/LiveNovelAI", "shortDescription": {"text": "Foundry mined assumption checks: yang960920/LiveNovelAI"}, "fullDescription": {"text": "Comment chain pattern product: assumption_checks\nRepo: yang960920/LiveNovelAI\nThread: yang960920/LiveNovelAI#1\nOutcome: claimed_resolved_unverified\nThread label: thread_has_human_issue_and_fix_context\nSource graph label: source_backed_multi_signal_graph\nReasons: source_graph_has_real_artifacts, source_graph_has_verification_artifacts, repo_has_isolated_helicopter_views, link_quality_high_confidence, high_risk_human_feedback_label\nChain evidence:\nIssue/PR evidence chain: yang960920/LiveNovelAI#1\nRepo: yang960920/LiveNovelAI\nThread label: thread_has_human_issue_and_fix_context\nOutcome: claimed_resolved_unverified\nComment count: 4\nLinked commit count: 6\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 1\nLabels: {'test_ci_gap': 1, 'deployment_env_gap': 1, 'human_feedback_general': 1, 'security_auth_secret': 1}\nPolarities: {'bad': 3, 'neutral': 1}\nChanged file labels: {'test_or_ci': 1}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-2d6c2dc8a1c9e88a\",\n    \"kind\": \"pull_"}, "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: yang960920/LiveNovelAI", "shortDescription": {"text": "Foundry mined test ci gap after feedback: yang960920/LiveNovelAI"}, "fullDescription": {"text": "Graph query export: Feedback exposes missing tests or CI\nQuery id: test_ci_gap_after_feedback\nQuery type: motif_query\nIntent: Hard negatives for feedback/fix chains without adequate guardrails.\nMotif: test_ci_gap_after_feedback\nTraining usage: hard_negative\nGraph gold label: supported_by_verification_signal\nRepo: yang960920/LiveNovelAI\nThread: yang960920/LiveNovelAI#7\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: yang960920/LiveNovelAI\nThread: yang960920/LiveNovelAI#7\nGraph gold label: supported_by_verification_signal\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: yang960920/LiveNovelAI#7\nRepo: yang960920/LiveNovelAI\nIssue/PR number: 7\nGraph consistency label: supported_by_verification_signal\nNodes: 26\nEdges: 45\nNode types: {'link_quality': 7, 'comment': 4, 'comment_chain': 4, 'commit': 3, 'pr_file': 2, 'thread': 1, 'repo': 1, 'issu"}, "properties": {"scanner": "foundry_dataset", "category": "testing", "severity": "high", "confidence": 0.78, "cwe": "", "owasp": ""}}, {"id": "foundry_bad_chain", "name": "Foundry mined bad chains: yang960920/LiveNovelAI", "shortDescription": {"text": "Foundry mined bad chains: yang960920/LiveNovelAI"}, "fullDescription": {"text": "Comment chain pattern product: bad_chains\nRepo: yang960920/LiveNovelAI\nThread: yang960920/LiveNovelAI#7\nOutcome: not_resolved_or_not_observed\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: yang960920/LiveNovelAI#7\nRepo: yang960920/LiveNovelAI\nThread label: thread_has_human_issue_and_fix_context\nOutcome: not_resolved_or_not_observed\nComment count: 4\nLinked commit count: 3\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 2\nLabels: {'test_ci_gap': 1, 'deployment_env_gap': 1, 'human_feedback_general': 1, 'security_auth_secret': 1}\nPolarities: {'bad': 3, 'neutral': 1}\nChanged file labels: {'dependency_or_build': 2}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-10de99cd6555955d\",\n    \"kind\": \""}, "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: yang960920/LiveNovelAI", "shortDescription": {"text": "Foundry mined security auth guardrail gaps: yang960920/LiveNovelAI"}, "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_verification_signal\nRepo: yang960920/LiveNovelAI\nThread: yang960920/LiveNovelAI#7\nEvidence:\nGraph motif: Security/auth change without enough guardrails\nMotif id: security_auth_without_guardrails\nPolarity: bad\nTraining usage: assumption_check\nSeverity: critical\nRepo: yang960920/LiveNovelAI\nThread: yang960920/LiveNovelAI#7\nGraph gold label: supported_by_verification_signal\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: yang960920/LiveNovelAI#7\nRepo: yang960920/LiveNovelAI\nIssue/PR number: 7\nGraph consistency label: supported_by_verification_signal\nNodes: 26\nEdges: 45\nNode types: {'link_quality': 7, 'comment': 4, 'comment_chain': 4, 'commit': 3, 'pr_file': 2, 't"}, "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: yang960920/LiveNovelAI", "shortDescription": {"text": "Foundry mined mock as real or placeholder: yang960920/LiveNovelAI"}, "fullDescription": {"text": "Graph query export: Mock, sample, placeholder, or self-attested behavior treated as real\nQuery id: mock_as_real_or_placeholder\nQuery type: motif_query\nIntent: Hard negatives for fake completeness and missing real data paths.\nMotif: mock_as_real_or_placeholder\nTraining usage: hard_negative\nGraph gold label: weak_supervision_needs_review\nRepo: yang960920/LiveNovelAI\nThread: yang960920/LiveNovelAI#3\nEvidence:\nGraph motif: Mock, sample, placeholder, or self-attested behavior treated as real\nMotif id: mock_as_real_or_placeholder\nPolarity: bad\nTraining usage: hard_negative\nSeverity: critical\nRepo: yang960920/LiveNovelAI\nThread: yang960920/LiveNovelAI#3\nGraph gold label: weak_supervision_needs_review\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: yang960920/LiveNovelAI#3\nRepo: yang960920/LiveNovelAI\nIssue/PR number: 3\nGraph consistency label: weak_supervision_needs_review\nNodes: 21\nEdges: 39\nNode types: {'link_quality': 6, 'comment': 4, 'comment_chain': 4, 'pr_file': 2, 'thr"}, "properties": {"scanner": "foundry_dataset", "category": "practices", "severity": "critical", "confidence": 0.82, "cwe": "", "owasp": ""}}, {"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-d59df3c86b29db78", "name": "Stray `console.log` in TS/JS \u2014 scripts/backfill-character-asset-folders.ts:36", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/backfill-character-asset-folders.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-10c8a60b4ee494fa", "name": "Stray `console.log` in TS/JS \u2014 scripts/backfill-memory-embeddings.ts:34", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/backfill-memory-embeddings.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-b1e3de87526eaff0", "name": "Stray `console.log` in TS/JS \u2014 scripts/seed-frontier-story.ts:598", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/seed-frontier-story.ts:598"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-3c5fa9855939c4fc", "name": "Stray `console.log` in TS/JS \u2014 prisma/seed.ts:492", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 prisma/seed.ts:492"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-5a6d2256b759ad33", "name": "`truncate` class without `title=` for hover reveal \u2014 components/layout/TopNav.tsx:105", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 components/layout/TopNav.tsx:105"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-9b75ff487c9dadfd", "name": "`truncate` class without `title=` for hover reveal \u2014 components/play/StoryFeed.tsx:134", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 components/play/StoryFeed.tsx:134"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-8bc3d41d249e17c9", "name": "`truncate` class without `title=` for hover reveal \u2014 components/play/VisualNovelPreview.tsx:51", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 components/play/VisualNovelPreview.tsx:51"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-9f079e9277547f51", "name": "`truncate` class without `title=` for hover reveal \u2014 components/play/ScenarioHub.tsx:82", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 components/play/ScenarioHub.tsx:82"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-93216b0bc104e9bd", "name": "`truncate` class without `title=` for hover reveal \u2014 components/world-builder/StoryBuilderShell.tsx:391", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 components/world-builder/StoryBuilderShell.tsx:391"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-a99f2e462d8c70ef", "name": "React Flow edge with `label=` but no project-wide edge-label CSS override \u2014 components/world-builder/tabs/EndingSettingT", "shortDescription": {"text": "React Flow edge with `label=` but no project-wide edge-label CSS override \u2014 components/world-builder/tabs/EndingSettingTab.tsx:55"}, "fullDescription": {"text": "React Flow edge labels render with a white rectangle behind the text by default, which scatters bright boxes across a dark canvas. Either drop the label, or override `.react-flow__edge-textbg` and `.react-flow__edge-text` in your stylesheet.\n\nWhy: P-H in CHECKLIST.md \u2014 vendor edge labels bleed white through a dark canvas.\nRule id: fq.edge-label.no-bg"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-225be9d3a54d6797", "name": "`truncate` class without `title=` for hover reveal \u2014 components/world-builder/tabs/ProfileTab.tsx:242", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 components/world-builder/tabs/ProfileTab.tsx:242"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-a7e6989116b8e140", "name": "`truncate` class without `title=` for hover reveal \u2014 components/character-builder/CharacterBuilderShell.tsx:206", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 components/character-builder/CharacterBuilderShell.tsx:206"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-fc198c4ea6169f69", "name": "`truncate` class without `title=` for hover reveal \u2014 components/memory/FamilyConsolidate.tsx:52", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 components/memory/FamilyConsolidate.tsx:52"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-8b02b9e9e4a06a19", "name": "`truncate` class without `title=` for hover reveal \u2014 components/asset/AssetFolderManager.tsx:435", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 components/asset/AssetFolderManager.tsx:435"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-20dec19387fc74c8", "name": "`truncate` class without `title=` for hover reveal \u2014 components/asset/AssetImportPicker.tsx:173", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 components/asset/AssetImportPicker.tsx:173"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-fe49cd51befb33d7", "name": "`truncate` class without `title=` for hover reveal \u2014 components/asset/SpriteSheetFields.tsx:330", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 components/asset/SpriteSheetFields.tsx:330"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-4e6eb93a0a442a5f", "name": "`truncate` class without `title=` for hover reveal \u2014 components/world/WorldCard.tsx:98", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 components/world/WorldCard.tsx:98"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-7ff4c194907c2f4b", "name": "`truncate` class without `title=` for hover reveal \u2014 components/world/QualitySimulationCard.tsx:49", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 components/world/QualitySimulationCard.tsx:49"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-7f4bba2898b84de2", "name": "`truncate` class without `title=` for hover reveal \u2014 components/world/CreatorDiagnosticsCard.tsx:90", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 components/world/CreatorDiagnosticsCard.tsx:90"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-0162a9ad7f5b2954", "name": "`truncate` class without `title=` for hover reveal \u2014 app/play/[sessionId]/page.tsx:502", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 app/play/[sessionId]/page.tsx:502"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-883355b4daf99f9a", "name": "`truncate` class without `title=` for hover reveal \u2014 app/me/import/[runId]/page.tsx:159", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 app/me/import/[runId]/page.tsx:159"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-96a084369eda4ddd", "name": "Stray `console.log` in TS/JS \u2014 lib/email/sender-console.ts:20", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 lib/email/sender-console.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-2123907a66adc200", "name": "React Flow edge with `label=` but no project-wide edge-label CSS override \u2014 lib/play/forced-ending.ts:70", "shortDescription": {"text": "React Flow edge with `label=` but no project-wide edge-label CSS override \u2014 lib/play/forced-ending.ts:70"}, "fullDescription": {"text": "React Flow edge labels render with a white rectangle behind the text by default, which scatters bright boxes across a dark canvas. Either drop the label, or override `.react-flow__edge-textbg` and `.react-flow__edge-text` in your stylesheet.\n\nWhy: P-H in CHECKLIST.md \u2014 vendor edge labels bleed white through a dark canvas.\nRule id: fq.edge-label.no-bg"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-cc4cbae2f2538af1", "name": "React Flow edge with `label=` but no project-wide edge-label CSS override \u2014 lib/quality/simulation-qa.ts:213", "shortDescription": {"text": "React Flow edge with `label=` but no project-wide edge-label CSS override \u2014 lib/quality/simulation-qa.ts:213"}, "fullDescription": {"text": "React Flow edge labels render with a white rectangle behind the text by default, which scatters bright boxes across a dark canvas. Either drop the label, or override `.react-flow__edge-textbg` and `.react-flow__edge-text` in your stylesheet.\n\nWhy: P-H in CHECKLIST.md \u2014 vendor edge labels bleed white through a dark canvas.\nRule id: fq.edge-label.no-bg"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-ff0a2429e5640e28", "name": "Stray `console.log` in TS/JS \u2014 lib/providers/model-log.ts:52", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 lib/providers/model-log.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-200bbf9ec223228c", "name": "TODO/FIXME marker in shipping code \u2014 lib/actions/asset.ts:854", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 lib/actions/asset.ts:854"}, "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-99d11ccfef511064", "name": "Privileged port 13 in use", "shortDescription": {"text": "Privileged port 13 in use"}, "fullDescription": {"text": "Port 13 is privileged (<1024). Make sure the service runs with the right caps or front it with a non-privileged port via a load balancer."}, "properties": {"scanner": "scanner-primary", "layer": "network", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-151f6332cafa7163", "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-a35c6a00f751880f", "name": "Docker base image is tag-pinned but not digest-pinned: node:20-slim", "shortDescription": {"text": "Docker base image is tag-pinned but not digest-pinned: node:20-slim"}, "fullDescription": {"text": "Container tags can be retagged upstream. Pin production base images to a reviewed digest (`image@sha256:...`) when reproducibility and supply-chain integrity matter."}, "properties": {"scanner": "scanner-primary", "layer": "hardware", "severity": "low", "confidence": 1.0}}, {"id": "scanner-aa5acaa49eb8315b", "name": "Containers defined but no K8s/orchestration manifest found", "shortDescription": {"text": "Containers defined but no K8s/orchestration manifest found"}, "fullDescription": {"text": "Repo has Dockerfiles/compose but no Kubernetes/Nomad manifests. If the target deployment is K8s, the manifests may live in a separate ops repo."}, "properties": {"scanner": "scanner-primary", "layer": "hardware", "severity": "low", "confidence": 1.0}}, {"id": "scanner-f86a002afaeb4fb4", "name": "Insecure pattern 'node_child_process' in scripts/check-drift.mjs:20", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/check-drift.mjs:20"}, "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-27924aa79fa4a517", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/checkout@v4 can move without a code change in this repo. Pin third-party actions to a reviewed 40-character commit SHA."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "low", "confidence": 1.0}}, {"id": "scanner-94bcc894fa8dc285", "name": "Very large file: lib/actions/play.ts (1216 lines)", "shortDescription": {"text": "Very large file: lib/actions/play.ts (1216 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-141b30a41e03817b", "name": "No license file detected", "shortDescription": {"text": "No license file detected"}, "fullDescription": {"text": "No LICENSE/COPYING/NOTICE file was found. Generated repositories often omit licensing, which blocks reuse and automated intake."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-8983e5cad3bd8a20", "name": "Node manifest has dependencies but no lockfile: demo/package.json", "shortDescription": {"text": "Node manifest has dependencies but no lockfile: demo/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 35 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 431 placeholder/mock markers across 117 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-9d79c4077342a7d0", "name": "Runtime service client appears to use placeholder configuration", "shortDescription": {"text": "Runtime service client appears to use placeholder configuration"}, "fullDescription": {"text": "A runtime source file appears to wire Supabase/Firebase/AI/payment-style clients to placeholder URLs, keys, or fallback values. In the Fable corpus this often means the UI/API shape is present while the backend service is not actually configured."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-2d0c7b7ab8f8aacf", "name": "Critical user flow still appears backed by mock or placeholder data", "shortDescription": {"text": "Critical user flow still appears backed by mock or placeholder data"}, "fullDescription": {"text": "A payment/auth/admin/order/billing-style flow contains mock, fake, TODO, dummy, or placeholder markers in runtime source. In the Fable corpus this is a high-leverage completeness smell: the app can look finished while the money, identity, or tenant flow is still scaffolded."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-b9088664ace7f748", "name": "Composite production-readiness gap", "shortDescription": {"text": "Composite production-readiness gap"}, "fullDescription": {"text": "Multiple low-cost hardening controls are missing together: license, lockfile. Opus verification showed these co-occurring gaps are a better readiness signal than reading each flag in isolation."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-749d4bc1bd66df5f", "name": "Agent instructions exist but release-hardening basics are missing", "shortDescription": {"text": "Agent instructions exist but release-hardening basics are missing"}, "fullDescription": {"text": "AI-coder instruction files were found, but the repo is missing license, 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-f19801bc529b8241", "name": "Commented-code block (7 lines) in auth.config.ts:61", "shortDescription": {"text": "Commented-code block (7 lines) in auth.config.ts:61"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-c8d95235d6157709", "name": "Commented-code block (10 lines) in next.config.mjs:1", "shortDescription": {"text": "Commented-code block (10 lines) in next.config.mjs:1"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-4d335230e1f8125c", "name": "Commented-code block (6 lines) in scripts/seed-templates.mjs:4", "shortDescription": {"text": "Commented-code block (6 lines) in scripts/seed-templates.mjs:4"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-2ed7d436dac29422", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/seed-frontier-story.ts:459", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/seed-frontier-story.ts:459"}, "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-03ba06f1c2b6208e", "name": "Commented-code block (12 lines) in prisma/seed.ts:68", "shortDescription": {"text": "Commented-code block (12 lines) in prisma/seed.ts:68"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-ae547af297e9bf4e", "name": "Commented-code block (5 lines) in components/asset/AssetFolderManager.tsx:86", "shortDescription": {"text": "Commented-code block (5 lines) in components/asset/AssetFolderManager.tsx:86"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-2c365ab45dd234a6", "name": "Legacy-named symbol `isLegacy` in app/endings/[shareId]/page.tsx:84", "shortDescription": {"text": "Legacy-named symbol `isLegacy` in app/endings/[shareId]/page.tsx:84"}, "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-72ec70401f4a5c34", "name": "Commented-code block (5 lines) in app/play/[sessionId]/page.tsx:375", "shortDescription": {"text": "Commented-code block (5 lines) in app/play/[sessionId]/page.tsx:375"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-1df3ee425fd9ddfe", "name": "Commented-code block (5 lines) in app/chat/[sessionId]/page.tsx:63", "shortDescription": {"text": "Commented-code block (5 lines) in app/chat/[sessionId]/page.tsx:63"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-11915356ab565501", "name": "Legacy-named symbol `isLegacy` in app/me/stories/[sessionId]/page.tsx:251", "shortDescription": {"text": "Legacy-named symbol `isLegacy` in app/me/stories/[sessionId]/page.tsx:251"}, "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-90ed4589267bc11e", "name": "`fetch()` without try/.catch or AbortSignal \u2014 lib/rate-limit.ts:54", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 lib/rate-limit.ts:54"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-1dae9251c5cfcbad", "name": "Legacy-named symbol `isLegacy` in lib/play/ending-share.ts:22", "shortDescription": {"text": "Legacy-named symbol `isLegacy` in lib/play/ending-share.ts:22"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-764ac9ab45824919", "name": "Legacy-named symbol `isLegacy` in lib/play/ending-recap.test.ts:43", "shortDescription": {"text": "Legacy-named symbol `isLegacy` in lib/play/ending-recap.test.ts:43"}, "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-c3edbbc91c7fe691", "name": "Legacy-named symbol `isLegacy` in lib/play/ending-share.test.ts:9", "shortDescription": {"text": "Legacy-named symbol `isLegacy` in lib/play/ending-share.test.ts:9"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-4874c842a105206e", "name": "Legacy-named symbol `isLegacy` in lib/play/ending-book-draft.test.ts:10", "shortDescription": {"text": "Legacy-named symbol `isLegacy` in lib/play/ending-book-draft.test.ts:10"}, "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-7eefdccf9d80fe58", "name": "Commented-code block (6 lines) in lib/play/ai-image-trigger.integration.test.ts:16", "shortDescription": {"text": "Commented-code block (6 lines) in lib/play/ai-image-trigger.integration.test.ts:16"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-368a3c1543ee4526", "name": "Legacy-named symbol `s_old` in lib/play/ending-gallery.test.ts:251", "shortDescription": {"text": "Legacy-named symbol `s_old` in lib/play/ending-gallery.test.ts:251"}, "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-dd7b9fcb96108ebb", "name": "Legacy-named symbol `isLegacy` in lib/play/ending-recap.ts:11", "shortDescription": {"text": "Legacy-named symbol `isLegacy` in lib/play/ending-recap.ts:11"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-703a462fc708384d", "name": "Commented-code block (7 lines) in lib/providers/stat.ts:62", "shortDescription": {"text": "Commented-code block (7 lines) in lib/providers/stat.ts:62"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-10a8f297d72b2406", "name": "`fetch()` without try/.catch or AbortSignal \u2014 lib/billing/toss.ts:60", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 lib/billing/toss.ts:60"}, "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-cc8018eb6fdd9162", "name": "Commented-code block (5 lines) in lib/actions/play.ts:153", "shortDescription": {"text": "Commented-code block (5 lines) in lib/actions/play.ts:153"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-f50200b8498df5a6", "name": "Commented-code block (6 lines) in lib/actions/asset.ts:850", "shortDescription": {"text": "Commented-code block (6 lines) in lib/actions/asset.ts:850"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-76579c8d332d6a18", "name": "Commented-code block (7 lines) in lib/actions/chat.ts:170", "shortDescription": {"text": "Commented-code block (7 lines) in lib/actions/chat.ts:170"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-2c2b70611d8be0d4", "name": "Commented-code block (6 lines) in lib/actions/password.ts:88", "shortDescription": {"text": "Commented-code block (6 lines) in lib/actions/password.ts:88"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-e28dafeae93c66c3", "name": "Commented-code block (7 lines) in lib/actions/signup.ts:111", "shortDescription": {"text": "Commented-code block (7 lines) in lib/actions/signup.ts:111"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-97875e942e4576a0", "name": "Commented-code block (6 lines) in lib/actions/session-prefs.ts:166", "shortDescription": {"text": "Commented-code block (6 lines) in lib/actions/session-prefs.ts:166"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-35a5e1a4422838ba", "name": "Commented-code block (6 lines) in lib/actions/world.ts:399", "shortDescription": {"text": "Commented-code block (6 lines) in lib/actions/world.ts:399"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-ca395a18e146a116", "name": "38 env vars used in code but missing from .env.example", "shortDescription": {"text": "38 env vars used in code but missing from .env.example"}, "fullDescription": {"text": "Drift between code and config docs. The first few: `ADMIN_EMAIL`, `ADMIN_EMAILS`, `ADMIN_SEED_PASSWORD`, `AI_IMAGE_BATCH_CONCURRENCY`, `AI_MODEL_ROUTE_LOG`, `AI_PROVIDER`, `AI_PROVIDERS`, `AI_PROVIDER_ALLOW_MOCK` + 30 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}}]}}, "automationDetails": {"id": "repobility/23130"}, "properties": {"repository": "yang960920/LiveNovelAI", "repoUrl": "https://github.com/yang960920/LiveNovelAI", "branch": "main"}, "results": [{"ruleId": "foundry_unresolved_feedback", "level": "warning", "message": {"text": "Foundry mined unresolved feedback: yang960920/LiveNovelAI"}, "properties": {"repobilityId": 371406, "scanner": "foundry_dataset", "fingerprint": "b4f3e02529c22412ad0f9313d8b665611e099bb9905b9213e684e8b98653cb40", "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, "deployment_env_gap": 1, "dependency_or_build": 2, "security_auth_secret": 1, "verification_or_tests": 2, "human_feedback_general": 1, "unlinked_human_feedback": 1, "mostly follows blueprint": 1, "issue_or_pull_request_thread": 1, "not_resolved_or_not_observed": 4, "ambiguous_needs_more_evidence": 1, "blueprint_human_gap_disagreement": 1, "human_reported_issue_no_linked_fix": 2, "thread_has_human_issue_and_fix_context": 2, "claimed_resolved_with_verification_signal": 1, "human_reported_issue_then_verified_fix_attempt": 1}, "source": "graph_query_export", "motif_id": "unlinked_feedback_needs_evidence", "outcomes": {"not_resolved_or_not_observed": 8, "ambiguous_needs_more_evidence": 2, "claimed_resolved_with_verification_signal": 2}, "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, "thread_touches_file": 2, "alignment_uses_comment": 1, "alignment_uses_finding": 1, "chain_has_link_quality": 7, "comment_aligns_finding": 1, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "issue_chain_touches_file": 2, "thread_has_comment_chain": 4, "comment_chain_links_commit": 3, "comment_chain_touches_file": 8, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 4}, "node_count": 26, "node_types": {"repo": 1, "commit": 3, "thread": 1, "comment": 4, "pr_file": 2, "alignment": 1, "fix_outcome": 1, "issue_chain": 1, "link_quality": 7, "comment_chain": 4, "blueprint_finding": 1}, "query_type": "motif_query", "thread_key": "yang960920/LiveNovelAI#7", "issue_number": "7", "quality_tiers": {"unresolved": 3, "assumption_check": 1, "weak_supervision": 3}, "repo_full_name": "yang960920/LiveNovelAI", "training_usage": "negative_or_unresolved", "source_motif_id": "graph-pattern-motif-thread-97436b160e54f42f", "graph_gold_label": "supported_by_verification_signal", "changed_file_labels": {"dependency_or_build": 14}}, "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: yang960920/LiveNovelAI\nThread: yang960920/LiveNovelAI#7\nEvidence:\nGraph motif: Human feedback exists without a linked fix\nMotif id: unlinked_feedback_needs_evidence\nPolarity: bad\nTraining usage: negative_or_unresolved\nSeverity: medium\nRepo: yang960920/LiveNovelAI\nThread: yang960920/LiveNovelAI#7\nGraph gold label: supported_by_verification_signal\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: yang960920/LiveNovelAI#7\nRepo: yang960920/LiveNovelAI\nIssue/PR number: 7\nGraph consistency label: supported_by_verification_signal\nNodes: 26\nEdges: 45\nNode types: {'link_quality': 7, 'comment': 4, 'comment_chain': 4, 'commit': 3, 'pr_file': 2, 'thread': 1, 'repo': 1, 'issue_chain': 1, 'fix_outcome': 1, 'alignment': 1, 'blueprint_finding': 1}\nEdge types: {'comment_chain_touches_file': 8, 'chain_has_link_quality': 7, 'thread_has_comment': 4, 'thread_has_comment_chain': 4, 'comment_has_chain': 4, 'issue_chain_has_comment_chain': 4, 'comment_chain_links_commit': 3, 'thread_touches_file': 2, 'issue_chain_touches_file': 2, 'repo_has_thread': 1, 'thread_has_issue_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1, 'alignment_uses_comment': 1, 'alignment_uses_finding': 1, 'comment_aligns_finding': 1}\nLabels: {'not_resolved_or_not_observed': 4, 'dependency_or_build': 2, 'verification_or_tests': 2, 'human_reported_issue_no_linked_fix': 2, 'thread_has_human_issue_and_fix_context': 2, 'issue_or_pull_request_thread': 1, 'test_ci_gap': 1, 'deployment_env_gap': 1, 'human_feedback_general': 1, 'security_auth_secret': 1, 'human_reported_issue_then_verified_fix_attempt': 1, 'bug_fix': 1, 'claimed_resolved_with_verification_signal': 1, 'unlinked_human_feedback': 1, 'ambiguous_needs_more_evidence': 1, 'blueprint_human_gap_disagreement': 1}\nOutcomes: {'not_resolved_or_not_observed': 8, 'claimed_resolved_with_verification_signal': 2, 'ambiguous_needs_more_evidence': 2}\nQuality tiers: {'weak_supervision': 3, 'unresolved': 3, 'assumption_check': 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/yang960920/LiveNovelAI", "source_id": "graph-query-motif_query-572baa174a47ae41", "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": "yang960920/LiveNovelAI", "source_dataset": "graph_queries/unresolved_feedback", "training_usage": "negative_or_unresolved"}}}, {"ruleId": "foundry_unresolved_feedback", "level": "warning", "message": {"text": "Foundry mined unresolved feedback: yang960920/LiveNovelAI"}, "properties": {"repobilityId": 371405, "scanner": "foundry_dataset", "fingerprint": "7bc2c8dacff156dd58ae3242c8c097b1fc5aa1f7c26a997535d133ee62c835f0", "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, "deployment_env_gap": 1, "dependency_or_build": 2, "security_auth_secret": 1, "human_feedback_general": 1, "unlinked_human_feedback": 1, "mostly follows blueprint": 1, "issue_or_pull_request_thread": 1, "not_resolved_or_not_observed": 5, "ambiguous_needs_more_evidence": 1, "blueprint_human_gap_disagreement": 1, "human_reported_issue_no_linked_fix": 3, "thread_has_human_issue_without_fix_context": 2}, "source": "graph_query_export", "motif_id": "unlinked_feedback_needs_evidence", "outcomes": {"not_resolved_or_not_observed": 10, "ambiguous_needs_more_evidence": 2}, "polarity": "bad", "query_id": "unresolved_feedback", "severity": "medium", "ci_labels": {}, "synthetic": false, "edge_count": 42, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 4, "thread_has_comment": 4, "thread_touches_file": 2, "alignment_uses_comment": 1, "alignment_uses_finding": 1, "chain_has_link_quality": 7, "comment_aligns_finding": 1, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "issue_chain_touches_file": 2, "thread_has_comment_chain": 4, "comment_chain_touches_file": 8, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 4}, "node_count": 23, "node_types": {"repo": 1, "thread": 1, "comment": 4, "pr_file": 2, "alignment": 1, "fix_outcome": 1, "issue_chain": 1, "link_quality": 7, "comment_chain": 4, "blueprint_finding": 1}, "query_type": "motif_query", "thread_key": "yang960920/LiveNovelAI#6", "issue_number": "6", "quality_tiers": {"unresolved": 6, "assumption_check": 1}, "repo_full_name": "yang960920/LiveNovelAI", "training_usage": "negative_or_unresolved", "source_motif_id": "graph-pattern-motif-thread-c0b9c2942cf37e92", "graph_gold_label": "assumption_check", "changed_file_labels": {"dependency_or_build": 14}}, "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: yang960920/LiveNovelAI\nThread: yang960920/LiveNovelAI#6\nEvidence:\nGraph motif: Human feedback exists without a linked fix\nMotif id: unlinked_feedback_needs_evidence\nPolarity: bad\nTraining usage: negative_or_unresolved\nSeverity: medium\nRepo: yang960920/LiveNovelAI\nThread: yang960920/LiveNovelAI#6\nGraph gold label: assumption_check\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: yang960920/LiveNovelAI#6\nRepo: yang960920/LiveNovelAI\nIssue/PR number: 6\nGraph consistency label: assumption_check\nNodes: 23\nEdges: 42\nNode types: {'link_quality': 7, 'comment': 4, 'comment_chain': 4, 'pr_file': 2, 'thread': 1, 'repo': 1, 'issue_chain': 1, 'fix_outcome': 1, 'alignment': 1, 'blueprint_finding': 1}\nEdge types: {'comment_chain_touches_file': 8, 'chain_has_link_quality': 7, 'thread_has_comment': 4, 'thread_has_comment_chain': 4, 'comment_has_chain': 4, 'issue_chain_has_comment_chain': 4, 'thread_touches_file': 2, 'issue_chain_touches_file': 2, 'repo_has_thread': 1, 'thread_has_issue_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1, 'alignment_uses_comment': 1, 'alignment_uses_finding': 1, 'comment_aligns_finding': 1}\nLabels: {'not_resolved_or_not_observed': 5, 'human_reported_issue_no_linked_fix': 3, 'dependency_or_build': 2, 'thread_has_human_issue_without_fix_context': 2, 'issue_or_pull_request_thread': 1, 'test_ci_gap': 1, 'deployment_env_gap': 1, 'human_feedback_general': 1, 'security_auth_secret': 1, 'unlinked_human_feedback': 1, 'ambiguous_needs_more_evidence': 1, 'blueprint_human_gap_disagreement': 1, 'mostly follows blueprint': 1}\nOutcomes: {'not_resolved_or_not_observed': 10, 'ambiguous_needs_more_evidence': 2}\nQuality tiers: {'unresolved': 6, 'assumption_check': 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/yang960920/LiveNovelAI", "source_id": "graph-query-motif_query-4cf936b8bae58485", "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": "yang960920/LiveNovelAI", "source_dataset": "graph_queries/unresolved_feedback", "training_usage": "negative_or_unresolved"}}}, {"ruleId": "foundry_unresolved_feedback", "level": "warning", "message": {"text": "Foundry mined unresolved feedback: yang960920/LiveNovelAI"}, "properties": {"repobilityId": 371404, "scanner": "foundry_dataset", "fingerprint": "92c446d1144ab07f6370c75a5cf489c43184e26eb49d7aaa0a58b11f63345ab0", "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": {"deployment_env_gap": 1, "dependency_or_build": 2, "security_auth_secret": 2, "human_feedback_general": 1, "unlinked_human_feedback": 1, "issue_or_pull_request_thread": 1, "not_resolved_or_not_observed": 5, "ambiguous_needs_more_evidence": 1, "human_reported_issue_no_linked_fix": 3, "thread_has_human_issue_without_fix_context": 2}, "source": "graph_query_export", "motif_id": "unlinked_feedback_needs_evidence", "outcomes": {"not_resolved_or_not_observed": 10, "ambiguous_needs_more_evidence": 2}, "polarity": "bad", "query_id": "unresolved_feedback", "severity": "medium", "ci_labels": {}, "synthetic": false, "edge_count": 38, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 4, "thread_has_comment": 4, "thread_touches_file": 2, "chain_has_link_quality": 6, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "issue_chain_touches_file": 2, "thread_has_comment_chain": 4, "comment_chain_touches_file": 8, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 4}, "node_count": 20, "node_types": {"repo": 1, "thread": 1, "comment": 4, "pr_file": 2, "fix_outcome": 1, "issue_chain": 1, "link_quality": 6, "comment_chain": 4}, "query_type": "motif_query", "thread_key": "yang960920/LiveNovelAI#5", "issue_number": "5", "quality_tiers": {"unresolved": 6}, "repo_full_name": "yang960920/LiveNovelAI", "training_usage": "negative_or_unresolved", "source_motif_id": "graph-pattern-motif-thread-da28634ac42398d1", "graph_gold_label": "needs_more_evidence", "changed_file_labels": {"dependency_or_build": 14}}, "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: yang960920/LiveNovelAI\nThread: yang960920/LiveNovelAI#5\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: yang960920/LiveNovelAI\nThread: yang960920/LiveNovelAI#5\nGraph gold label: needs_more_evidence\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: yang960920/LiveNovelAI#5\nRepo: yang960920/LiveNovelAI\nIssue/PR number: 5\nGraph consistency label: needs_more_evidence\nNodes: 20\nEdges: 38\nNode types: {'link_quality': 6, 'comment': 4, 'comment_chain': 4, 'pr_file': 2, 'thread': 1, 'repo': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'comment_chain_touches_file': 8, 'chain_has_link_quality': 6, 'thread_has_comment': 4, 'thread_has_comment_chain': 4, 'comment_has_chain': 4, 'issue_chain_has_comment_chain': 4, 'thread_touches_file': 2, 'issue_chain_touches_file': 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': 5, 'human_reported_issue_no_linked_fix': 3, 'security_auth_secret': 2, 'dependency_or_build': 2, 'thread_has_human_issue_without_fix_context': 2, 'issue_or_pull_request_thread': 1, 'deployment_env_gap': 1, 'human_feedback_general': 1, 'unlinked_human_feedback': 1, 'ambiguous_needs_more_evidence': 1}\nOutcomes: {'not_resolved_or_not_observed': 10, 'ambiguous_needs_more_evidence': 2}\nQuality tiers: {'unresolved': 6}\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/yang960920/LiveNovelAI", "source_id": "graph-query-motif_query-94c92b62239bbc19", "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": "yang960920/LiveNovelAI", "source_dataset": "graph_queries/unresolved_feedback", "training_usage": "negative_or_unresolved"}}}, {"ruleId": "foundry_unresolved_feedback", "level": "warning", "message": {"text": "Foundry mined unresolved feedback: yang960920/LiveNovelAI"}, "properties": {"repobilityId": 371403, "scanner": "foundry_dataset", "fingerprint": "ea3cc5326f8b6359954e4ecbd91218f2cf2229021435beec009cab5ec9537d67", "category": "practices", "severity": "medium", "confidence": 0.7, "triageState": "open", "verdict": "needs_review", "isResolved": false, "reason": "Imported from mined Foundry/Fable5 evidence with real GitHub/source provenance. Review source_id before acting.", "evidence": {"meta": {"kind": "graph_query_record", "title": "Human feedback without linked fix evidence", "intent": "Negative/unresolved examples that should not be hallucinated into fixes.", "labels": {"bug_fix": 2, "test_ci_gap": 1, "deployment_env_gap": 1, "dependency_or_build": 3, "security_auth_secret": 1, "verification_or_tests": 2, "human_feedback_general": 1, "unlinked_human_feedback": 1, "mostly follows blueprint": 1, "issue_or_pull_request_thread": 1, "not_resolved_or_not_observed": 4, "ambiguous_needs_more_evidence": 1, "blueprint_human_gap_disagreement": 1, "human_reported_issue_no_linked_fix": 2, "thread_has_human_issue_and_fix_context": 2, "claimed_resolved_with_verification_signal": 1, "human_reported_issue_then_verified_fix_attempt": 1}, "source": "graph_query_export", "motif_id": "unlinked_feedback_needs_evidence", "outcomes": {"not_resolved_or_not_observed": 8, "ambiguous_needs_more_evidence": 2, "claimed_resolved_with_verification_signal": 2}, "polarity": "bad", "query_id": "unresolved_feedback", "severity": "medium", "ci_labels": {}, "synthetic": false, "edge_count": 47, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 4, "thread_has_comment": 4, "thread_touches_file": 2, "alignment_uses_comment": 1, "alignment_uses_finding": 1, "chain_has_link_quality": 7, "comment_aligns_finding": 1, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "issue_chain_touches_file": 2, "thread_has_comment_chain": 4, "comment_chain_links_commit": 5, "comment_chain_touches_file": 8, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 4}, "node_count": 28, "node_types": {"repo": 1, "commit": 5, "thread": 1, "comment": 4, "pr_file": 2, "alignment": 1, "fix_outcome": 1, "issue_chain": 1, "link_quality": 7, "comment_chain": 4, "blueprint_finding": 1}, "query_type": "motif_query", "thread_key": "yang960920/LiveNovelAI#4", "issue_number": "4", "quality_tiers": {"unresolved": 3, "assumption_check": 1, "weak_supervision": 3}, "repo_full_name": "yang960920/LiveNovelAI", "training_usage": "negative_or_unresolved", "source_motif_id": "graph-pattern-motif-thread-2ce20fea19c4d406", "graph_gold_label": "supported_by_verification_signal", "changed_file_labels": {"dependency_or_build": 14}}, "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: yang960920/LiveNovelAI\nThread: yang960920/LiveNovelAI#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: yang960920/LiveNovelAI\nThread: yang960920/LiveNovelAI#4\nGraph gold label: supported_by_verification_signal\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: yang960920/LiveNovelAI#4\nRepo: yang960920/LiveNovelAI\nIssue/PR number: 4\nGraph consistency label: supported_by_verification_signal\nNodes: 28\nEdges: 47\nNode types: {'link_quality': 7, 'commit': 5, 'comment': 4, 'comment_chain': 4, 'pr_file': 2, 'thread': 1, 'repo': 1, 'issue_chain': 1, 'fix_outcome': 1, 'alignment': 1, 'blueprint_finding': 1}\nEdge types: {'comment_chain_touches_file': 8, 'chain_has_link_quality': 7, 'comment_chain_links_commit': 5, 'thread_has_comment': 4, 'thread_has_comment_chain': 4, 'comment_has_chain': 4, 'issue_chain_has_comment_chain': 4, 'thread_touches_file': 2, 'issue_chain_touches_file': 2, 'repo_has_thread': 1, 'thread_has_issue_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1, 'alignment_uses_comment': 1, 'alignment_uses_finding': 1, 'comment_aligns_finding': 1}\nLabels: {'not_resolved_or_not_observed': 4, 'dependency_or_build': 3, 'bug_fix': 2, 'verification_or_tests': 2, 'human_reported_issue_no_linked_fix': 2, 'thread_has_human_issue_and_fix_context': 2, 'issue_or_pull_request_thread': 1, 'test_ci_gap': 1, 'deployment_env_gap': 1, 'human_feedback_general': 1, 'security_auth_secret': 1, 'human_reported_issue_then_verified_fix_attempt': 1, 'claimed_resolved_with_verification_signal': 1, 'unlinked_human_feedback': 1, 'ambiguous_needs_more_evidence': 1, 'blueprint_human_gap_disagreement': 1}\nOutcomes: {'not_resolved_or_not_observed': 8, 'claimed_resolved_with_verification_signal': 2, 'ambiguous_needs_more_evidence': 2}\nQuality tiers: {'weak_supervision': 3, 'unresolved': 3, 'assumption_check': 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/yang960920/LiveNovelAI", "source_id": "graph-query-motif_query-813b4a43b67d18ef", "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": "yang960920/LiveNovelAI", "source_dataset": "graph_queries/unresolved_feedback", "training_usage": "negative_or_unresolved"}}}, {"ruleId": "foundry_unresolved_feedback", "level": "warning", "message": {"text": "Foundry mined unresolved feedback: yang960920/LiveNovelAI"}, "properties": {"repobilityId": 371402, "scanner": "foundry_dataset", "fingerprint": "d485adaa1461ba2fc6cd60e7d2277fb5230b4847af62e17baff4a7c29c20b8da", "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, "mock_placeholder": 1, "deployment_env_gap": 1, "dependency_or_build": 2, "security_auth_secret": 1, "human_feedback_general": 1, "unlinked_human_feedback": 1, "claimed_resolved_unverified": 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, "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": 8, "ambiguous_needs_more_evidence": 2}, "polarity": "bad", "query_id": "unresolved_feedback", "severity": "medium", "ci_labels": {}, "synthetic": false, "edge_count": 39, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 4, "thread_has_comment": 4, "thread_touches_file": 2, "chain_has_link_quality": 6, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "issue_chain_touches_file": 2, "thread_has_comment_chain": 4, "comment_chain_links_commit": 1, "comment_chain_touches_file": 8, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 4}, "node_count": 21, "node_types": {"repo": 1, "commit": 1, "thread": 1, "comment": 4, "pr_file": 2, "fix_outcome": 1, "issue_chain": 1, "link_quality": 6, "comment_chain": 4}, "query_type": "motif_query", "thread_key": "yang960920/LiveNovelAI#3", "issue_number": "3", "quality_tiers": {"unresolved": 3, "weak_supervision": 3}, "repo_full_name": "yang960920/LiveNovelAI", "training_usage": "negative_or_unresolved", "source_motif_id": "graph-pattern-motif-thread-65ef102fbeab177c", "graph_gold_label": "weak_supervision_needs_review", "changed_file_labels": {"dependency_or_build": 14}}, "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: yang960920/LiveNovelAI\nThread: yang960920/LiveNovelAI#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: yang960920/LiveNovelAI\nThread: yang960920/LiveNovelAI#3\nGraph gold label: weak_supervision_needs_review\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: yang960920/LiveNovelAI#3\nRepo: yang960920/LiveNovelAI\nIssue/PR number: 3\nGraph consistency label: weak_supervision_needs_review\nNodes: 21\nEdges: 39\nNode types: {'link_quality': 6, 'comment': 4, 'comment_chain': 4, 'pr_file': 2, 'thread': 1, 'repo': 1, 'commit': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'comment_chain_touches_file': 8, 'chain_has_link_quality': 6, 'thread_has_comment': 4, 'thread_has_comment_chain': 4, 'comment_has_chain': 4, 'issue_chain_has_comment_chain': 4, 'thread_touches_file': 2, 'issue_chain_touches_file': 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: {'not_resolved_or_not_observed': 4, 'dependency_or_build': 2, 'human_reported_issue_no_linked_fix': 2, 'thread_has_human_issue_and_fix_context': 2, 'issue_or_pull_request_thread': 1, 'mock_placeholder': 1, 'deployment_env_gap': 1, 'human_feedback_general': 1, 'security_auth_secret': 1, 'human_reported_issue_then_fix_attempt': 1, 'bug_fix': 1, 'claimed_resolved_unverified': 1, 'unlinked_human_feedback': 1, 'ambiguous_needs_more_evidence': 1}\nOutcomes: {'not_resolved_or_not_observed': 8, 'claimed_resolved_unverified': 2, 'ambiguous_needs_more_evidence': 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/yang960920/LiveNovelAI", "source_id": "graph-query-motif_query-7aec5fe2e6b3d319", "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": "yang960920/LiveNovelAI", "source_dataset": "graph_queries/unresolved_feedback", "training_usage": "negative_or_unresolved"}}}, {"ruleId": "foundry_unresolved_feedback", "level": "warning", "message": {"text": "Foundry mined unresolved feedback: yang960920/LiveNovelAI"}, "properties": {"repobilityId": 371401, "scanner": "foundry_dataset", "fingerprint": "759576c81f8de9d1932eca322d8bdeb7303642b8052178968b29c792d0eee601", "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, "test_ci_gap": 1, "deployment_env_gap": 1, "security_auth_secret": 1, "human_feedback_general": 1, "unlinked_human_feedback": 1, "mostly follows blueprint": 1, "issue_or_pull_request_thread": 1, "not_resolved_or_not_observed": 5, "ambiguous_needs_more_evidence": 1, "blueprint_human_gap_disagreement": 1, "human_reported_issue_no_linked_fix": 3, "thread_has_human_issue_without_fix_context": 2}, "source": "graph_query_export", "motif_id": "unlinked_feedback_needs_evidence", "outcomes": {"not_resolved_or_not_observed": 10, "ambiguous_needs_more_evidence": 2}, "polarity": "bad", "query_id": "unresolved_feedback", "severity": "medium", "ci_labels": {}, "synthetic": false, "edge_count": 36, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 4, "thread_has_comment": 4, "thread_touches_file": 1, "alignment_uses_comment": 1, "alignment_uses_finding": 1, "chain_has_link_quality": 7, "comment_aligns_finding": 1, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "issue_chain_touches_file": 1, "thread_has_comment_chain": 4, "comment_chain_touches_file": 4, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 4}, "node_count": 22, "node_types": {"repo": 1, "thread": 1, "comment": 4, "pr_file": 1, "alignment": 1, "fix_outcome": 1, "issue_chain": 1, "link_quality": 7, "comment_chain": 4, "blueprint_finding": 1}, "query_type": "motif_query", "thread_key": "yang960920/LiveNovelAI#2", "issue_number": "2", "quality_tiers": {"unresolved": 6, "assumption_check": 1}, "repo_full_name": "yang960920/LiveNovelAI", "training_usage": "negative_or_unresolved", "source_motif_id": "graph-pattern-motif-thread-fcfc1989d48f74e4", "graph_gold_label": "assumption_check", "changed_file_labels": {"test_or_ci": 7}}, "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: yang960920/LiveNovelAI\nThread: yang960920/LiveNovelAI#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: yang960920/LiveNovelAI\nThread: yang960920/LiveNovelAI#2\nGraph gold label: assumption_check\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: yang960920/LiveNovelAI#2\nRepo: yang960920/LiveNovelAI\nIssue/PR number: 2\nGraph consistency label: assumption_check\nNodes: 22\nEdges: 36\nNode types: {'link_quality': 7, 'comment': 4, 'comment_chain': 4, 'thread': 1, 'repo': 1, 'pr_file': 1, 'issue_chain': 1, 'fix_outcome': 1, 'alignment': 1, 'blueprint_finding': 1}\nEdge types: {'chain_has_link_quality': 7, 'thread_has_comment': 4, 'thread_has_comment_chain': 4, 'comment_has_chain': 4, 'comment_chain_touches_file': 4, 'issue_chain_has_comment_chain': 4, 'repo_has_thread': 1, 'thread_touches_file': 1, 'thread_has_issue_chain': 1, 'issue_chain_touches_file': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1, 'alignment_uses_comment': 1, 'alignment_uses_finding': 1, 'comment_aligns_finding': 1}\nLabels: {'not_resolved_or_not_observed': 5, 'human_reported_issue_no_linked_fix': 3, 'thread_has_human_issue_without_fix_context': 2, 'issue_or_pull_request_thread': 1, 'test_ci_gap': 1, 'deployment_env_gap': 1, 'human_feedback_general': 1, 'security_auth_secret': 1, 'test_or_ci': 1, 'unlinked_human_feedback': 1, 'ambiguous_needs_more_evidence': 1, 'blueprint_human_gap_disagreement': 1, 'mostly follows blueprint': 1}\nOutcomes: {'not_resolved_or_not_observed': 10, 'ambiguous_needs_more_evidence': 2}\nQuality tiers: {'unresolved': 6, 'assumption_check': 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/yang960920/LiveNovelAI", "source_id": "graph-query-motif_query-e71bf2c754cd3d2b", "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": "yang960920/LiveNovelAI", "source_dataset": "graph_queries/unresolved_feedback", "training_usage": "negative_or_unresolved"}}}, {"ruleId": "foundry_blueprint_gap", "level": "warning", "message": {"text": "Foundry mined blueprint gap alignment: yang960920/LiveNovelAI"}, "properties": {"repobilityId": 357342, "scanner": "foundry_dataset", "fingerprint": "8cdbe9e513e69db6b1e78ba9672ee648ba6d1de31f36a73bdc134c30938c42c3", "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, "deployment_env_gap": 1, "dependency_or_build": 2, "security_auth_secret": 1, "verification_or_tests": 2, "human_feedback_general": 1, "unlinked_human_feedback": 1, "mostly follows blueprint": 1, "issue_or_pull_request_thread": 1, "not_resolved_or_not_observed": 4, "ambiguous_needs_more_evidence": 1, "blueprint_human_gap_disagreement": 1, "human_reported_issue_no_linked_fix": 2, "thread_has_human_issue_and_fix_context": 2, "claimed_resolved_with_verification_signal": 1, "human_reported_issue_then_verified_fix_attempt": 1}, "source": "graph_query_export", "motif_id": "blueprint_gap_alignment", "outcomes": {"not_resolved_or_not_observed": 8, "ambiguous_needs_more_evidence": 2, "claimed_resolved_with_verification_signal": 2}, "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, "thread_touches_file": 2, "alignment_uses_comment": 1, "alignment_uses_finding": 1, "chain_has_link_quality": 7, "comment_aligns_finding": 1, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "issue_chain_touches_file": 2, "thread_has_comment_chain": 4, "comment_chain_links_commit": 3, "comment_chain_touches_file": 8, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 4}, "node_count": 26, "node_types": {"repo": 1, "commit": 3, "thread": 1, "comment": 4, "pr_file": 2, "alignment": 1, "fix_outcome": 1, "issue_chain": 1, "link_quality": 7, "comment_chain": 4, "blueprint_finding": 1}, "query_type": "motif_query", "thread_key": "yang960920/LiveNovelAI#7", "issue_number": "7", "quality_tiers": {"unresolved": 3, "assumption_check": 1, "weak_supervision": 3}, "repo_full_name": "yang960920/LiveNovelAI", "training_usage": "curriculum_gap", "source_motif_id": "graph-pattern-motif-thread-f6f276cb83a694e6", "graph_gold_label": "supported_by_verification_signal", "changed_file_labels": {"dependency_or_build": 14}}, "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: yang960920/LiveNovelAI\nThread: yang960920/LiveNovelAI#7\nEvidence:\nGraph motif: Human feedback aligns with blueprint or architecture gaps\nMotif id: blueprint_gap_alignment\nPolarity: mixed\nTraining usage: curriculum_gap\nSeverity: medium\nRepo: yang960920/LiveNovelAI\nThread: yang960920/LiveNovelAI#7\nGraph gold label: supported_by_verification_signal\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: yang960920/LiveNovelAI#7\nRepo: yang960920/LiveNovelAI\nIssue/PR number: 7\nGraph consistency label: supported_by_verification_signal\nNodes: 26\nEdges: 45\nNode types: {'link_quality': 7, 'comment': 4, 'comment_chain': 4, 'commit': 3, 'pr_file': 2, 'thread': 1, 'repo': 1, 'issue_chain': 1, 'fix_outcome': 1, 'alignment': 1, 'blueprint_finding': 1}\nEdge types: {'comment_chain_touches_file': 8, 'chain_has_link_quality': 7, 'thread_has_comment': 4, 'thread_has_comment_chain': 4, 'comment_has_chain': 4, 'issue_chain_has_comment_chain': 4, 'comment_chain_links_commit': 3, 'thread_touches_file': 2, 'issue_chain_touches_file': 2, 'repo_has_thread': 1, 'thread_has_issue_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1, 'alignment_uses_comment': 1, 'alignment_uses_finding': 1, 'comment_aligns_finding': 1}\nLabels: {'not_resolved_or_not_observed': 4, 'dependency_or_build': 2, 'verification_or_tests': 2, 'human_reported_issue_no_linked_fix': 2, 'thread_has_human_issue_and_fix_context': 2, 'issue_or_pull_request_thread': 1, 'test_ci_gap': 1, 'deployment_env_gap': 1, 'human_feedback_general': 1, 'security_auth_secret': 1, 'human_reported_issue_then_verified_fix_attempt': 1, 'bug_fix': 1, 'claimed_resolved_with_verification_signal': 1, 'unlinked_human_feedback': 1, 'ambiguous_needs_more_evidence': 1, 'blueprint_human_gap_disagreement': 1}\nOutcomes: {'not_resolved_or_not_observed': 8, 'claimed_resolved_with_verification_signal': 2, 'ambiguous_needs_more_evidence': 2}\nQuality tiers: {'weak_supervision': 3, 'unresolved': 3, 'assumption_check': 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/yang960920/LiveNovelAI", "source_id": "graph-query-motif_query-02d0a76a7c17bfbb", "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": "yang960920/LiveNovelAI", "source_dataset": "graph_queries/blueprint_gap_alignment", "training_usage": "curriculum_gap"}}}, {"ruleId": "foundry_blueprint_gap", "level": "warning", "message": {"text": "Foundry mined blueprint gap alignment: yang960920/LiveNovelAI"}, "properties": {"repobilityId": 357341, "scanner": "foundry_dataset", "fingerprint": "c3aed5fb10c65ad83bd0136c8bf4bfa39889a2ad6f4f3c84e4e42913727d5e23", "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, "deployment_env_gap": 1, "dependency_or_build": 2, "security_auth_secret": 1, "human_feedback_general": 1, "unlinked_human_feedback": 1, "mostly follows blueprint": 1, "issue_or_pull_request_thread": 1, "not_resolved_or_not_observed": 5, "ambiguous_needs_more_evidence": 1, "blueprint_human_gap_disagreement": 1, "human_reported_issue_no_linked_fix": 3, "thread_has_human_issue_without_fix_context": 2}, "source": "graph_query_export", "motif_id": "blueprint_gap_alignment", "outcomes": {"not_resolved_or_not_observed": 10, "ambiguous_needs_more_evidence": 2}, "polarity": "mixed", "query_id": "blueprint_gap_alignment", "severity": "medium", "ci_labels": {}, "synthetic": false, "edge_count": 42, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 4, "thread_has_comment": 4, "thread_touches_file": 2, "alignment_uses_comment": 1, "alignment_uses_finding": 1, "chain_has_link_quality": 7, "comment_aligns_finding": 1, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "issue_chain_touches_file": 2, "thread_has_comment_chain": 4, "comment_chain_touches_file": 8, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 4}, "node_count": 23, "node_types": {"repo": 1, "thread": 1, "comment": 4, "pr_file": 2, "alignment": 1, "fix_outcome": 1, "issue_chain": 1, "link_quality": 7, "comment_chain": 4, "blueprint_finding": 1}, "query_type": "motif_query", "thread_key": "yang960920/LiveNovelAI#6", "issue_number": "6", "quality_tiers": {"unresolved": 6, "assumption_check": 1}, "repo_full_name": "yang960920/LiveNovelAI", "training_usage": "curriculum_gap", "source_motif_id": "graph-pattern-motif-thread-37f9391d8b31eb06", "graph_gold_label": "assumption_check", "changed_file_labels": {"dependency_or_build": 14}}, "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: yang960920/LiveNovelAI\nThread: yang960920/LiveNovelAI#6\nEvidence:\nGraph motif: Human feedback aligns with blueprint or architecture gaps\nMotif id: blueprint_gap_alignment\nPolarity: mixed\nTraining usage: curriculum_gap\nSeverity: medium\nRepo: yang960920/LiveNovelAI\nThread: yang960920/LiveNovelAI#6\nGraph gold label: assumption_check\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: yang960920/LiveNovelAI#6\nRepo: yang960920/LiveNovelAI\nIssue/PR number: 6\nGraph consistency label: assumption_check\nNodes: 23\nEdges: 42\nNode types: {'link_quality': 7, 'comment': 4, 'comment_chain': 4, 'pr_file': 2, 'thread': 1, 'repo': 1, 'issue_chain': 1, 'fix_outcome': 1, 'alignment': 1, 'blueprint_finding': 1}\nEdge types: {'comment_chain_touches_file': 8, 'chain_has_link_quality': 7, 'thread_has_comment': 4, 'thread_has_comment_chain': 4, 'comment_has_chain': 4, 'issue_chain_has_comment_chain': 4, 'thread_touches_file': 2, 'issue_chain_touches_file': 2, 'repo_has_thread': 1, 'thread_has_issue_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1, 'alignment_uses_comment': 1, 'alignment_uses_finding': 1, 'comment_aligns_finding': 1}\nLabels: {'not_resolved_or_not_observed': 5, 'human_reported_issue_no_linked_fix': 3, 'dependency_or_build': 2, 'thread_has_human_issue_without_fix_context': 2, 'issue_or_pull_request_thread': 1, 'test_ci_gap': 1, 'deployment_env_gap': 1, 'human_feedback_general': 1, 'security_auth_secret': 1, 'unlinked_human_feedback': 1, 'ambiguous_needs_more_evidence': 1, 'blueprint_human_gap_disagreement': 1, 'mostly follows blueprint': 1}\nOutcomes: {'not_resolved_or_not_observed': 10, 'ambiguous_needs_more_evidence': 2}\nQuality tiers: {'unresolved': 6, 'assumption_check': 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/yang960920/LiveNovelAI", "source_id": "graph-query-motif_query-f953203ae66b0d6b", "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": "yang960920/LiveNovelAI", "source_dataset": "graph_queries/blueprint_gap_alignment", "training_usage": "curriculum_gap"}}}, {"ruleId": "foundry_blueprint_gap", "level": "warning", "message": {"text": "Foundry mined blueprint gap alignment: yang960920/LiveNovelAI"}, "properties": {"repobilityId": 357340, "scanner": "foundry_dataset", "fingerprint": "eb6eb0bef03d26382e1a9595cc37cc8e00d2986da97d96629fea51a6b35d161d", "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, "deployment_env_gap": 1, "dependency_or_build": 3, "security_auth_secret": 1, "verification_or_tests": 2, "human_feedback_general": 1, "unlinked_human_feedback": 1, "mostly follows blueprint": 1, "issue_or_pull_request_thread": 1, "not_resolved_or_not_observed": 4, "ambiguous_needs_more_evidence": 1, "blueprint_human_gap_disagreement": 1, "human_reported_issue_no_linked_fix": 2, "thread_has_human_issue_and_fix_context": 2, "claimed_resolved_with_verification_signal": 1, "human_reported_issue_then_verified_fix_attempt": 1}, "source": "graph_query_export", "motif_id": "blueprint_gap_alignment", "outcomes": {"not_resolved_or_not_observed": 8, "ambiguous_needs_more_evidence": 2, "claimed_resolved_with_verification_signal": 2}, "polarity": "mixed", "query_id": "blueprint_gap_alignment", "severity": "medium", "ci_labels": {}, "synthetic": false, "edge_count": 47, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 4, "thread_has_comment": 4, "thread_touches_file": 2, "alignment_uses_comment": 1, "alignment_uses_finding": 1, "chain_has_link_quality": 7, "comment_aligns_finding": 1, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "issue_chain_touches_file": 2, "thread_has_comment_chain": 4, "comment_chain_links_commit": 5, "comment_chain_touches_file": 8, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 4}, "node_count": 28, "node_types": {"repo": 1, "commit": 5, "thread": 1, "comment": 4, "pr_file": 2, "alignment": 1, "fix_outcome": 1, "issue_chain": 1, "link_quality": 7, "comment_chain": 4, "blueprint_finding": 1}, "query_type": "motif_query", "thread_key": "yang960920/LiveNovelAI#4", "issue_number": "4", "quality_tiers": {"unresolved": 3, "assumption_check": 1, "weak_supervision": 3}, "repo_full_name": "yang960920/LiveNovelAI", "training_usage": "curriculum_gap", "source_motif_id": "graph-pattern-motif-thread-aaaf1c78fda18750", "graph_gold_label": "supported_by_verification_signal", "changed_file_labels": {"dependency_or_build": 14}}, "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: yang960920/LiveNovelAI\nThread: yang960920/LiveNovelAI#4\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: yang960920/LiveNovelAI\nThread: yang960920/LiveNovelAI#4\nGraph gold label: supported_by_verification_signal\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: yang960920/LiveNovelAI#4\nRepo: yang960920/LiveNovelAI\nIssue/PR number: 4\nGraph consistency label: supported_by_verification_signal\nNodes: 28\nEdges: 47\nNode types: {'link_quality': 7, 'commit': 5, 'comment': 4, 'comment_chain': 4, 'pr_file': 2, 'thread': 1, 'repo': 1, 'issue_chain': 1, 'fix_outcome': 1, 'alignment': 1, 'blueprint_finding': 1}\nEdge types: {'comment_chain_touches_file': 8, 'chain_has_link_quality': 7, 'comment_chain_links_commit': 5, 'thread_has_comment': 4, 'thread_has_comment_chain': 4, 'comment_has_chain': 4, 'issue_chain_has_comment_chain': 4, 'thread_touches_file': 2, 'issue_chain_touches_file': 2, 'repo_has_thread': 1, 'thread_has_issue_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1, 'alignment_uses_comment': 1, 'alignment_uses_finding': 1, 'comment_aligns_finding': 1}\nLabels: {'not_resolved_or_not_observed': 4, 'dependency_or_build': 3, 'bug_fix': 2, 'verification_or_tests': 2, 'human_reported_issue_no_linked_fix': 2, 'thread_has_human_issue_and_fix_context': 2, 'issue_or_pull_request_thread': 1, 'test_ci_gap': 1, 'deployment_env_gap': 1, 'human_feedback_general': 1, 'security_auth_secret': 1, 'human_reported_issue_then_verified_fix_attempt': 1, 'claimed_resolved_with_verification_signal': 1, 'unlinked_human_feedback': 1, 'ambiguous_needs_more_evidence': 1, 'blueprint_human_gap_disagreement': 1}\nOutcomes: {'not_resolved_or_not_observed': 8, 'claimed_resolved_with_verification_signal': 2, 'ambiguous_needs_more_evidence': 2}\nQuality tiers: {'weak_supervision': 3, 'unresolved': 3, 'assumption_check': 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/yang960920/LiveNovelAI", "source_id": "graph-query-motif_query-5edeb65ab56317fc", "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": "yang960920/LiveNovelAI", "source_dataset": "graph_queries/blueprint_gap_alignment", "training_usage": "curriculum_gap"}}}, {"ruleId": "foundry_blueprint_gap", "level": "warning", "message": {"text": "Foundry mined blueprint gap alignment: yang960920/LiveNovelAI"}, "properties": {"repobilityId": 357339, "scanner": "foundry_dataset", "fingerprint": "29fd411f9acb0e4baf509ef1defec9c2190b42ce192faba0a0cd27cc53910795", "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, "deployment_env_gap": 1, "security_auth_secret": 1, "human_feedback_general": 1, "unlinked_human_feedback": 1, "mostly follows blueprint": 1, "issue_or_pull_request_thread": 1, "not_resolved_or_not_observed": 5, "ambiguous_needs_more_evidence": 1, "blueprint_human_gap_disagreement": 1, "human_reported_issue_no_linked_fix": 3, "thread_has_human_issue_without_fix_context": 2}, "source": "graph_query_export", "motif_id": "blueprint_gap_alignment", "outcomes": {"not_resolved_or_not_observed": 10, "ambiguous_needs_more_evidence": 2}, "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": 4, "thread_has_comment": 4, "thread_touches_file": 1, "alignment_uses_comment": 1, "alignment_uses_finding": 1, "chain_has_link_quality": 7, "comment_aligns_finding": 1, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "issue_chain_touches_file": 1, "thread_has_comment_chain": 4, "comment_chain_touches_file": 4, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 4}, "node_count": 22, "node_types": {"repo": 1, "thread": 1, "comment": 4, "pr_file": 1, "alignment": 1, "fix_outcome": 1, "issue_chain": 1, "link_quality": 7, "comment_chain": 4, "blueprint_finding": 1}, "query_type": "motif_query", "thread_key": "yang960920/LiveNovelAI#2", "issue_number": "2", "quality_tiers": {"unresolved": 6, "assumption_check": 1}, "repo_full_name": "yang960920/LiveNovelAI", "training_usage": "curriculum_gap", "source_motif_id": "graph-pattern-motif-thread-3849cb038b767ed9", "graph_gold_label": "assumption_check", "changed_file_labels": {"test_or_ci": 7}}, "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: yang960920/LiveNovelAI\nThread: yang960920/LiveNovelAI#2\nEvidence:\nGraph motif: Human feedback aligns with blueprint or architecture gaps\nMotif id: blueprint_gap_alignment\nPolarity: mixed\nTraining usage: curriculum_gap\nSeverity: medium\nRepo: yang960920/LiveNovelAI\nThread: yang960920/LiveNovelAI#2\nGraph gold label: assumption_check\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: yang960920/LiveNovelAI#2\nRepo: yang960920/LiveNovelAI\nIssue/PR number: 2\nGraph consistency label: assumption_check\nNodes: 22\nEdges: 36\nNode types: {'link_quality': 7, 'comment': 4, 'comment_chain': 4, 'thread': 1, 'repo': 1, 'pr_file': 1, 'issue_chain': 1, 'fix_outcome': 1, 'alignment': 1, 'blueprint_finding': 1}\nEdge types: {'chain_has_link_quality': 7, 'thread_has_comment': 4, 'thread_has_comment_chain': 4, 'comment_has_chain': 4, 'comment_chain_touches_file': 4, 'issue_chain_has_comment_chain': 4, 'repo_has_thread': 1, 'thread_touches_file': 1, 'thread_has_issue_chain': 1, 'issue_chain_touches_file': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1, 'alignment_uses_comment': 1, 'alignment_uses_finding': 1, 'comment_aligns_finding': 1}\nLabels: {'not_resolved_or_not_observed': 5, 'human_reported_issue_no_linked_fix': 3, 'thread_has_human_issue_without_fix_context': 2, 'issue_or_pull_request_thread': 1, 'test_ci_gap': 1, 'deployment_env_gap': 1, 'human_feedback_general': 1, 'security_auth_secret': 1, 'test_or_ci': 1, 'unlinked_human_feedback': 1, 'ambiguous_needs_more_evidence': 1, 'blueprint_human_gap_disagreement': 1, 'mostly follows blueprint': 1}\nOutcomes: {'not_resolved_or_not_observed': 10, 'ambiguous_needs_more_evidence': 2}\nQuality tiers: {'unresolved': 6, 'assumption_check': 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/yang960920/LiveNovelAI", "source_id": "graph-query-motif_query-be4a21d672b4a999", "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": "yang960920/LiveNovelAI", "source_dataset": "graph_queries/blueprint_gap_alignment", "training_usage": "curriculum_gap"}}}, {"ruleId": "foundry_blueprint_gap", "level": "warning", "message": {"text": "Foundry mined blueprint gap alignment: yang960920/LiveNovelAI"}, "properties": {"repobilityId": 357338, "scanner": "foundry_dataset", "fingerprint": "69d9864a2ff454ba33585c3b3eb10db25bd917349b947c6448ece8a585dfdbd7", "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": 1, "test_ci_gap": 1, "deployment_env_gap": 1, "security_auth_secret": 1, "verification_or_tests": 2, "human_feedback_general": 1, "mostly follows blueprint": 1, "claimed_resolved_unverified": 4, "issue_or_pull_request_thread": 1, "ambiguous_needs_more_evidence": 1, "blueprint_human_gap_disagreement": 1, "comment_has_related_commit_context": 1, "human_reported_issue_then_fix_attempt": 2, "thread_has_human_issue_and_fix_context": 2, "claimed_resolved_with_verification_signal": 1, "human_reported_issue_then_verified_fix_attempt": 1}, "source": "graph_query_export", "motif_id": "blueprint_gap_alignment", "outcomes": {"claimed_resolved_unverified": 8, "ambiguous_needs_more_evidence": 2, "claimed_resolved_with_verification_signal": 2}, "polarity": "mixed", "query_id": "blueprint_gap_alignment", "severity": "medium", "ci_labels": {}, "synthetic": false, "edge_count": 42, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 4, "thread_has_comment": 4, "thread_touches_file": 1, "alignment_uses_comment": 1, "alignment_uses_finding": 1, "chain_has_link_quality": 7, "comment_aligns_finding": 1, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "issue_chain_touches_file": 1, "thread_has_comment_chain": 4, "comment_chain_links_commit": 6, "comment_chain_touches_file": 4, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 4}, "node_count": 25, "node_types": {"repo": 1, "commit": 3, "thread": 1, "comment": 4, "pr_file": 1, "alignment": 1, "fix_outcome": 1, "issue_chain": 1, "link_quality": 7, "comment_chain": 4, "blueprint_finding": 1}, "query_type": "motif_query", "thread_key": "yang960920/LiveNovelAI#1", "issue_number": "1", "quality_tiers": {"high_confidence": 3, "assumption_check": 1, "weak_supervision": 3}, "repo_full_name": "yang960920/LiveNovelAI", "training_usage": "curriculum_gap", "source_motif_id": "graph-pattern-motif-thread-ef1ab1983e4966ee", "graph_gold_label": "supported_by_verification_signal", "changed_file_labels": {"test_or_ci": 7}}, "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: yang960920/LiveNovelAI\nThread: yang960920/LiveNovelAI#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: yang960920/LiveNovelAI\nThread: yang960920/LiveNovelAI#1\nGraph gold label: supported_by_verification_signal\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: yang960920/LiveNovelAI#1\nRepo: yang960920/LiveNovelAI\nIssue/PR number: 1\nGraph consistency label: supported_by_verification_signal\nNodes: 25\nEdges: 42\nNode types: {'link_quality': 7, 'comment': 4, 'comment_chain': 4, 'commit': 3, 'thread': 1, 'repo': 1, 'pr_file': 1, 'issue_chain': 1, 'fix_outcome': 1, 'alignment': 1, 'blueprint_finding': 1}\nEdge types: {'chain_has_link_quality': 7, 'comment_chain_links_commit': 6, 'thread_has_comment': 4, 'thread_has_comment_chain': 4, 'comment_has_chain': 4, 'comment_chain_touches_file': 4, 'issue_chain_has_comment_chain': 4, 'repo_has_thread': 1, 'thread_touches_file': 1, 'thread_has_issue_chain': 1, 'issue_chain_touches_file': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1, 'alignment_uses_comment': 1, 'alignment_uses_finding': 1, 'comment_aligns_finding': 1}\nLabels: {'claimed_resolved_unverified': 4, 'verification_or_tests': 2, 'human_reported_issue_then_fix_attempt': 2, 'thread_has_human_issue_and_fix_context': 2, 'issue_or_pull_request_thread': 1, 'test_ci_gap': 1, 'deployment_env_gap': 1, 'human_feedback_general': 1, 'security_auth_secret': 1, 'test_or_ci': 1, 'human_reported_issue_then_verified_fix_attempt': 1, 'bug_fix': 1, 'claimed_resolved_with_verification_signal': 1, 'comment_has_related_commit_context': 1, 'ambiguous_needs_more_evidence': 1, 'blueprint_human_gap_disagreement': 1}\nOutcomes: {'claimed_resolved_unverified': 8, 'claimed_resolved_with_verification_signal': 2, 'ambiguous_needs_more_evidence': 2}\nQuality tiers: {'high_confidence': 3, 'weak_supervision': 3, 'assumption_check': 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/yang960920/LiveNovelAI", "source_id": "graph-query-motif_query-8edaec3b740e81a3", "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": "yang960920/LiveNovelAI", "source_dataset": "graph_queries/blueprint_gap_alignment", "training_usage": "curriculum_gap"}}}, {"ruleId": "foundry_assumption_check", "level": "warning", "message": {"text": "Foundry mined assumption checks: yang960920/LiveNovelAI"}, "properties": {"repobilityId": 313820, "scanner": "foundry_dataset", "fingerprint": "811e90329ecd813a621efd01663ecf395fe5b081ff0184d90b85b01ce7a32106", "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": "yang960920/LiveNovelAI#1", "human_labels": ["deployment_env_gap", "human_feedback_general", "security_auth_secret", "test_ci_gap", "test_or_ci"], "issue_number": "1", "thread_label": "thread_has_human_issue_and_fix_context", "outcome_label": "claimed_resolved_unverified", "source_backed": true, "max_confidence": 0.805, "repo_full_name": "yang960920/LiveNovelAI", "training_usage": "gold_candidate", "confidence_tier": "high_confidence", "source_chain_id": "evidence-chain-issue_chain-28ddd29679a90a6c", "helicopter_views": {"graphs": 2, "schemas": 2}, "artifact_families": {"ci": 2, "docs": 1}, "source_chain_kind": "issue_chain", "changed_file_count": 1, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {"test_or_ci": 1}, "linked_commit_count": 6, "helicopter_view_count": 4, "source_artifact_count": 3, "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": 2, "design_schema_api_artifact_count": 0}, "text": "Comment chain pattern product: assumption_checks\nRepo: yang960920/LiveNovelAI\nThread: yang960920/LiveNovelAI#1\nOutcome: claimed_resolved_unverified\nThread label: thread_has_human_issue_and_fix_context\nSource graph label: source_backed_multi_signal_graph\nReasons: source_graph_has_real_artifacts, source_graph_has_verification_artifacts, repo_has_isolated_helicopter_views, link_quality_high_confidence, high_risk_human_feedback_label\nChain evidence:\nIssue/PR evidence chain: yang960920/LiveNovelAI#1\nRepo: yang960920/LiveNovelAI\nThread label: thread_has_human_issue_and_fix_context\nOutcome: claimed_resolved_unverified\nComment count: 4\nLinked commit count: 6\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 1\nLabels: {'test_ci_gap': 1, 'deployment_env_gap': 1, 'human_feedback_general': 1, 'security_auth_secret': 1}\nPolarities: {'bad': 3, 'neutral': 1}\nChanged file labels: {'test_or_ci': 1}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-2d6c2dc8a1c9e88a\",\n    \"kind\": \"pull_request_body\",\n    \"label\": \"test_ci_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/yang960920/LiveNovelAI/pull/1\",\n    \"text\": \"GitHub feedback: test_ci_gap\\nPolarity: bad\\nKind: pull_request_body\\nRepo: yang960920/LiveNovelAI\\nAuthor: dependabot[bot] (Bot)\\nURL: https://github.com/yang960920/LiveNovelAI/pull/1\\nTitle: chore(deps): bump actions/setup-node from 4 to 6\\nBody:\\nBumps [actions/setup-node](https://github.com/actions/setup-node) from 4 to 6.\\n<details>\\n<summary>Release notes</summary>\\n<p><em>Sourced from <a href=\\\"https://github.com/actions/setup-node/releases\\\">actions/setup-node's releases</a>.</em></p>\\n<blockquote>\\n<h2>v6.0.0</h2>\\n<h2>What's Changed</h2>\\n<p><strong>Breaking Changes</strong></p>\\n<ul>\\n<li>Limit automatic caching to npm, update workflows and documentation by <a href=\\\"https://github.com/priyagupta108\\\"><code>@\u200bpriyagupta108</code></a> in <a href=\\\"https://redirect.github.com/actions/setup-node/pull/1374\\\">actions/setup-node#1374</a></li>\\n</ul>\\n<p><strong>Dependency Upgrades</strong></p>\\n<ul>\\n<li>Upgrade ts-jest from 29.1.2 to 29.4.1 and document breaking changes in v5 by <a href=\\\"https://github.com/dependabot\\\"><code>@\u200bdependabot</code></a>[bot] in <a href=\\\"https://redirect.github.com/actions/setup-node/pull/1336\\\">#1336</a></li>\\n<li>Upgrade prettier from 2.8.8 to 3.6.2 by <a href=\\\"https://github\"\n  },\n  {\n    \"id\": \"github-feedback-comment-d14cfb6ee8b97acb\",\n    \"kind\": \"issue_comment\",\n    \"label\": \"deployment_env_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/yang960920/LiveNovelAI/pull/1#issuecomment-4691518608\",\n    \"text\": \"GitHub feedback: deployment_env_gap\\nPolarity: bad\\nKind: issue_comment\\nRepo: yang960920/LiveNovelAI\\nAuthor: vercel[bot] (Bot)\\nURL: https://github.com/yang960920/LiveNovelAI/pull/1#issuecomment-4691518608\\nTitle: \\nBody:\\n[vc]: #XZ+wCo890TZO91sFY48ZLeNlvtfSmcuhmgBYZsjpUDg=:eyJpc01vbm9yZXBvIjp0cnVlLCJ0eXBlIjoiZ2l0aHViIiwicHJvamVjdHMiOlt7\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/yang960920/LiveNovelAI", "source_id": "comment-chain-pattern-assumption_checks-142a421288893493", "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": "yang960920/LiveNovelAI", "source_dataset": "comment_chain_patterns/assumption_checks", "training_usage": "gold_candidate"}}}, {"ruleId": "foundry_test_ci_gap", "level": "error", "message": {"text": "Foundry mined test ci gap after feedback: yang960920/LiveNovelAI"}, "properties": {"repobilityId": 341539, "scanner": "foundry_dataset", "fingerprint": "e7729389eb092bffd8f46c223bc3cbf6f57e0690efa0b44d886814af0876c537", "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, "deployment_env_gap": 1, "dependency_or_build": 2, "security_auth_secret": 1, "verification_or_tests": 2, "human_feedback_general": 1, "unlinked_human_feedback": 1, "mostly follows blueprint": 1, "issue_or_pull_request_thread": 1, "not_resolved_or_not_observed": 4, "ambiguous_needs_more_evidence": 1, "blueprint_human_gap_disagreement": 1, "human_reported_issue_no_linked_fix": 2, "thread_has_human_issue_and_fix_context": 2, "claimed_resolved_with_verification_signal": 1, "human_reported_issue_then_verified_fix_attempt": 1}, "source": "graph_query_export", "motif_id": "test_ci_gap_after_feedback", "outcomes": {"not_resolved_or_not_observed": 8, "ambiguous_needs_more_evidence": 2, "claimed_resolved_with_verification_signal": 2}, "polarity": "bad", "query_id": "test_ci_gap_after_feedback", "severity": "high", "ci_labels": {}, "synthetic": false, "edge_count": 45, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 4, "thread_has_comment": 4, "thread_touches_file": 2, "alignment_uses_comment": 1, "alignment_uses_finding": 1, "chain_has_link_quality": 7, "comment_aligns_finding": 1, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "issue_chain_touches_file": 2, "thread_has_comment_chain": 4, "comment_chain_links_commit": 3, "comment_chain_touches_file": 8, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 4}, "node_count": 26, "node_types": {"repo": 1, "commit": 3, "thread": 1, "comment": 4, "pr_file": 2, "alignment": 1, "fix_outcome": 1, "issue_chain": 1, "link_quality": 7, "comment_chain": 4, "blueprint_finding": 1}, "query_type": "motif_query", "thread_key": "yang960920/LiveNovelAI#7", "issue_number": "7", "quality_tiers": {"unresolved": 3, "assumption_check": 1, "weak_supervision": 3}, "repo_full_name": "yang960920/LiveNovelAI", "training_usage": "hard_negative", "source_motif_id": "graph-pattern-motif-thread-e17d399e966f359c", "graph_gold_label": "supported_by_verification_signal", "changed_file_labels": {"dependency_or_build": 14}}, "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: yang960920/LiveNovelAI\nThread: yang960920/LiveNovelAI#7\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: yang960920/LiveNovelAI\nThread: yang960920/LiveNovelAI#7\nGraph gold label: supported_by_verification_signal\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: yang960920/LiveNovelAI#7\nRepo: yang960920/LiveNovelAI\nIssue/PR number: 7\nGraph consistency label: supported_by_verification_signal\nNodes: 26\nEdges: 45\nNode types: {'link_quality': 7, 'comment': 4, 'comment_chain': 4, 'commit': 3, 'pr_file': 2, 'thread': 1, 'repo': 1, 'issue_chain': 1, 'fix_outcome': 1, 'alignment': 1, 'blueprint_finding': 1}\nEdge types: {'comment_chain_touches_file': 8, 'chain_has_link_quality': 7, 'thread_has_comment': 4, 'thread_has_comment_chain': 4, 'comment_has_chain': 4, 'issue_chain_has_comment_chain': 4, 'comment_chain_links_commit': 3, 'thread_touches_file': 2, 'issue_chain_touches_file': 2, 'repo_has_thread': 1, 'thread_has_issue_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1, 'alignment_uses_comment': 1, 'alignment_uses_finding': 1, 'comment_aligns_finding': 1}\nLabels: {'not_resolved_or_not_observed': 4, 'dependency_or_build': 2, 'verification_or_tests': 2, 'human_reported_issue_no_linked_fix': 2, 'thread_has_human_issue_and_fix_context': 2, 'issue_or_pull_request_thread': 1, 'test_ci_gap': 1, 'deployment_env_gap': 1, 'human_feedback_general': 1, 'security_auth_secret': 1, 'human_reported_issue_then_verified_fix_attempt': 1, 'bug_fix': 1, 'claimed_resolved_with_verification_signal': 1, 'unlinked_human_feedback': 1, 'ambiguous_needs_more_evidence': 1, 'blueprint_human_gap_disagreement': 1}\nOutcomes: {'not_resolved_or_not_observed': 8, 'claimed_resolved_with_verification_signal': 2, 'ambiguous_needs_more_evidence': 2}\nQuality tiers: {'weak_supervision': 3, 'unresolved': 3, 'assumption_check': 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/yang960920/LiveNovelAI", "source_id": "graph-query-motif_query-297db1689349bf50", "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": "yang960920/LiveNovelAI", "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: yang960920/LiveNovelAI"}, "properties": {"repobilityId": 341538, "scanner": "foundry_dataset", "fingerprint": "4897f58b73b9b4e9141b44cf8dfd8e094a11f98fe76e37c39e431b3762fa3a16", "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, "deployment_env_gap": 1, "dependency_or_build": 2, "security_auth_secret": 1, "human_feedback_general": 1, "unlinked_human_feedback": 1, "mostly follows blueprint": 1, "issue_or_pull_request_thread": 1, "not_resolved_or_not_observed": 5, "ambiguous_needs_more_evidence": 1, "blueprint_human_gap_disagreement": 1, "human_reported_issue_no_linked_fix": 3, "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": 10, "ambiguous_needs_more_evidence": 2}, "polarity": "bad", "query_id": "test_ci_gap_after_feedback", "severity": "high", "ci_labels": {}, "synthetic": false, "edge_count": 42, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 4, "thread_has_comment": 4, "thread_touches_file": 2, "alignment_uses_comment": 1, "alignment_uses_finding": 1, "chain_has_link_quality": 7, "comment_aligns_finding": 1, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "issue_chain_touches_file": 2, "thread_has_comment_chain": 4, "comment_chain_touches_file": 8, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 4}, "node_count": 23, "node_types": {"repo": 1, "thread": 1, "comment": 4, "pr_file": 2, "alignment": 1, "fix_outcome": 1, "issue_chain": 1, "link_quality": 7, "comment_chain": 4, "blueprint_finding": 1}, "query_type": "motif_query", "thread_key": "yang960920/LiveNovelAI#6", "issue_number": "6", "quality_tiers": {"unresolved": 6, "assumption_check": 1}, "repo_full_name": "yang960920/LiveNovelAI", "training_usage": "hard_negative", "source_motif_id": "graph-pattern-motif-thread-c3219525726e0493", "graph_gold_label": "assumption_check", "changed_file_labels": {"dependency_or_build": 14}}, "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: yang960920/LiveNovelAI\nThread: yang960920/LiveNovelAI#6\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: yang960920/LiveNovelAI\nThread: yang960920/LiveNovelAI#6\nGraph gold label: assumption_check\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: yang960920/LiveNovelAI#6\nRepo: yang960920/LiveNovelAI\nIssue/PR number: 6\nGraph consistency label: assumption_check\nNodes: 23\nEdges: 42\nNode types: {'link_quality': 7, 'comment': 4, 'comment_chain': 4, 'pr_file': 2, 'thread': 1, 'repo': 1, 'issue_chain': 1, 'fix_outcome': 1, 'alignment': 1, 'blueprint_finding': 1}\nEdge types: {'comment_chain_touches_file': 8, 'chain_has_link_quality': 7, 'thread_has_comment': 4, 'thread_has_comment_chain': 4, 'comment_has_chain': 4, 'issue_chain_has_comment_chain': 4, 'thread_touches_file': 2, 'issue_chain_touches_file': 2, 'repo_has_thread': 1, 'thread_has_issue_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1, 'alignment_uses_comment': 1, 'alignment_uses_finding': 1, 'comment_aligns_finding': 1}\nLabels: {'not_resolved_or_not_observed': 5, 'human_reported_issue_no_linked_fix': 3, 'dependency_or_build': 2, 'thread_has_human_issue_without_fix_context': 2, 'issue_or_pull_request_thread': 1, 'test_ci_gap': 1, 'deployment_env_gap': 1, 'human_feedback_general': 1, 'security_auth_secret': 1, 'unlinked_human_feedback': 1, 'ambiguous_needs_more_evidence': 1, 'blueprint_human_gap_disagreement': 1, 'mostly follows blueprint': 1}\nOutcomes: {'not_resolved_or_not_observed': 10, 'ambiguous_needs_more_evidence': 2}\nQuality tiers: {'unresolved': 6, 'assumption_check': 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/yang960920/LiveNovelAI", "source_id": "graph-query-motif_query-87b060408f78ba45", "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": "yang960920/LiveNovelAI", "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: yang960920/LiveNovelAI"}, "properties": {"repobilityId": 341537, "scanner": "foundry_dataset", "fingerprint": "a8efeca5bd60c69e3b0b7015a64bd830174d6b4d7db06e9964361c1260d1b4f6", "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, "deployment_env_gap": 1, "dependency_or_build": 3, "security_auth_secret": 1, "verification_or_tests": 2, "human_feedback_general": 1, "unlinked_human_feedback": 1, "mostly follows blueprint": 1, "issue_or_pull_request_thread": 1, "not_resolved_or_not_observed": 4, "ambiguous_needs_more_evidence": 1, "blueprint_human_gap_disagreement": 1, "human_reported_issue_no_linked_fix": 2, "thread_has_human_issue_and_fix_context": 2, "claimed_resolved_with_verification_signal": 1, "human_reported_issue_then_verified_fix_attempt": 1}, "source": "graph_query_export", "motif_id": "test_ci_gap_after_feedback", "outcomes": {"not_resolved_or_not_observed": 8, "ambiguous_needs_more_evidence": 2, "claimed_resolved_with_verification_signal": 2}, "polarity": "bad", "query_id": "test_ci_gap_after_feedback", "severity": "high", "ci_labels": {}, "synthetic": false, "edge_count": 47, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 4, "thread_has_comment": 4, "thread_touches_file": 2, "alignment_uses_comment": 1, "alignment_uses_finding": 1, "chain_has_link_quality": 7, "comment_aligns_finding": 1, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "issue_chain_touches_file": 2, "thread_has_comment_chain": 4, "comment_chain_links_commit": 5, "comment_chain_touches_file": 8, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 4}, "node_count": 28, "node_types": {"repo": 1, "commit": 5, "thread": 1, "comment": 4, "pr_file": 2, "alignment": 1, "fix_outcome": 1, "issue_chain": 1, "link_quality": 7, "comment_chain": 4, "blueprint_finding": 1}, "query_type": "motif_query", "thread_key": "yang960920/LiveNovelAI#4", "issue_number": "4", "quality_tiers": {"unresolved": 3, "assumption_check": 1, "weak_supervision": 3}, "repo_full_name": "yang960920/LiveNovelAI", "training_usage": "hard_negative", "source_motif_id": "graph-pattern-motif-thread-2ec45c3bf0df541a", "graph_gold_label": "supported_by_verification_signal", "changed_file_labels": {"dependency_or_build": 14}}, "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: yang960920/LiveNovelAI\nThread: yang960920/LiveNovelAI#4\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: yang960920/LiveNovelAI\nThread: yang960920/LiveNovelAI#4\nGraph gold label: supported_by_verification_signal\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: yang960920/LiveNovelAI#4\nRepo: yang960920/LiveNovelAI\nIssue/PR number: 4\nGraph consistency label: supported_by_verification_signal\nNodes: 28\nEdges: 47\nNode types: {'link_quality': 7, 'commit': 5, 'comment': 4, 'comment_chain': 4, 'pr_file': 2, 'thread': 1, 'repo': 1, 'issue_chain': 1, 'fix_outcome': 1, 'alignment': 1, 'blueprint_finding': 1}\nEdge types: {'comment_chain_touches_file': 8, 'chain_has_link_quality': 7, 'comment_chain_links_commit': 5, 'thread_has_comment': 4, 'thread_has_comment_chain': 4, 'comment_has_chain': 4, 'issue_chain_has_comment_chain': 4, 'thread_touches_file': 2, 'issue_chain_touches_file': 2, 'repo_has_thread': 1, 'thread_has_issue_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1, 'alignment_uses_comment': 1, 'alignment_uses_finding': 1, 'comment_aligns_finding': 1}\nLabels: {'not_resolved_or_not_observed': 4, 'dependency_or_build': 3, 'bug_fix': 2, 'verification_or_tests': 2, 'human_reported_issue_no_linked_fix': 2, 'thread_has_human_issue_and_fix_context': 2, 'issue_or_pull_request_thread': 1, 'test_ci_gap': 1, 'deployment_env_gap': 1, 'human_feedback_general': 1, 'security_auth_secret': 1, 'human_reported_issue_then_verified_fix_attempt': 1, 'claimed_resolved_with_verification_signal': 1, 'unlinked_human_feedback': 1, 'ambiguous_needs_more_evidence': 1, 'blueprint_human_gap_disagreement': 1}\nOutcomes: {'not_resolved_or_not_observed': 8, 'claimed_resolved_with_verification_signal': 2, 'ambiguous_needs_more_evidence': 2}\nQuality tiers: {'weak_supervision': 3, 'unresolved': 3, 'assumption_check': 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/yang960920/LiveNovelAI", "source_id": "graph-query-motif_query-eb1b6f4cde16577d", "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": "yang960920/LiveNovelAI", "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: yang960920/LiveNovelAI"}, "properties": {"repobilityId": 341536, "scanner": "foundry_dataset", "fingerprint": "4473a6a38671da355b2b075856d2dbf1331dff84200cde6fc86d02aaf1a0ba7a", "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, "deployment_env_gap": 1, "security_auth_secret": 1, "human_feedback_general": 1, "unlinked_human_feedback": 1, "mostly follows blueprint": 1, "issue_or_pull_request_thread": 1, "not_resolved_or_not_observed": 5, "ambiguous_needs_more_evidence": 1, "blueprint_human_gap_disagreement": 1, "human_reported_issue_no_linked_fix": 3, "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": 10, "ambiguous_needs_more_evidence": 2}, "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": 4, "thread_has_comment": 4, "thread_touches_file": 1, "alignment_uses_comment": 1, "alignment_uses_finding": 1, "chain_has_link_quality": 7, "comment_aligns_finding": 1, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "issue_chain_touches_file": 1, "thread_has_comment_chain": 4, "comment_chain_touches_file": 4, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 4}, "node_count": 22, "node_types": {"repo": 1, "thread": 1, "comment": 4, "pr_file": 1, "alignment": 1, "fix_outcome": 1, "issue_chain": 1, "link_quality": 7, "comment_chain": 4, "blueprint_finding": 1}, "query_type": "motif_query", "thread_key": "yang960920/LiveNovelAI#2", "issue_number": "2", "quality_tiers": {"unresolved": 6, "assumption_check": 1}, "repo_full_name": "yang960920/LiveNovelAI", "training_usage": "hard_negative", "source_motif_id": "graph-pattern-motif-thread-de8046a4e388bbc6", "graph_gold_label": "assumption_check", "changed_file_labels": {"test_or_ci": 7}}, "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: yang960920/LiveNovelAI\nThread: yang960920/LiveNovelAI#2\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: yang960920/LiveNovelAI\nThread: yang960920/LiveNovelAI#2\nGraph gold label: assumption_check\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: yang960920/LiveNovelAI#2\nRepo: yang960920/LiveNovelAI\nIssue/PR number: 2\nGraph consistency label: assumption_check\nNodes: 22\nEdges: 36\nNode types: {'link_quality': 7, 'comment': 4, 'comment_chain': 4, 'thread': 1, 'repo': 1, 'pr_file': 1, 'issue_chain': 1, 'fix_outcome': 1, 'alignment': 1, 'blueprint_finding': 1}\nEdge types: {'chain_has_link_quality': 7, 'thread_has_comment': 4, 'thread_has_comment_chain': 4, 'comment_has_chain': 4, 'comment_chain_touches_file': 4, 'issue_chain_has_comment_chain': 4, 'repo_has_thread': 1, 'thread_touches_file': 1, 'thread_has_issue_chain': 1, 'issue_chain_touches_file': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1, 'alignment_uses_comment': 1, 'alignment_uses_finding': 1, 'comment_aligns_finding': 1}\nLabels: {'not_resolved_or_not_observed': 5, 'human_reported_issue_no_linked_fix': 3, 'thread_has_human_issue_without_fix_context': 2, 'issue_or_pull_request_thread': 1, 'test_ci_gap': 1, 'deployment_env_gap': 1, 'human_feedback_general': 1, 'security_auth_secret': 1, 'test_or_ci': 1, 'unlinked_human_feedback': 1, 'ambiguous_needs_more_evidence': 1, 'blueprint_human_gap_disagreement': 1, 'mostly follows blueprint': 1}\nOutcomes: {'not_resolved_or_not_observed': 10, 'ambiguous_needs_more_evidence': 2}\nQuality tiers: {'unresolved': 6, 'assumption_check': 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/yang960920/LiveNovelAI", "source_id": "graph-query-motif_query-75fe1ac315f1a432", "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": "yang960920/LiveNovelAI", "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: yang960920/LiveNovelAI"}, "properties": {"repobilityId": 341535, "scanner": "foundry_dataset", "fingerprint": "f50c60d8945f7c25f796097e9ccbc33f053ed0c801f26f62b67cb3b602ceb2e1", "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": 1, "test_ci_gap": 1, "deployment_env_gap": 1, "security_auth_secret": 1, "verification_or_tests": 2, "human_feedback_general": 1, "mostly follows blueprint": 1, "claimed_resolved_unverified": 4, "issue_or_pull_request_thread": 1, "ambiguous_needs_more_evidence": 1, "blueprint_human_gap_disagreement": 1, "comment_has_related_commit_context": 1, "human_reported_issue_then_fix_attempt": 2, "thread_has_human_issue_and_fix_context": 2, "claimed_resolved_with_verification_signal": 1, "human_reported_issue_then_verified_fix_attempt": 1}, "source": "graph_query_export", "motif_id": "test_ci_gap_after_feedback", "outcomes": {"claimed_resolved_unverified": 8, "ambiguous_needs_more_evidence": 2, "claimed_resolved_with_verification_signal": 2}, "polarity": "bad", "query_id": "test_ci_gap_after_feedback", "severity": "high", "ci_labels": {}, "synthetic": false, "edge_count": 42, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 4, "thread_has_comment": 4, "thread_touches_file": 1, "alignment_uses_comment": 1, "alignment_uses_finding": 1, "chain_has_link_quality": 7, "comment_aligns_finding": 1, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "issue_chain_touches_file": 1, "thread_has_comment_chain": 4, "comment_chain_links_commit": 6, "comment_chain_touches_file": 4, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 4}, "node_count": 25, "node_types": {"repo": 1, "commit": 3, "thread": 1, "comment": 4, "pr_file": 1, "alignment": 1, "fix_outcome": 1, "issue_chain": 1, "link_quality": 7, "comment_chain": 4, "blueprint_finding": 1}, "query_type": "motif_query", "thread_key": "yang960920/LiveNovelAI#1", "issue_number": "1", "quality_tiers": {"high_confidence": 3, "assumption_check": 1, "weak_supervision": 3}, "repo_full_name": "yang960920/LiveNovelAI", "training_usage": "hard_negative", "source_motif_id": "graph-pattern-motif-thread-144456bebd82b5c0", "graph_gold_label": "supported_by_verification_signal", "changed_file_labels": {"test_or_ci": 7}}, "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: yang960920/LiveNovelAI\nThread: yang960920/LiveNovelAI#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: yang960920/LiveNovelAI\nThread: yang960920/LiveNovelAI#1\nGraph gold label: supported_by_verification_signal\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: yang960920/LiveNovelAI#1\nRepo: yang960920/LiveNovelAI\nIssue/PR number: 1\nGraph consistency label: supported_by_verification_signal\nNodes: 25\nEdges: 42\nNode types: {'link_quality': 7, 'comment': 4, 'comment_chain': 4, 'commit': 3, 'thread': 1, 'repo': 1, 'pr_file': 1, 'issue_chain': 1, 'fix_outcome': 1, 'alignment': 1, 'blueprint_finding': 1}\nEdge types: {'chain_has_link_quality': 7, 'comment_chain_links_commit': 6, 'thread_has_comment': 4, 'thread_has_comment_chain': 4, 'comment_has_chain': 4, 'comment_chain_touches_file': 4, 'issue_chain_has_comment_chain': 4, 'repo_has_thread': 1, 'thread_touches_file': 1, 'thread_has_issue_chain': 1, 'issue_chain_touches_file': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1, 'alignment_uses_comment': 1, 'alignment_uses_finding': 1, 'comment_aligns_finding': 1}\nLabels: {'claimed_resolved_unverified': 4, 'verification_or_tests': 2, 'human_reported_issue_then_fix_attempt': 2, 'thread_has_human_issue_and_fix_context': 2, 'issue_or_pull_request_thread': 1, 'test_ci_gap': 1, 'deployment_env_gap': 1, 'human_feedback_general': 1, 'security_auth_secret': 1, 'test_or_ci': 1, 'human_reported_issue_then_verified_fix_attempt': 1, 'bug_fix': 1, 'claimed_resolved_with_verification_signal': 1, 'comment_has_related_commit_context': 1, 'ambiguous_needs_more_evidence': 1, 'blueprint_human_gap_disagreement': 1}\nOutcomes: {'claimed_resolved_unverified': 8, 'claimed_resolved_with_verification_signal': 2, 'ambiguous_needs_more_evidence': 2}\nQuality tiers: {'high_confidence': 3, 'weak_supervision': 3, 'assumption_check': 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/yang960920/LiveNovelAI", "source_id": "graph-query-motif_query-11a4fefb98ac3f57", "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": "yang960920/LiveNovelAI", "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: yang960920/LiveNovelAI"}, "properties": {"repobilityId": 323872, "scanner": "foundry_dataset", "fingerprint": "786b4f23f799822ab77f8bb06d7f3c40cd9db2ed902614e7d2b14f1537a083b0", "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": "yang960920/LiveNovelAI#7", "human_labels": ["dependency_or_build", "deployment_env_gap", "human_feedback_general", "security_auth_secret", "test_ci_gap"], "issue_number": "7", "thread_label": "thread_has_human_issue_and_fix_context", "outcome_label": "not_resolved_or_not_observed", "source_backed": true, "max_confidence": 0.625, "repo_full_name": "yang960920/LiveNovelAI", "training_usage": "weak_supervision", "confidence_tier": "weak_supervision", "source_chain_id": "evidence-chain-issue_chain-2e32bde871969dd9", "helicopter_views": {"graphs": 2, "schemas": 2}, "artifact_families": {"ci": 2, "docs": 1}, "source_chain_kind": "issue_chain", "changed_file_count": 2, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {"dependency_or_build": 2}, "linked_commit_count": 3, "helicopter_view_count": 4, "source_artifact_count": 3, "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": 2, "design_schema_api_artifact_count": 0}, "text": "Comment chain pattern product: bad_chains\nRepo: yang960920/LiveNovelAI\nThread: yang960920/LiveNovelAI#7\nOutcome: not_resolved_or_not_observed\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: yang960920/LiveNovelAI#7\nRepo: yang960920/LiveNovelAI\nThread label: thread_has_human_issue_and_fix_context\nOutcome: not_resolved_or_not_observed\nComment count: 4\nLinked commit count: 3\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 2\nLabels: {'test_ci_gap': 1, 'deployment_env_gap': 1, 'human_feedback_general': 1, 'security_auth_secret': 1}\nPolarities: {'bad': 3, 'neutral': 1}\nChanged file labels: {'dependency_or_build': 2}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-10de99cd6555955d\",\n    \"kind\": \"pull_request_body\",\n    \"label\": \"test_ci_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/yang960920/LiveNovelAI/pull/7\",\n    \"text\": \"GitHub feedback: test_ci_gap\\nPolarity: bad\\nKind: pull_request_body\\nRepo: yang960920/LiveNovelAI\\nAuthor: dependabot[bot] (Bot)\\nURL: https://github.com/yang960920/LiveNovelAI/pull/7\\nTitle: chore(deps-dev): bump eslint from 9.39.4 to 10.4.1\\nBody:\\nBumps [eslint](https://github.com/eslint/eslint) from 9.39.4 to 10.4.1.\\n<details>\\n<summary>Release notes</summary>\\n<p><em>Sourced from <a href=\\\"https://github.com/eslint/eslint/releases\\\">eslint's releases</a>.</em></p>\\n<blockquote>\\n<h2>v10.4.1</h2>\\n<h2>Bug Fixes</h2>\\n<ul>\\n<li><a href=\\\"https://github.com/eslint/eslint/commit/e557467db7496220eebcbe2ac5ea6d38c12bb1ec\\\"><code>e557467</code></a> fix: update <code>@eslint/plugin-kit</code> version to 0.7.2 (<a href=\\\"https://redirect.github.com/eslint/eslint/issues/20930\\\">#20930</a>) (Francesco Trotta)</li>\\n<li><a href=\\\"https://github.com/eslint/eslint/commit/d4ce898796ca22c3b96aa70d3014cb85f4bac1cd\\\"><code>d4ce898</code></a> fix: propagate failures from delegated commands (<a href=\\\"https://redirect.github.com/eslint/eslint/issues/20917\\\">#20917</a>) (Minh Vu)</li>\\n<li><a href=\\\"https://github.com/eslint/eslint/commit/f4f3507460bc016b5be979c05d2969793f570cbf\\\"><code>f4f3507</code></a> fix: prefer-arrow-c\"\n  },\n  {\n    \"id\": \"github-feedback-comment-958cff0695f37b22\",\n    \"kind\": \"issue_comment\",\n    \"label\": \"deployment_env_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/yang960920/LiveNovelAI/pull/7#issuecomment-4691556415\",\n    \"text\": \"GitHub feedback: deployment_env_gap\\nPolarity: bad\\nKind: issue_comment\\nRepo: yang960920/LiveNovelAI\\nAuthor: vercel[bot] (Bot)\\nURL: https://github.com/yang960920/LiveNovelAI/pull/7#issuecomment-4691556415\\nTitle: \\nBody:\\n[vc]: #zV8lH/39Cj7IDKx34U/SJSCvpO6eQ61m6ZO2mG3wFMQ=:eyJpc01vbm9yZXBvIjp0cnVlLCJ0eXBlIjoiZ2l0aHViIiwicHJvamVjdHMiOl\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/yang960920/LiveNovelAI", "source_id": "comment-chain-pattern-bad_chains-43684ff8fff88638", "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": "yang960920/LiveNovelAI", "source_dataset": "comment_chain_patterns/bad_chains", "training_usage": "weak_supervision"}}}, {"ruleId": "foundry_bad_chain", "level": "error", "message": {"text": "Foundry mined bad chains: yang960920/LiveNovelAI"}, "properties": {"repobilityId": 323871, "scanner": "foundry_dataset", "fingerprint": "e6f3c8c4a6bd9544f04a4dd297c62681c8de56f2cd7bca2a571bfcdd6e42a413", "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": "yang960920/LiveNovelAI#6", "human_labels": ["dependency_or_build", "deployment_env_gap", "human_feedback_general", "security_auth_secret", "test_ci_gap"], "issue_number": "6", "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": "yang960920/LiveNovelAI", "training_usage": "negative_or_unresolved", "confidence_tier": "unresolved", "source_chain_id": "evidence-chain-issue_chain-6e84fd0fbc141307", "helicopter_views": {"graphs": 2, "schemas": 2}, "artifact_families": {"ci": 2, "docs": 1}, "source_chain_kind": "issue_chain", "changed_file_count": 2, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {"dependency_or_build": 2}, "linked_commit_count": 0, "helicopter_view_count": 4, "source_artifact_count": 3, "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": 2, "design_schema_api_artifact_count": 0}, "text": "Comment chain pattern product: bad_chains\nRepo: yang960920/LiveNovelAI\nThread: yang960920/LiveNovelAI#6\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: yang960920/LiveNovelAI#6\nRepo: yang960920/LiveNovelAI\nThread label: thread_has_human_issue_without_fix_context\nOutcome: not_resolved_or_not_observed\nComment count: 4\nLinked commit count: 0\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 2\nLabels: {'test_ci_gap': 1, 'deployment_env_gap': 1, 'human_feedback_general': 1, 'security_auth_secret': 1}\nPolarities: {'bad': 3, 'neutral': 1}\nChanged file labels: {'dependency_or_build': 2}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-a51faf3be4d298d2\",\n    \"kind\": \"pull_request_body\",\n    \"label\": \"test_ci_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/yang960920/LiveNovelAI/pull/6\",\n    \"text\": \"GitHub feedback: test_ci_gap\\nPolarity: bad\\nKind: pull_request_body\\nRepo: yang960920/LiveNovelAI\\nAuthor: dependabot[bot] (Bot)\\nURL: https://github.com/yang960920/LiveNovelAI/pull/6\\nTitle: chore(deps): bump nodemailer and @types/nodemailer\\nBody:\\nBumps [nodemailer](https://github.com/nodemailer/nodemailer) and [@types/nodemailer](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/nodemailer). These dependencies needed to be updated together.\\nUpdates `nodemailer` from 7.0.13 to 8.0.11\\n<details>\\n<summary>Release notes</summary>\\n<p><em>Sourced from <a href=\\\"https://github.com/nodemailer/nodemailer/releases\\\">nodemailer's releases</a>.</em></p>\\n<blockquote>\\n<h2>v8.0.11</h2>\\n<h2><a href=\\\"https://github.com/nodemailer/nodemailer/compare/v8.0.10...v8.0.11\\\">8.0.11</a> (2026-06-10)</h2>\\n<h3>Bug Fixes</h3>\\n<ul>\\n<li>apply the transport-level newline option in stream and sendmail transports (<a href=\\\"https://github.com/nodemailer/nodemailer/commit/cb4f904a53d2c2feeaf327203c92378d46304398\\\">cb4f904</a>)</li>\\n<li>include icalEvent path/href content in the application/ics attachment (<a href=\\\"https://github.com/nodemailer/nodemailer/commit/b801c48fab8e9b71bc7e0ea1fb32ce6b34675b15\\\">b801\"\n  },\n  {\n    \"id\": \"github-feedback-comment-4378694f7069e7da\",\n    \"kind\": \"issue_comment\",\n    \"label\": \"deployment_env_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/yang960920/LiveNovelAI/pull/6#issuecomment-4691555129\",\n    \"text\": \"GitHub feedback: deployment_env_gap\\nPolarity: bad\\nKind: issue_comment\\nRepo: yang960920/LiveNovelAI\\nAuthor: vercel[bot] (Bot)\\nURL: https://github.com/yang960920/LiveNovelAI/pull/6#issuecomment-4691555129\\nTitle: \\nBody:\\n[vc]: #091GZ/DCRajKFMVYGp0HDPQKt7CReFChNBluBaBIAOg=:eyJpc01vbm9yZXBvIjp0cnVlLCJ0eXBlIjoiZ2l0aHViIiwicHJvamVjdHMiOlt\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/yang960920/LiveNovelAI", "source_id": "comment-chain-pattern-bad_chains-2140519f2428323c", "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": "yang960920/LiveNovelAI", "source_dataset": "comment_chain_patterns/bad_chains", "training_usage": "negative_or_unresolved"}}}, {"ruleId": "foundry_bad_chain", "level": "error", "message": {"text": "Foundry mined bad chains: yang960920/LiveNovelAI"}, "properties": {"repobilityId": 323870, "scanner": "foundry_dataset", "fingerprint": "009d65b94c0e21378a055d8c92b46014bd8f3510ec2525f945a289f5ed086b64", "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": "yang960920/LiveNovelAI#5", "human_labels": ["dependency_or_build", "deployment_env_gap", "human_feedback_general", "security_auth_secret"], "issue_number": "5", "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": "yang960920/LiveNovelAI", "training_usage": "negative_or_unresolved", "confidence_tier": "unresolved", "source_chain_id": "evidence-chain-issue_chain-93c9f69ec26d980c", "helicopter_views": {"graphs": 2, "schemas": 2}, "artifact_families": {"ci": 2, "docs": 1}, "source_chain_kind": "issue_chain", "changed_file_count": 2, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {"dependency_or_build": 2}, "linked_commit_count": 0, "helicopter_view_count": 4, "source_artifact_count": 3, "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": 2, "design_schema_api_artifact_count": 0}, "text": "Comment chain pattern product: bad_chains\nRepo: yang960920/LiveNovelAI\nThread: yang960920/LiveNovelAI#5\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: yang960920/LiveNovelAI#5\nRepo: yang960920/LiveNovelAI\nThread label: thread_has_human_issue_without_fix_context\nOutcome: not_resolved_or_not_observed\nComment count: 4\nLinked commit count: 0\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 2\nLabels: {'security_auth_secret': 2, 'deployment_env_gap': 1, 'human_feedback_general': 1}\nPolarities: {'bad': 3, 'neutral': 1}\nChanged file labels: {'dependency_or_build': 2}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-0643a0d1bae11708\",\n    \"kind\": \"pull_request_body\",\n    \"label\": \"security_auth_secret\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/yang960920/LiveNovelAI/pull/5\",\n    \"text\": \"GitHub feedback: security_auth_secret\\nPolarity: bad\\nKind: pull_request_body\\nRepo: yang960920/LiveNovelAI\\nAuthor: dependabot[bot] (Bot)\\nURL: https://github.com/yang960920/LiveNovelAI/pull/5\\nTitle: chore(deps-dev): bump typescript from 5.9.3 to 6.0.3\\nBody:\\nBumps [typescript](https://github.com/microsoft/TypeScript) from 5.9.3 to 6.0.3.\\n<details>\\n<summary>Release notes</summary>\\n<p><em>Sourced from <a href=\\\"https://github.com/microsoft/TypeScript/releases\\\">typescript's releases</a>.</em></p>\\n<blockquote>\\n<h2>TypeScript 6.0.3</h2>\\n<p>For release notes, check out the <a href=\\\"https://devblogs.microsoft.com/typescript/announcing-typescript-6-0/\\\">release announcement blog post</a>.</p>\\n<ul>\\n<li><a href=\\\"https://github.com/Microsoft/TypeScript/issues?utf8=%E2%9C%93&amp;q=milestone%3A%22TypeScript+6.0.0%22\\\">fixed issues query for TypeScript 6.0.0 (Beta)</a>.</li>\\n<li><a href=\\\"https://github.com/Microsoft/TypeScript/issues?utf8=%E2%9C%93&amp;q=milestone%3A%22TypeScript+6.0.1%22\\\">fixed issues query for TypeScript 6.0.1 (RC)</a>.</li>\\n<li><a href=\\\"https://github.com/Microsoft/TypeScript/issues?utf8=%E2%9C%93&amp;q=milestone%3A%22TypeScript+6.0.2%22\\\">fixed issues query for TypeScript 6.0.2 (Sta\"\n  },\n  {\n    \"id\": \"github-feedback-comment-da187d4f74c49748\",\n    \"kind\": \"issue_comment\",\n    \"label\": \"deployment_env_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/yang960920/LiveNovelAI/pull/5#issuecomment-4691554180\",\n    \"text\": \"GitHub feedback: deployment_env_gap\\nPolarity: bad\\nKind: issue_comment\\nRepo: yang960920/LiveNovelAI\\nAuthor: vercel[bot] (Bot)\\nURL: https://github.com/yang960920/LiveNovelAI/pull/5#issuecomment-4691554180\\nTitle: \\nBody:\\n[vc]: #4Ss3NdNWgzCD5YE7AQlnx304x7/T+uvEyUlT8d52zKE=:eyJpc01vbm9yZXBvIjp0cnVlLCJ0eXBlIjoiZ2l0aHViIiwicHJvamVjdHMiOlt7Im5hbWU\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/yang960920/LiveNovelAI", "source_id": "comment-chain-pattern-bad_chains-2e00760c39946511", "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": "yang960920/LiveNovelAI", "source_dataset": "comment_chain_patterns/bad_chains", "training_usage": "negative_or_unresolved"}}}, {"ruleId": "foundry_bad_chain", "level": "error", "message": {"text": "Foundry mined bad chains: yang960920/LiveNovelAI"}, "properties": {"repobilityId": 323869, "scanner": "foundry_dataset", "fingerprint": "c7139366890c72a6263af89dc25d9a49218e154052cb4076a8a410361a726899", "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": "yang960920/LiveNovelAI#4", "human_labels": ["dependency_or_build", "deployment_env_gap", "human_feedback_general", "security_auth_secret", "test_ci_gap"], "issue_number": "4", "thread_label": "thread_has_human_issue_and_fix_context", "outcome_label": "not_resolved_or_not_observed", "source_backed": true, "max_confidence": 0.65, "repo_full_name": "yang960920/LiveNovelAI", "training_usage": "weak_supervision", "confidence_tier": "weak_supervision", "source_chain_id": "evidence-chain-issue_chain-9014661001839735", "helicopter_views": {"graphs": 2, "schemas": 2}, "artifact_families": {"ci": 2, "docs": 1}, "source_chain_kind": "issue_chain", "changed_file_count": 2, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {"dependency_or_build": 2}, "linked_commit_count": 5, "helicopter_view_count": 4, "source_artifact_count": 3, "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": 2, "design_schema_api_artifact_count": 0}, "text": "Comment chain pattern product: bad_chains\nRepo: yang960920/LiveNovelAI\nThread: yang960920/LiveNovelAI#4\nOutcome: not_resolved_or_not_observed\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: yang960920/LiveNovelAI#4\nRepo: yang960920/LiveNovelAI\nThread label: thread_has_human_issue_and_fix_context\nOutcome: not_resolved_or_not_observed\nComment count: 4\nLinked commit count: 5\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 2\nLabels: {'test_ci_gap': 1, 'deployment_env_gap': 1, 'human_feedback_general': 1, 'security_auth_secret': 1}\nPolarities: {'bad': 3, 'neutral': 1}\nChanged file labels: {'dependency_or_build': 2}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-1ee3e1bc07fe5348\",\n    \"kind\": \"pull_request_body\",\n    \"label\": \"test_ci_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/yang960920/LiveNovelAI/pull/4\",\n    \"text\": \"GitHub feedback: test_ci_gap\\nPolarity: bad\\nKind: pull_request_body\\nRepo: yang960920/LiveNovelAI\\nAuthor: dependabot[bot] (Bot)\\nURL: https://github.com/yang960920/LiveNovelAI/pull/4\\nTitle: chore(deps-dev): bump prisma from 5.22.0 to 7.8.0\\nBody:\\nBumps [prisma](https://github.com/prisma/prisma/tree/HEAD/packages/cli) from 5.22.0 to 7.8.0.\\n<details>\\n<summary>Release notes</summary>\\n<p><em>Sourced from <a href=\\\"https://github.com/prisma/prisma/releases\\\">prisma's releases</a>.</em></p>\\n<blockquote>\\n<h2>7.8.0</h2>\\n<p>Today, we are excited to share the <code>7.8.0</code> stable release \ud83c\udf89</p>\\n<p><strong>\ud83c\udf1f Star this repo for notifications about new releases, bug fixes &amp; features \u2014 or <a href=\\\"https://pris.ly/x\\\">follow us on X</a>!</strong></p>\\n<h1>Highlights</h1>\\n<h2>ORM</h2>\\n<h3>Features</h3>\\n<p><strong>Prisma Client</strong></p>\\n<ul>\\n<li>Added a <code>queryPlanCacheMaxSize</code> option to the <code>PrismaClient</code> constructor for fine-grained control over the query plan cache. Pass <code>0</code> to disable the cache entirely, or omit it to use the default cache size. A larger value can improve performance in applications that execute many unique queries, while a smaller one can re\"\n  },\n  {\n    \"id\": \"github-feedback-comment-fe3b3c0f1736e0c1\",\n    \"kind\": \"issue_comment\",\n    \"label\": \"deployment_env_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/yang960920/LiveNovelAI/pull/4#issuecomment-4691552674\",\n    \"text\": \"GitHub feedback: deployment_env_gap\\nPolarity: bad\\nKind: issue_comment\\nRepo: yang960920/LiveNovelAI\\nAuthor: vercel[bot] (Bot)\\nURL: https://github.com/yang960920/LiveNovelAI/pull/4#issuecomment-4691552674\\nTitle: \\nBody:\\n[vc]: #M6bTaSOqn9R3CCHo+2kdUnhXGWDWrj2qKHR7Eykk5HI=:eyJpc01vbm9yZXBvIjp0cnVlLCJ0eXBlIjoiZ2l0aHViIiwicHJvamVjdHMiOlt7Im5\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/yang960920/LiveNovelAI", "source_id": "comment-chain-pattern-bad_chains-07a7921e16743cc1", "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": "yang960920/LiveNovelAI", "source_dataset": "comment_chain_patterns/bad_chains", "training_usage": "weak_supervision"}}}, {"ruleId": "foundry_bad_chain", "level": "error", "message": {"text": "Foundry mined bad chains: yang960920/LiveNovelAI"}, "properties": {"repobilityId": 323868, "scanner": "foundry_dataset", "fingerprint": "c687d60dfc094390f9065b5be7f23de99a20483b83965b05a80b6d26c5ecfb4a", "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": "yang960920/LiveNovelAI#3", "human_labels": ["dependency_or_build", "deployment_env_gap", "human_feedback_general", "mock_placeholder", "security_auth_secret"], "issue_number": "3", "thread_label": "thread_has_human_issue_and_fix_context", "outcome_label": "not_resolved_or_not_observed", "source_backed": true, "max_confidence": 0.59, "repo_full_name": "yang960920/LiveNovelAI", "training_usage": "weak_supervision", "confidence_tier": "weak_supervision", "source_chain_id": "evidence-chain-issue_chain-cff936310cca3e37", "helicopter_views": {"graphs": 2, "schemas": 2}, "artifact_families": {"ci": 2, "docs": 1}, "source_chain_kind": "issue_chain", "changed_file_count": 2, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {"dependency_or_build": 2}, "linked_commit_count": 1, "helicopter_view_count": 4, "source_artifact_count": 3, "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": 2, "design_schema_api_artifact_count": 0}, "text": "Comment chain pattern product: bad_chains\nRepo: yang960920/LiveNovelAI\nThread: yang960920/LiveNovelAI#3\nOutcome: not_resolved_or_not_observed\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: yang960920/LiveNovelAI#3\nRepo: yang960920/LiveNovelAI\nThread label: thread_has_human_issue_and_fix_context\nOutcome: not_resolved_or_not_observed\nComment count: 4\nLinked commit count: 1\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 2\nLabels: {'mock_placeholder': 1, 'deployment_env_gap': 1, 'human_feedback_general': 1, 'security_auth_secret': 1}\nPolarities: {'bad': 3, 'neutral': 1}\nChanged file labels: {'dependency_or_build': 2}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-ba13dcbeb4b5f927\",\n    \"kind\": \"pull_request_body\",\n    \"label\": \"mock_placeholder\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/yang960920/LiveNovelAI/pull/3\",\n    \"text\": \"GitHub feedback: mock_placeholder\\nPolarity: bad\\nKind: pull_request_body\\nRepo: yang960920/LiveNovelAI\\nAuthor: dependabot[bot] (Bot)\\nURL: https://github.com/yang960920/LiveNovelAI/pull/3\\nTitle: chore(deps): bump the minor-and-patch group with 25 updates\\nBody:\\nBumps the minor-and-patch group with 25 updates:\\n\\n| Package | From | To |\\n| --- | --- | --- |\\n| [@anthropic-ai/sdk](https://github.com/anthropics/anthropic-sdk-typescript) | `0.96.0` | `0.104.1` |\\n| [@aws-sdk/client-s3](https://github.com/aws/aws-sdk-js-v3/tree/HEAD/clients/client-s3) | `3.1048.0` | `3.1067.0` |\\n| [@google/genai](https://github.com/googleapis/js-genai) | `2.6.0` | `2.8.0` |\\n| @portone/browser-sdk | `0.1.7` | `0.1.8` |\\n| [@radix-ui/react-dialog](https://github.com/radix-ui/primitives/tree/HEAD/packages/react/dialog) | `1.1.15` | `1.1.16` |\\n| [@radix-ui/react-dropdown-menu](https://github.com/radix-ui/primitives/tree/HEAD/packages/react/dropdown-menu) | `2.1.16` | `2.1.17` |\\n| [@radix-ui/react-select](https://github.com/radix-ui/primitives/tree/HEAD/packages/react/select) | `2.2.6` | `2.3.0` |\\n| [@radix-ui/react-slot](https://github.com/radix-ui/primitives/tree/HEAD/packages/react/slot) | `1.2.4` | `1.2.5` |\\n| [@r\"\n  },\n  {\n    \"id\": \"github-feedback-comment-c5141f6861bfcfeb\",\n    \"kind\": \"issue_comment\",\n    \"label\": \"deployment_env_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/yang960920/LiveNovelAI/pull/3#issuecomment-4691549824\",\n    \"text\": \"GitHub feedback: deployment_env_gap\\nPolarity: bad\\nKind: issue_comment\\nRepo: yang960920/LiveNovelAI\\nAuthor: vercel[bot] (Bot)\\nURL: https://github.com/yang960920/LiveNovelAI/pull/3#issuecomment-4691549824\\nTitle: \\nBody:\\n[vc]: #xWW32TlIjiLUXo4pcwRbqAUjp9HS3+z9LZX8G2WiHfE=:eyJpc01vbm9yZXBvIjp0cnVlLCJ0eXBlIjoiZ2l0aHViIiwicHJvamVjdHMiOl\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/yang960920/LiveNovelAI", "source_id": "comment-chain-pattern-bad_chains-4bd09a2f3984f267", "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": "yang960920/LiveNovelAI", "source_dataset": "comment_chain_patterns/bad_chains", "training_usage": "weak_supervision"}}}, {"ruleId": "foundry_bad_chain", "level": "error", "message": {"text": "Foundry mined bad chains: yang960920/LiveNovelAI"}, "properties": {"repobilityId": 323867, "scanner": "foundry_dataset", "fingerprint": "5b3b6d0a0961f3277cc83c669442083761be190aa36f3c9bf78f011405f6f99f", "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": "yang960920/LiveNovelAI#2", "human_labels": ["deployment_env_gap", "human_feedback_general", "security_auth_secret", "test_ci_gap", "test_or_ci"], "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": "yang960920/LiveNovelAI", "training_usage": "negative_or_unresolved", "confidence_tier": "unresolved", "source_chain_id": "evidence-chain-issue_chain-0da2ac4010e234d5", "helicopter_views": {"graphs": 2, "schemas": 2}, "artifact_families": {"ci": 2, "docs": 1}, "source_chain_kind": "issue_chain", "changed_file_count": 1, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {"test_or_ci": 1}, "linked_commit_count": 0, "helicopter_view_count": 4, "source_artifact_count": 3, "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": 2, "design_schema_api_artifact_count": 0}, "text": "Comment chain pattern product: bad_chains\nRepo: yang960920/LiveNovelAI\nThread: yang960920/LiveNovelAI#2\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: yang960920/LiveNovelAI#2\nRepo: yang960920/LiveNovelAI\nThread label: thread_has_human_issue_without_fix_context\nOutcome: not_resolved_or_not_observed\nComment count: 4\nLinked commit count: 0\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 1\nLabels: {'test_ci_gap': 1, 'deployment_env_gap': 1, 'human_feedback_general': 1, 'security_auth_secret': 1}\nPolarities: {'bad': 3, 'neutral': 1}\nChanged file labels: {'test_or_ci': 1}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-aa1f0a1fda3a618f\",\n    \"kind\": \"pull_request_body\",\n    \"label\": \"test_ci_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/yang960920/LiveNovelAI/pull/2\",\n    \"text\": \"GitHub feedback: test_ci_gap\\nPolarity: bad\\nKind: pull_request_body\\nRepo: yang960920/LiveNovelAI\\nAuthor: dependabot[bot] (Bot)\\nURL: https://github.com/yang960920/LiveNovelAI/pull/2\\nTitle: chore(deps): bump actions/checkout from 4 to 6\\nBody:\\nBumps [actions/checkout](https://github.com/actions/checkout) from 4 to 6.\\n<details>\\n<summary>Release notes</summary>\\n<p><em>Sourced from <a href=\\\"https://github.com/actions/checkout/releases\\\">actions/checkout's releases</a>.</em></p>\\n<blockquote>\\n<h2>v6.0.0</h2>\\n<h2>What's Changed</h2>\\n<ul>\\n<li>Update README to include Node.js 24 support details and requirements by <a href=\\\"https://github.com/salmanmkc\\\"><code>@\u200bsalmanmkc</code></a> in <a href=\\\"https://redirect.github.com/actions/checkout/pull/2248\\\">actions/checkout#2248</a></li>\\n<li>Persist creds to a separate file by <a href=\\\"https://github.com/ericsciple\\\"><code>@\u200bericsciple</code></a> in <a href=\\\"https://redirect.github.com/actions/checkout/pull/2286\\\">actions/checkout#2286</a></li>\\n<li>v6-beta by <a href=\\\"https://github.com/ericsciple\\\"><code>@\u200bericsciple</code></a> in <a href=\\\"https://redirect.github.com/actions/checkout/pull/2298\\\">actions/checkout#2298</a></li>\\n<li>update readme/changelog for\"\n  },\n  {\n    \"id\": \"github-feedback-comment-489cc3abe64be565\",\n    \"kind\": \"issue_comment\",\n    \"label\": \"deployment_env_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/yang960920/LiveNovelAI/pull/2#issuecomment-4691519032\",\n    \"text\": \"GitHub feedback: deployment_env_gap\\nPolarity: bad\\nKind: issue_comment\\nRepo: yang960920/LiveNovelAI\\nAuthor: vercel[bot] (Bot)\\nURL: https://github.com/yang960920/LiveNovelAI/pull/2#issuecomment-4691519032\\nTitle: \\nBody:\\n[vc]: #niJUN5tWPMTQ6fzoUsVoVUKAqd6D/mYy6pjU/XMrPJg=:eyJpc01vbm9yZXBvIjp0cnVlLCJ0eXBlIjoiZ2l0aHViIiwicHJvamVjdHMiOlt7Im\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/yang960920/LiveNovelAI", "source_id": "comment-chain-pattern-bad_chains-c6abd040be7c4bd8", "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": "yang960920/LiveNovelAI", "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: yang960920/LiveNovelAI"}, "properties": {"repobilityId": 335289, "scanner": "foundry_dataset", "fingerprint": "5b7649eca6f7cc090943ed02dcc80992b710ade8fd91cbe13fa6b6c147b5affe", "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, "test_ci_gap": 1, "deployment_env_gap": 1, "dependency_or_build": 2, "security_auth_secret": 1, "verification_or_tests": 2, "human_feedback_general": 1, "unlinked_human_feedback": 1, "mostly follows blueprint": 1, "issue_or_pull_request_thread": 1, "not_resolved_or_not_observed": 4, "ambiguous_needs_more_evidence": 1, "blueprint_human_gap_disagreement": 1, "human_reported_issue_no_linked_fix": 2, "thread_has_human_issue_and_fix_context": 2, "claimed_resolved_with_verification_signal": 1, "human_reported_issue_then_verified_fix_attempt": 1}, "source": "graph_query_export", "motif_id": "security_auth_without_guardrails", "outcomes": {"not_resolved_or_not_observed": 8, "ambiguous_needs_more_evidence": 2, "claimed_resolved_with_verification_signal": 2}, "polarity": "bad", "query_id": "security_auth_guardrail_gaps", "severity": "critical", "ci_labels": {}, "synthetic": false, "edge_count": 45, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 4, "thread_has_comment": 4, "thread_touches_file": 2, "alignment_uses_comment": 1, "alignment_uses_finding": 1, "chain_has_link_quality": 7, "comment_aligns_finding": 1, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "issue_chain_touches_file": 2, "thread_has_comment_chain": 4, "comment_chain_links_commit": 3, "comment_chain_touches_file": 8, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 4}, "node_count": 26, "node_types": {"repo": 1, "commit": 3, "thread": 1, "comment": 4, "pr_file": 2, "alignment": 1, "fix_outcome": 1, "issue_chain": 1, "link_quality": 7, "comment_chain": 4, "blueprint_finding": 1}, "query_type": "motif_query", "thread_key": "yang960920/LiveNovelAI#7", "issue_number": "7", "quality_tiers": {"unresolved": 3, "assumption_check": 1, "weak_supervision": 3}, "repo_full_name": "yang960920/LiveNovelAI", "training_usage": "assumption_check", "source_motif_id": "graph-pattern-motif-thread-7f7a07ecee30cd41", "graph_gold_label": "supported_by_verification_signal", "changed_file_labels": {"dependency_or_build": 14}}, "text": "Graph query export: Security/auth changes without enough guardrails\nQuery id: security_auth_guardrail_gaps\nQuery type: motif_query\nIntent: Assumption-check security/auth examples requiring stronger tests or CI.\nMotif: security_auth_without_guardrails\nTraining usage: assumption_check\nGraph gold label: supported_by_verification_signal\nRepo: yang960920/LiveNovelAI\nThread: yang960920/LiveNovelAI#7\nEvidence:\nGraph motif: Security/auth change without enough guardrails\nMotif id: security_auth_without_guardrails\nPolarity: bad\nTraining usage: assumption_check\nSeverity: critical\nRepo: yang960920/LiveNovelAI\nThread: yang960920/LiveNovelAI#7\nGraph gold label: supported_by_verification_signal\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: yang960920/LiveNovelAI#7\nRepo: yang960920/LiveNovelAI\nIssue/PR number: 7\nGraph consistency label: supported_by_verification_signal\nNodes: 26\nEdges: 45\nNode types: {'link_quality': 7, 'comment': 4, 'comment_chain': 4, 'commit': 3, 'pr_file': 2, 'thread': 1, 'repo': 1, 'issue_chain': 1, 'fix_outcome': 1, 'alignment': 1, 'blueprint_finding': 1}\nEdge types: {'comment_chain_touches_file': 8, 'chain_has_link_quality': 7, 'thread_has_comment': 4, 'thread_has_comment_chain': 4, 'comment_has_chain': 4, 'issue_chain_has_comment_chain': 4, 'comment_chain_links_commit': 3, 'thread_touches_file': 2, 'issue_chain_touches_file': 2, 'repo_has_thread': 1, 'thread_has_issue_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1, 'alignment_uses_comment': 1, 'alignment_uses_finding': 1, 'comment_aligns_finding': 1}\nLabels: {'not_resolved_or_not_observed': 4, 'dependency_or_build': 2, 'verification_or_tests': 2, 'human_reported_issue_no_linked_fix': 2, 'thread_has_human_issue_and_fix_context': 2, 'issue_or_pull_request_thread': 1, 'test_ci_gap': 1, 'deployment_env_gap': 1, 'human_feedback_general': 1, 'security_auth_secret': 1, 'human_reported_issue_then_verified_fix_attempt': 1, 'bug_fix': 1, 'claimed_resolved_with_verification_signal': 1, 'unlinked_human_feedback': 1, 'ambiguous_needs_more_evidence': 1, 'blueprint_human_gap_disagreement': 1}\nOutcomes: {'not_resolved_or_not_observed': 8, 'claimed_resolved_with_verification_signal': 2, 'ambiguous_needs_more_evidence': 2}\nQuality tiers: {'weak_supervision': 3, 'unresolved': 3, 'assumption_check': 1}\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/yang960920/LiveNovelAI", "source_id": "graph-query-motif_query-6cdd76f9efdbbae3", "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": "yang960920/LiveNovelAI", "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: yang960920/LiveNovelAI"}, "properties": {"repobilityId": 335288, "scanner": "foundry_dataset", "fingerprint": "00672a35f7fd703990838d7829619efc804e3f748e689dd6569f4488868980c7", "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": {"test_ci_gap": 1, "deployment_env_gap": 1, "dependency_or_build": 2, "security_auth_secret": 1, "human_feedback_general": 1, "unlinked_human_feedback": 1, "mostly follows blueprint": 1, "issue_or_pull_request_thread": 1, "not_resolved_or_not_observed": 5, "ambiguous_needs_more_evidence": 1, "blueprint_human_gap_disagreement": 1, "human_reported_issue_no_linked_fix": 3, "thread_has_human_issue_without_fix_context": 2}, "source": "graph_query_export", "motif_id": "security_auth_without_guardrails", "outcomes": {"not_resolved_or_not_observed": 10, "ambiguous_needs_more_evidence": 2}, "polarity": "bad", "query_id": "security_auth_guardrail_gaps", "severity": "critical", "ci_labels": {}, "synthetic": false, "edge_count": 42, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 4, "thread_has_comment": 4, "thread_touches_file": 2, "alignment_uses_comment": 1, "alignment_uses_finding": 1, "chain_has_link_quality": 7, "comment_aligns_finding": 1, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "issue_chain_touches_file": 2, "thread_has_comment_chain": 4, "comment_chain_touches_file": 8, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 4}, "node_count": 23, "node_types": {"repo": 1, "thread": 1, "comment": 4, "pr_file": 2, "alignment": 1, "fix_outcome": 1, "issue_chain": 1, "link_quality": 7, "comment_chain": 4, "blueprint_finding": 1}, "query_type": "motif_query", "thread_key": "yang960920/LiveNovelAI#6", "issue_number": "6", "quality_tiers": {"unresolved": 6, "assumption_check": 1}, "repo_full_name": "yang960920/LiveNovelAI", "training_usage": "assumption_check", "source_motif_id": "graph-pattern-motif-thread-6cdba1eb862d1734", "graph_gold_label": "assumption_check", "changed_file_labels": {"dependency_or_build": 14}}, "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: assumption_check\nRepo: yang960920/LiveNovelAI\nThread: yang960920/LiveNovelAI#6\nEvidence:\nGraph motif: Security/auth change without enough guardrails\nMotif id: security_auth_without_guardrails\nPolarity: bad\nTraining usage: assumption_check\nSeverity: critical\nRepo: yang960920/LiveNovelAI\nThread: yang960920/LiveNovelAI#6\nGraph gold label: assumption_check\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: yang960920/LiveNovelAI#6\nRepo: yang960920/LiveNovelAI\nIssue/PR number: 6\nGraph consistency label: assumption_check\nNodes: 23\nEdges: 42\nNode types: {'link_quality': 7, 'comment': 4, 'comment_chain': 4, 'pr_file': 2, 'thread': 1, 'repo': 1, 'issue_chain': 1, 'fix_outcome': 1, 'alignment': 1, 'blueprint_finding': 1}\nEdge types: {'comment_chain_touches_file': 8, 'chain_has_link_quality': 7, 'thread_has_comment': 4, 'thread_has_comment_chain': 4, 'comment_has_chain': 4, 'issue_chain_has_comment_chain': 4, 'thread_touches_file': 2, 'issue_chain_touches_file': 2, 'repo_has_thread': 1, 'thread_has_issue_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1, 'alignment_uses_comment': 1, 'alignment_uses_finding': 1, 'comment_aligns_finding': 1}\nLabels: {'not_resolved_or_not_observed': 5, 'human_reported_issue_no_linked_fix': 3, 'dependency_or_build': 2, 'thread_has_human_issue_without_fix_context': 2, 'issue_or_pull_request_thread': 1, 'test_ci_gap': 1, 'deployment_env_gap': 1, 'human_feedback_general': 1, 'security_auth_secret': 1, 'unlinked_human_feedback': 1, 'ambiguous_needs_more_evidence': 1, 'blueprint_human_gap_disagreement': 1, 'mostly follows blueprint': 1}\nOutcomes: {'not_resolved_or_not_observed': 10, 'ambiguous_needs_more_evidence': 2}\nQuality tiers: {'unresolved': 6, 'assumption_check': 1}\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/yang960920/LiveNovelAI", "source_id": "graph-query-motif_query-fbbe0574591ac86c", "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": "yang960920/LiveNovelAI", "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: yang960920/LiveNovelAI"}, "properties": {"repobilityId": 335287, "scanner": "foundry_dataset", "fingerprint": "1b7f5e8c435770a44b221fe65f5dddee4200136d04b9b0ab37675ce5046e1351", "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": {"deployment_env_gap": 1, "dependency_or_build": 2, "security_auth_secret": 2, "human_feedback_general": 1, "unlinked_human_feedback": 1, "issue_or_pull_request_thread": 1, "not_resolved_or_not_observed": 5, "ambiguous_needs_more_evidence": 1, "human_reported_issue_no_linked_fix": 3, "thread_has_human_issue_without_fix_context": 2}, "source": "graph_query_export", "motif_id": "security_auth_without_guardrails", "outcomes": {"not_resolved_or_not_observed": 10, "ambiguous_needs_more_evidence": 2}, "polarity": "bad", "query_id": "security_auth_guardrail_gaps", "severity": "critical", "ci_labels": {}, "synthetic": false, "edge_count": 38, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 4, "thread_has_comment": 4, "thread_touches_file": 2, "chain_has_link_quality": 6, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "issue_chain_touches_file": 2, "thread_has_comment_chain": 4, "comment_chain_touches_file": 8, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 4}, "node_count": 20, "node_types": {"repo": 1, "thread": 1, "comment": 4, "pr_file": 2, "fix_outcome": 1, "issue_chain": 1, "link_quality": 6, "comment_chain": 4}, "query_type": "motif_query", "thread_key": "yang960920/LiveNovelAI#5", "issue_number": "5", "quality_tiers": {"unresolved": 6}, "repo_full_name": "yang960920/LiveNovelAI", "training_usage": "assumption_check", "source_motif_id": "graph-pattern-motif-thread-82e1d074a1203551", "graph_gold_label": "needs_more_evidence", "changed_file_labels": {"dependency_or_build": 14}}, "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: yang960920/LiveNovelAI\nThread: yang960920/LiveNovelAI#5\nEvidence:\nGraph motif: Security/auth change without enough guardrails\nMotif id: security_auth_without_guardrails\nPolarity: bad\nTraining usage: assumption_check\nSeverity: critical\nRepo: yang960920/LiveNovelAI\nThread: yang960920/LiveNovelAI#5\nGraph gold label: needs_more_evidence\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: yang960920/LiveNovelAI#5\nRepo: yang960920/LiveNovelAI\nIssue/PR number: 5\nGraph consistency label: needs_more_evidence\nNodes: 20\nEdges: 38\nNode types: {'link_quality': 6, 'comment': 4, 'comment_chain': 4, 'pr_file': 2, 'thread': 1, 'repo': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'comment_chain_touches_file': 8, 'chain_has_link_quality': 6, 'thread_has_comment': 4, 'thread_has_comment_chain': 4, 'comment_has_chain': 4, 'issue_chain_has_comment_chain': 4, 'thread_touches_file': 2, 'issue_chain_touches_file': 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': 5, 'human_reported_issue_no_linked_fix': 3, 'security_auth_secret': 2, 'dependency_or_build': 2, 'thread_has_human_issue_without_fix_context': 2, 'issue_or_pull_request_thread': 1, 'deployment_env_gap': 1, 'human_feedback_general': 1, 'unlinked_human_feedback': 1, 'ambiguous_needs_more_evidence': 1}\nOutcomes: {'not_resolved_or_not_observed': 10, 'ambiguous_needs_more_evidence': 2}\nQuality tiers: {'unresolved': 6}\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/yang960920/LiveNovelAI", "source_id": "graph-query-motif_query-43547fda563f5b4d", "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": "yang960920/LiveNovelAI", "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: yang960920/LiveNovelAI"}, "properties": {"repobilityId": 335286, "scanner": "foundry_dataset", "fingerprint": "1628a8bc3a0f914fd94622a01cd27800ba979591a9591921f77312043ecad831", "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": 2, "test_ci_gap": 1, "deployment_env_gap": 1, "dependency_or_build": 3, "security_auth_secret": 1, "verification_or_tests": 2, "human_feedback_general": 1, "unlinked_human_feedback": 1, "mostly follows blueprint": 1, "issue_or_pull_request_thread": 1, "not_resolved_or_not_observed": 4, "ambiguous_needs_more_evidence": 1, "blueprint_human_gap_disagreement": 1, "human_reported_issue_no_linked_fix": 2, "thread_has_human_issue_and_fix_context": 2, "claimed_resolved_with_verification_signal": 1, "human_reported_issue_then_verified_fix_attempt": 1}, "source": "graph_query_export", "motif_id": "security_auth_without_guardrails", "outcomes": {"not_resolved_or_not_observed": 8, "ambiguous_needs_more_evidence": 2, "claimed_resolved_with_verification_signal": 2}, "polarity": "bad", "query_id": "security_auth_guardrail_gaps", "severity": "critical", "ci_labels": {}, "synthetic": false, "edge_count": 47, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 4, "thread_has_comment": 4, "thread_touches_file": 2, "alignment_uses_comment": 1, "alignment_uses_finding": 1, "chain_has_link_quality": 7, "comment_aligns_finding": 1, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "issue_chain_touches_file": 2, "thread_has_comment_chain": 4, "comment_chain_links_commit": 5, "comment_chain_touches_file": 8, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 4}, "node_count": 28, "node_types": {"repo": 1, "commit": 5, "thread": 1, "comment": 4, "pr_file": 2, "alignment": 1, "fix_outcome": 1, "issue_chain": 1, "link_quality": 7, "comment_chain": 4, "blueprint_finding": 1}, "query_type": "motif_query", "thread_key": "yang960920/LiveNovelAI#4", "issue_number": "4", "quality_tiers": {"unresolved": 3, "assumption_check": 1, "weak_supervision": 3}, "repo_full_name": "yang960920/LiveNovelAI", "training_usage": "assumption_check", "source_motif_id": "graph-pattern-motif-thread-d0c954bfd6b62539", "graph_gold_label": "supported_by_verification_signal", "changed_file_labels": {"dependency_or_build": 14}}, "text": "Graph query export: Security/auth changes without enough guardrails\nQuery id: security_auth_guardrail_gaps\nQuery type: motif_query\nIntent: Assumption-check security/auth examples requiring stronger tests or CI.\nMotif: security_auth_without_guardrails\nTraining usage: assumption_check\nGraph gold label: supported_by_verification_signal\nRepo: yang960920/LiveNovelAI\nThread: yang960920/LiveNovelAI#4\nEvidence:\nGraph motif: Security/auth change without enough guardrails\nMotif id: security_auth_without_guardrails\nPolarity: bad\nTraining usage: assumption_check\nSeverity: critical\nRepo: yang960920/LiveNovelAI\nThread: yang960920/LiveNovelAI#4\nGraph gold label: supported_by_verification_signal\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: yang960920/LiveNovelAI#4\nRepo: yang960920/LiveNovelAI\nIssue/PR number: 4\nGraph consistency label: supported_by_verification_signal\nNodes: 28\nEdges: 47\nNode types: {'link_quality': 7, 'commit': 5, 'comment': 4, 'comment_chain': 4, 'pr_file': 2, 'thread': 1, 'repo': 1, 'issue_chain': 1, 'fix_outcome': 1, 'alignment': 1, 'blueprint_finding': 1}\nEdge types: {'comment_chain_touches_file': 8, 'chain_has_link_quality': 7, 'comment_chain_links_commit': 5, 'thread_has_comment': 4, 'thread_has_comment_chain': 4, 'comment_has_chain': 4, 'issue_chain_has_comment_chain': 4, 'thread_touches_file': 2, 'issue_chain_touches_file': 2, 'repo_has_thread': 1, 'thread_has_issue_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1, 'alignment_uses_comment': 1, 'alignment_uses_finding': 1, 'comment_aligns_finding': 1}\nLabels: {'not_resolved_or_not_observed': 4, 'dependency_or_build': 3, 'bug_fix': 2, 'verification_or_tests': 2, 'human_reported_issue_no_linked_fix': 2, 'thread_has_human_issue_and_fix_context': 2, 'issue_or_pull_request_thread': 1, 'test_ci_gap': 1, 'deployment_env_gap': 1, 'human_feedback_general': 1, 'security_auth_secret': 1, 'human_reported_issue_then_verified_fix_attempt': 1, 'claimed_resolved_with_verification_signal': 1, 'unlinked_human_feedback': 1, 'ambiguous_needs_more_evidence': 1, 'blueprint_human_gap_disagreement': 1}\nOutcomes: {'not_resolved_or_not_observed': 8, 'claimed_resolved_with_verification_signal': 2, 'ambiguous_needs_more_evidence': 2}\nQuality tiers: {'weak_supervision': 3, 'unresolved': 3, 'assumption_check': 1}\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/yang960920/LiveNovelAI", "source_id": "graph-query-motif_query-b7d1fe8790bd127a", "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": "yang960920/LiveNovelAI", "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: yang960920/LiveNovelAI"}, "properties": {"repobilityId": 335285, "scanner": "foundry_dataset", "fingerprint": "d6a9b756bb31690af22916912d1fc5f3969a79b04df362b74729fdc38b8b9926", "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, "mock_placeholder": 1, "deployment_env_gap": 1, "dependency_or_build": 2, "security_auth_secret": 1, "human_feedback_general": 1, "unlinked_human_feedback": 1, "claimed_resolved_unverified": 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, "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": 2, "not_resolved_or_not_observed": 8, "ambiguous_needs_more_evidence": 2}, "polarity": "bad", "query_id": "security_auth_guardrail_gaps", "severity": "critical", "ci_labels": {}, "synthetic": false, "edge_count": 39, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 4, "thread_has_comment": 4, "thread_touches_file": 2, "chain_has_link_quality": 6, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "issue_chain_touches_file": 2, "thread_has_comment_chain": 4, "comment_chain_links_commit": 1, "comment_chain_touches_file": 8, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 4}, "node_count": 21, "node_types": {"repo": 1, "commit": 1, "thread": 1, "comment": 4, "pr_file": 2, "fix_outcome": 1, "issue_chain": 1, "link_quality": 6, "comment_chain": 4}, "query_type": "motif_query", "thread_key": "yang960920/LiveNovelAI#3", "issue_number": "3", "quality_tiers": {"unresolved": 3, "weak_supervision": 3}, "repo_full_name": "yang960920/LiveNovelAI", "training_usage": "assumption_check", "source_motif_id": "graph-pattern-motif-thread-8e42a01a2e282277", "graph_gold_label": "weak_supervision_needs_review", "changed_file_labels": {"dependency_or_build": 14}}, "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: yang960920/LiveNovelAI\nThread: yang960920/LiveNovelAI#3\nEvidence:\nGraph motif: Security/auth change without enough guardrails\nMotif id: security_auth_without_guardrails\nPolarity: bad\nTraining usage: assumption_check\nSeverity: critical\nRepo: yang960920/LiveNovelAI\nThread: yang960920/LiveNovelAI#3\nGraph gold label: weak_supervision_needs_review\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: yang960920/LiveNovelAI#3\nRepo: yang960920/LiveNovelAI\nIssue/PR number: 3\nGraph consistency label: weak_supervision_needs_review\nNodes: 21\nEdges: 39\nNode types: {'link_quality': 6, 'comment': 4, 'comment_chain': 4, 'pr_file': 2, 'thread': 1, 'repo': 1, 'commit': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'comment_chain_touches_file': 8, 'chain_has_link_quality': 6, 'thread_has_comment': 4, 'thread_has_comment_chain': 4, 'comment_has_chain': 4, 'issue_chain_has_comment_chain': 4, 'thread_touches_file': 2, 'issue_chain_touches_file': 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: {'not_resolved_or_not_observed': 4, 'dependency_or_build': 2, 'human_reported_issue_no_linked_fix': 2, 'thread_has_human_issue_and_fix_context': 2, 'issue_or_pull_request_thread': 1, 'mock_placeholder': 1, 'deployment_env_gap': 1, 'human_feedback_general': 1, 'security_auth_secret': 1, 'human_reported_issue_then_fix_attempt': 1, 'bug_fix': 1, 'claimed_resolved_unverified': 1, 'unlinked_human_feedback': 1, 'ambiguous_needs_more_evidence': 1}\nOutcomes: {'not_resolved_or_not_observed': 8, 'claimed_resolved_unverified': 2, 'ambiguous_needs_more_evidence': 2}\nQuality tiers: {'weak_supervision': 3, '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/yang960920/LiveNovelAI", "source_id": "graph-query-motif_query-f54a9e203a617eed", "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": "yang960920/LiveNovelAI", "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: yang960920/LiveNovelAI"}, "properties": {"repobilityId": 327440, "scanner": "foundry_dataset", "fingerprint": "cfa27dc5a459d866291dfc7fa34cf903bd7180ba655743662473d66acb45d86d", "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": 1, "mock_placeholder": 1, "deployment_env_gap": 1, "dependency_or_build": 2, "security_auth_secret": 1, "human_feedback_general": 1, "unlinked_human_feedback": 1, "claimed_resolved_unverified": 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, "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": 2, "not_resolved_or_not_observed": 8, "ambiguous_needs_more_evidence": 2}, "polarity": "bad", "query_id": "mock_as_real_or_placeholder", "severity": "critical", "ci_labels": {}, "synthetic": false, "edge_count": 39, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 4, "thread_has_comment": 4, "thread_touches_file": 2, "chain_has_link_quality": 6, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "issue_chain_touches_file": 2, "thread_has_comment_chain": 4, "comment_chain_links_commit": 1, "comment_chain_touches_file": 8, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 4}, "node_count": 21, "node_types": {"repo": 1, "commit": 1, "thread": 1, "comment": 4, "pr_file": 2, "fix_outcome": 1, "issue_chain": 1, "link_quality": 6, "comment_chain": 4}, "query_type": "motif_query", "thread_key": "yang960920/LiveNovelAI#3", "issue_number": "3", "quality_tiers": {"unresolved": 3, "weak_supervision": 3}, "repo_full_name": "yang960920/LiveNovelAI", "training_usage": "hard_negative", "source_motif_id": "graph-pattern-motif-thread-574649577424c4d3", "graph_gold_label": "weak_supervision_needs_review", "changed_file_labels": {"dependency_or_build": 14}}, "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: yang960920/LiveNovelAI\nThread: yang960920/LiveNovelAI#3\nEvidence:\nGraph motif: Mock, sample, placeholder, or self-attested behavior treated as real\nMotif id: mock_as_real_or_placeholder\nPolarity: bad\nTraining usage: hard_negative\nSeverity: critical\nRepo: yang960920/LiveNovelAI\nThread: yang960920/LiveNovelAI#3\nGraph gold label: weak_supervision_needs_review\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: yang960920/LiveNovelAI#3\nRepo: yang960920/LiveNovelAI\nIssue/PR number: 3\nGraph consistency label: weak_supervision_needs_review\nNodes: 21\nEdges: 39\nNode types: {'link_quality': 6, 'comment': 4, 'comment_chain': 4, 'pr_file': 2, 'thread': 1, 'repo': 1, 'commit': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'comment_chain_touches_file': 8, 'chain_has_link_quality': 6, 'thread_has_comment': 4, 'thread_has_comment_chain': 4, 'comment_has_chain': 4, 'issue_chain_has_comment_chain': 4, 'thread_touches_file': 2, 'issue_chain_touches_file': 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: {'not_resolved_or_not_observed': 4, 'dependency_or_build': 2, 'human_reported_issue_no_linked_fix': 2, 'thread_has_human_issue_and_fix_context': 2, 'issue_or_pull_request_thread': 1, 'mock_placeholder': 1, 'deployment_env_gap': 1, 'human_feedback_general': 1, 'security_auth_secret': 1, 'human_reported_issue_then_fix_attempt': 1, 'bug_fix': 1, 'claimed_resolved_unverified': 1, 'unlinked_human_feedback': 1, 'ambiguous_needs_more_evidence': 1}\nOutcomes: {'not_resolved_or_not_observed': 8, 'claimed_resolved_unverified': 2, 'ambiguous_needs_more_evidence': 2}\nQuality tiers: {'weak_supervision': 3, '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/yang960920/LiveNovelAI", "source_id": "graph-query-motif_query-f52a4e88b8912c25", "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": "yang960920/LiveNovelAI", "source_dataset": "graph_queries/mock_as_real_or_placeholder", "training_usage": "hard_negative"}}}, {"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-d59df3c86b29db78", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/backfill-character-asset-folders.ts:36"}, "properties": {"repobilityId": "3b8fc459459e9b21", "scanner": "scanner-primary", "fingerprint": "d59df3c86b29db78", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-10c8a60b4ee494fa", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/backfill-memory-embeddings.ts:34"}, "properties": {"repobilityId": "b02ca7437149a2a2", "scanner": "scanner-primary", "fingerprint": "10c8a60b4ee494fa", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b1e3de87526eaff0", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/seed-frontier-story.ts:598"}, "properties": {"repobilityId": "bec28f6603880511", "scanner": "scanner-primary", "fingerprint": "b1e3de87526eaff0", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-3c5fa9855939c4fc", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 prisma/seed.ts:492"}, "properties": {"repobilityId": "f77d7e0fb34b08e2", "scanner": "scanner-primary", "fingerprint": "3c5fa9855939c4fc", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-5a6d2256b759ad33", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 components/layout/TopNav.tsx:105"}, "properties": {"repobilityId": "66a2c7c2be845856", "scanner": "scanner-primary", "fingerprint": "5a6d2256b759ad33", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-9b75ff487c9dadfd", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 components/play/StoryFeed.tsx:134"}, "properties": {"repobilityId": "0691fa553b084d20", "scanner": "scanner-primary", "fingerprint": "9b75ff487c9dadfd", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-8bc3d41d249e17c9", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 components/play/VisualNovelPreview.tsx:51"}, "properties": {"repobilityId": "e16cdc8e6ee96ee5", "scanner": "scanner-primary", "fingerprint": "8bc3d41d249e17c9", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-9f079e9277547f51", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 components/play/ScenarioHub.tsx:82"}, "properties": {"repobilityId": "2073b6685d7e3527", "scanner": "scanner-primary", "fingerprint": "9f079e9277547f51", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-93216b0bc104e9bd", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 components/world-builder/StoryBuilderShell.tsx:391"}, "properties": {"repobilityId": "daf4dcd3a3edd231", "scanner": "scanner-primary", "fingerprint": "93216b0bc104e9bd", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-a99f2e462d8c70ef", "level": "note", "message": {"text": "React Flow edge with `label=` but no project-wide edge-label CSS override \u2014 components/world-builder/tabs/EndingSettingTab.tsx:55"}, "properties": {"repobilityId": "7da711cf037e308c", "scanner": "scanner-primary", "fingerprint": "a99f2e462d8c70ef", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.edge-label.no-bg"]}}, {"ruleId": "scanner-225be9d3a54d6797", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 components/world-builder/tabs/ProfileTab.tsx:242"}, "properties": {"repobilityId": "6967040c764a158f", "scanner": "scanner-primary", "fingerprint": "225be9d3a54d6797", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-a7e6989116b8e140", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 components/character-builder/CharacterBuilderShell.tsx:206"}, "properties": {"repobilityId": "d28e64f0e5e77d86", "scanner": "scanner-primary", "fingerprint": "a7e6989116b8e140", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-fc198c4ea6169f69", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 components/memory/FamilyConsolidate.tsx:52"}, "properties": {"repobilityId": "40fd0456d2c6815d", "scanner": "scanner-primary", "fingerprint": "fc198c4ea6169f69", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-8b02b9e9e4a06a19", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 components/asset/AssetFolderManager.tsx:435"}, "properties": {"repobilityId": "4392209eb049482f", "scanner": "scanner-primary", "fingerprint": "8b02b9e9e4a06a19", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-20dec19387fc74c8", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 components/asset/AssetImportPicker.tsx:173"}, "properties": {"repobilityId": "265214a39aeab2cf", "scanner": "scanner-primary", "fingerprint": "20dec19387fc74c8", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-fe49cd51befb33d7", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 components/asset/SpriteSheetFields.tsx:330"}, "properties": {"repobilityId": "c1c83e3e69f23b53", "scanner": "scanner-primary", "fingerprint": "fe49cd51befb33d7", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-4e6eb93a0a442a5f", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 components/world/WorldCard.tsx:98"}, "properties": {"repobilityId": "21f396632e6437cc", "scanner": "scanner-primary", "fingerprint": "4e6eb93a0a442a5f", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-7ff4c194907c2f4b", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 components/world/QualitySimulationCard.tsx:49"}, "properties": {"repobilityId": "25186b74c0e5efa2", "scanner": "scanner-primary", "fingerprint": "7ff4c194907c2f4b", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-7f4bba2898b84de2", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 components/world/CreatorDiagnosticsCard.tsx:90"}, "properties": {"repobilityId": "f4af53a6f67d108f", "scanner": "scanner-primary", "fingerprint": "7f4bba2898b84de2", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-0162a9ad7f5b2954", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 app/play/[sessionId]/page.tsx:502"}, "properties": {"repobilityId": "d0e82845cf3993c6", "scanner": "scanner-primary", "fingerprint": "0162a9ad7f5b2954", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-883355b4daf99f9a", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 app/me/import/[runId]/page.tsx:159"}, "properties": {"repobilityId": "b7cf66dbc5f234b3", "scanner": "scanner-primary", "fingerprint": "883355b4daf99f9a", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-96a084369eda4ddd", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 lib/email/sender-console.ts:20"}, "properties": {"repobilityId": "602fbe08ce374045", "scanner": "scanner-primary", "fingerprint": "96a084369eda4ddd", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-2123907a66adc200", "level": "note", "message": {"text": "React Flow edge with `label=` but no project-wide edge-label CSS override \u2014 lib/play/forced-ending.ts:70"}, "properties": {"repobilityId": "f0ec35d79cb7147e", "scanner": "scanner-primary", "fingerprint": "2123907a66adc200", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.edge-label.no-bg"]}}, {"ruleId": "scanner-cc4cbae2f2538af1", "level": "note", "message": {"text": "React Flow edge with `label=` but no project-wide edge-label CSS override \u2014 lib/quality/simulation-qa.ts:213"}, "properties": {"repobilityId": "f2f38ce1dd9ffcdc", "scanner": "scanner-primary", "fingerprint": "cc4cbae2f2538af1", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.edge-label.no-bg"]}}, {"ruleId": "scanner-ff0a2429e5640e28", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 lib/providers/model-log.ts:52"}, "properties": {"repobilityId": "7b8f822b0c351eda", "scanner": "scanner-primary", "fingerprint": "ff0a2429e5640e28", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-200bbf9ec223228c", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 lib/actions/asset.ts:854"}, "properties": {"repobilityId": "9c830a94cc810b66", "scanner": "scanner-primary", "fingerprint": "200bbf9ec223228c", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-99d11ccfef511064", "level": "warning", "message": {"text": "Privileged port 13 in use"}, "properties": {"repobilityId": "79d721e4d6f64798", "scanner": "scanner-primary", "fingerprint": "99d11ccfef511064", "layer": "network", "severity": "medium", "confidence": 1.0, "tags": ["security", "ports"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/asset-cleanup-cron.yml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-151f6332cafa7163", "level": "warning", "message": {"text": "Privileged port 12 in use"}, "properties": {"repobilityId": "65e7eefa33f2def4", "scanner": "scanner-primary", "fingerprint": "151f6332cafa7163", "layer": "network", "severity": "medium", "confidence": 1.0, "tags": ["security", "ports"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/payout-cron.yml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-a35c6a00f751880f", "level": "note", "message": {"text": "Docker base image is tag-pinned but not digest-pinned: node:20-slim"}, "properties": {"repobilityId": "ce06778f66793e53", "scanner": "scanner-primary", "fingerprint": "a35c6a00f751880f", "layer": "hardware", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "docker", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "Dockerfile"}, "region": {"startLine": 13}}}]}, {"ruleId": "scanner-a35c6a00f751880f", "level": "note", "message": {"text": "Docker base image is tag-pinned but not digest-pinned: node:20-slim"}, "properties": {"repobilityId": "1f91b0ef5292e68f", "scanner": "scanner-primary", "fingerprint": "a35c6a00f751880f", "layer": "hardware", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "docker", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "Dockerfile"}, "region": {"startLine": 26}}}]}, {"ruleId": "scanner-a35c6a00f751880f", "level": "note", "message": {"text": "Docker base image is tag-pinned but not digest-pinned: node:20-slim"}, "properties": {"repobilityId": "23d81feffa89fd36", "scanner": "scanner-primary", "fingerprint": "a35c6a00f751880f", "layer": "hardware", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "docker", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "Dockerfile"}, "region": {"startLine": 40}}}]}, {"ruleId": "scanner-aa5acaa49eb8315b", "level": "note", "message": {"text": "Containers defined but no K8s/orchestration manifest found"}, "properties": {"repobilityId": "b230ea9b68736081", "scanner": "scanner-primary", "fingerprint": "aa5acaa49eb8315b", "layer": "hardware", "severity": "low", "confidence": 1.0, "tags": ["coverage", "deployment"]}}, {"ruleId": "scanner-f86a002afaeb4fb4", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/check-drift.mjs:20"}, "properties": {"repobilityId": "a133572d1b1562b9", "scanner": "scanner-primary", "fingerprint": "f86a002afaeb4fb4", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/check-drift.mjs"}, "region": {"startLine": 20}}}]}, {"ruleId": "scanner-27924aa79fa4a517", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "ae16880318b99912", "scanner": "scanner-primary", "fingerprint": "27924aa79fa4a517", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/ci.yml"}, "region": {"startLine": 44}}}]}, {"ruleId": "scanner-27924aa79fa4a517", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "989a74409a402368", "scanner": "scanner-primary", "fingerprint": "27924aa79fa4a517", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/ci.yml"}, "region": {"startLine": 47}}}]}, {"ruleId": "scanner-94bcc894fa8dc285", "level": "note", "message": {"text": "Very large file: lib/actions/play.ts (1216 lines)"}, "properties": {"repobilityId": "2b1bca23e8c547bf", "scanner": "scanner-primary", "fingerprint": "94bcc894fa8dc285", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-141b30a41e03817b", "level": "note", "message": {"text": "No license file detected"}, "properties": {"repobilityId": "f4acd20081739ffc", "scanner": "scanner-primary", "fingerprint": "141b30a41e03817b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["license", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-8983e5cad3bd8a20", "level": "note", "message": {"text": "Node manifest has dependencies but no lockfile: demo/package.json"}, "properties": {"repobilityId": "2870c11d88ebcb15", "scanner": "scanner-primary", "fingerprint": "8983e5cad3bd8a20", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["dependency", "lockfile", "reproducibility", "generated-repo-pattern"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "demo/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-3ab5d313dda8e5f9", "level": "note", "message": {"text": "Debug logging residue appears in source files"}, "properties": {"repobilityId": "a0af2cd7fb3daac0", "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": "a8ff701f1783297d", "scanner": "scanner-primary", "fingerprint": "72b2a6250083a784", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["placeholder", "mock-data", "incomplete", "generated-repo-pattern"]}}, {"ruleId": "scanner-9d79c4077342a7d0", "level": "warning", "message": {"text": "Runtime service client appears to use placeholder configuration"}, "properties": {"repobilityId": "c2383579540e403e", "scanner": "scanner-primary", "fingerprint": "9d79c4077342a7d0", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["placeholder", "runtime-config", "service-client", "generated-repo-pattern"]}}, {"ruleId": "scanner-2d0c7b7ab8f8aacf", "level": "warning", "message": {"text": "Critical user flow still appears backed by mock or placeholder data"}, "properties": {"repobilityId": "ac66ce20a22deb35", "scanner": "scanner-primary", "fingerprint": "2d0c7b7ab8f8aacf", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["placeholder", "mock-data", "critical-flow", "generated-repo-pattern"]}}, {"ruleId": "scanner-b9088664ace7f748", "level": "note", "message": {"text": "Composite production-readiness gap"}, "properties": {"repobilityId": "4716d9311b528cc8", "scanner": "scanner-primary", "fingerprint": "b9088664ace7f748", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["production-readiness", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-749d4bc1bd66df5f", "level": "warning", "message": {"text": "Agent instructions exist but release-hardening basics are missing"}, "properties": {"repobilityId": "8ec643b945a92ac9", "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": "372e6eb2235b5826", "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": "a2b4604a0f356735", "scanner": "scanner-primary", "fingerprint": "8424db9c75e04ba4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["provenance", "git-history", "generated-repo-pattern"]}}, {"ruleId": "scanner-f19801bc529b8241", "level": "none", "message": {"text": "Commented-code block (7 lines) in auth.config.ts:61"}, "properties": {"repobilityId": "382cfaf1cf5faf97", "scanner": "scanner-primary", "fingerprint": "f19801bc529b8241", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c8d95235d6157709", "level": "none", "message": {"text": "Commented-code block (10 lines) in next.config.mjs:1"}, "properties": {"repobilityId": "d0499b8b66ba5ab4", "scanner": "scanner-primary", "fingerprint": "c8d95235d6157709", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4d335230e1f8125c", "level": "none", "message": {"text": "Commented-code block (6 lines) in scripts/seed-templates.mjs:4"}, "properties": {"repobilityId": "6c925c104a1a7bc9", "scanner": "scanner-primary", "fingerprint": "4d335230e1f8125c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2ed7d436dac29422", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/seed-frontier-story.ts:459"}, "properties": {"repobilityId": "b606013716bd9e8f", "scanner": "scanner-primary", "fingerprint": "2ed7d436dac29422", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-03ba06f1c2b6208e", "level": "none", "message": {"text": "Commented-code block (12 lines) in prisma/seed.ts:68"}, "properties": {"repobilityId": "ea65e74e3a2276bd", "scanner": "scanner-primary", "fingerprint": "03ba06f1c2b6208e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ae547af297e9bf4e", "level": "none", "message": {"text": "Commented-code block (5 lines) in components/asset/AssetFolderManager.tsx:86"}, "properties": {"repobilityId": "e0ba14ce1fec6344", "scanner": "scanner-primary", "fingerprint": "ae547af297e9bf4e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2c365ab45dd234a6", "level": "note", "message": {"text": "Legacy-named symbol `isLegacy` in app/endings/[shareId]/page.tsx:84"}, "properties": {"repobilityId": "fcf30d978103200a", "scanner": "scanner-primary", "fingerprint": "2c365ab45dd234a6", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-72ec70401f4a5c34", "level": "none", "message": {"text": "Commented-code block (5 lines) in app/play/[sessionId]/page.tsx:375"}, "properties": {"repobilityId": "367e5a3d4aea77b7", "scanner": "scanner-primary", "fingerprint": "72ec70401f4a5c34", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1df3ee425fd9ddfe", "level": "none", "message": {"text": "Commented-code block (5 lines) in app/chat/[sessionId]/page.tsx:63"}, "properties": {"repobilityId": "556e34f6bf1ef123", "scanner": "scanner-primary", "fingerprint": "1df3ee425fd9ddfe", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-11915356ab565501", "level": "note", "message": {"text": "Legacy-named symbol `isLegacy` in app/me/stories/[sessionId]/page.tsx:251"}, "properties": {"repobilityId": "9a6145de33ea49f1", "scanner": "scanner-primary", "fingerprint": "11915356ab565501", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-90ed4589267bc11e", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 lib/rate-limit.ts:54"}, "properties": {"repobilityId": "9628d138a0b33d58", "scanner": "scanner-primary", "fingerprint": "90ed4589267bc11e", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-1dae9251c5cfcbad", "level": "note", "message": {"text": "Legacy-named symbol `isLegacy` in lib/play/ending-share.ts:22"}, "properties": {"repobilityId": "362c53cba1bee68e", "scanner": "scanner-primary", "fingerprint": "1dae9251c5cfcbad", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-764ac9ab45824919", "level": "note", "message": {"text": "Legacy-named symbol `isLegacy` in lib/play/ending-recap.test.ts:43"}, "properties": {"repobilityId": "a7be04a4ded30e92", "scanner": "scanner-primary", "fingerprint": "764ac9ab45824919", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-c3edbbc91c7fe691", "level": "note", "message": {"text": "Legacy-named symbol `isLegacy` in lib/play/ending-share.test.ts:9"}, "properties": {"repobilityId": "c988947ac79d369c", "scanner": "scanner-primary", "fingerprint": "c3edbbc91c7fe691", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-4874c842a105206e", "level": "note", "message": {"text": "Legacy-named symbol `isLegacy` in lib/play/ending-book-draft.test.ts:10"}, "properties": {"repobilityId": "0e35b4e07d453b6f", "scanner": "scanner-primary", "fingerprint": "4874c842a105206e", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-7eefdccf9d80fe58", "level": "none", "message": {"text": "Commented-code block (6 lines) in lib/play/ai-image-trigger.integration.test.ts:16"}, "properties": {"repobilityId": "7a4e61c4263b011c", "scanner": "scanner-primary", "fingerprint": "7eefdccf9d80fe58", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-368a3c1543ee4526", "level": "note", "message": {"text": "Legacy-named symbol `s_old` in lib/play/ending-gallery.test.ts:251"}, "properties": {"repobilityId": "5615ae0eb56f73ef", "scanner": "scanner-primary", "fingerprint": "368a3c1543ee4526", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-dd7b9fcb96108ebb", "level": "note", "message": {"text": "Legacy-named symbol `isLegacy` in lib/play/ending-recap.ts:11"}, "properties": {"repobilityId": "1895c9dae9e7fd3e", "scanner": "scanner-primary", "fingerprint": "dd7b9fcb96108ebb", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-703a462fc708384d", "level": "none", "message": {"text": "Commented-code block (7 lines) in lib/providers/stat.ts:62"}, "properties": {"repobilityId": "8d1be9c2231e857b", "scanner": "scanner-primary", "fingerprint": "703a462fc708384d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-10a8f297d72b2406", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 lib/billing/toss.ts:60"}, "properties": {"repobilityId": "2a0282222fce51d6", "scanner": "scanner-primary", "fingerprint": "10a8f297d72b2406", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-cc8018eb6fdd9162", "level": "none", "message": {"text": "Commented-code block (5 lines) in lib/actions/play.ts:153"}, "properties": {"repobilityId": "7ebfa1cf9e1f8426", "scanner": "scanner-primary", "fingerprint": "cc8018eb6fdd9162", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f50200b8498df5a6", "level": "none", "message": {"text": "Commented-code block (6 lines) in lib/actions/asset.ts:850"}, "properties": {"repobilityId": "2395600a9af5a87d", "scanner": "scanner-primary", "fingerprint": "f50200b8498df5a6", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-76579c8d332d6a18", "level": "none", "message": {"text": "Commented-code block (7 lines) in lib/actions/chat.ts:170"}, "properties": {"repobilityId": "9b318de01d79a858", "scanner": "scanner-primary", "fingerprint": "76579c8d332d6a18", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2c2b70611d8be0d4", "level": "none", "message": {"text": "Commented-code block (6 lines) in lib/actions/password.ts:88"}, "properties": {"repobilityId": "a3df18a9e8562b6c", "scanner": "scanner-primary", "fingerprint": "2c2b70611d8be0d4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e28dafeae93c66c3", "level": "none", "message": {"text": "Commented-code block (7 lines) in lib/actions/signup.ts:111"}, "properties": {"repobilityId": "7b13c14ac429caf8", "scanner": "scanner-primary", "fingerprint": "e28dafeae93c66c3", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-97875e942e4576a0", "level": "none", "message": {"text": "Commented-code block (6 lines) in lib/actions/session-prefs.ts:166"}, "properties": {"repobilityId": "ddc45c5403030d90", "scanner": "scanner-primary", "fingerprint": "97875e942e4576a0", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-35a5e1a4422838ba", "level": "none", "message": {"text": "Commented-code block (6 lines) in lib/actions/world.ts:399"}, "properties": {"repobilityId": "9cb90a21442959c9", "scanner": "scanner-primary", "fingerprint": "35a5e1a4422838ba", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ca395a18e146a116", "level": "note", "message": {"text": "38 env vars used in code but missing from .env.example"}, "properties": {"repobilityId": "44b4fc87d4005415", "scanner": "scanner-primary", "fingerprint": "ca395a18e146a116", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "config-drift"]}}]}]}