{"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: Va3elina/moex-aggregator", "shortDescription": {"text": "Foundry mined unresolved feedback: Va3elina/moex-aggregator"}, "fullDescription": {"text": "Graph query export: Human feedback without linked fix evidence\nQuery id: unresolved_feedback\nQuery type: motif_query\nIntent: Negative/unresolved examples that should not be hallucinated into fixes.\nMotif: unlinked_feedback_needs_evidence\nTraining usage: negative_or_unresolved\nGraph gold label: needs_more_evidence\nRepo: Va3elina/moex-aggregator\nThread: Va3elina/moex-aggregator#87\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: Va3elina/moex-aggregator\nThread: Va3elina/moex-aggregator#87\nGraph gold label: needs_more_evidence\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: Va3elina/moex-aggregator#87\nRepo: Va3elina/moex-aggregator\nIssue/PR number: 87\nGraph consistency label: needs_more_evidence\nNodes: 10\nEdges: 14\nNode types: {'link_quality': 3, 'thread': 1, 'repo': 1, 'comment': 1, 'pr_file': 1, 'comment_chain': 1, 'issue_chain': 1, 'fi"}, "properties": {"scanner": "foundry_dataset", "category": "practices", "severity": "medium", "confidence": 0.7, "cwe": "", "owasp": ""}}, {"id": "foundry_assumption_check", "name": "Foundry mined assumption checks: Va3elina/moex-aggregator", "shortDescription": {"text": "Foundry mined assumption checks: Va3elina/moex-aggregator"}, "fullDescription": {"text": "Comment chain pattern product: assumption_checks\nRepo: Va3elina/moex-aggregator\nThread: Va3elina/moex-aggregator#9\nOutcome: claimed_resolved_unverified\nThread label: thread_has_human_issue_and_fix_context\nSource graph label: source_backed_multi_signal_graph\nReasons: source_graph_has_real_artifacts, source_graph_has_verification_artifacts, repo_has_isolated_helicopter_views, link_quality_high_confidence\nChain evidence:\nIssue/PR evidence chain: Va3elina/moex-aggregator#9\nRepo: Va3elina/moex-aggregator\nThread label: thread_has_human_issue_and_fix_context\nOutcome: claimed_resolved_unverified\nComment count: 1\nLinked commit count: 5\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 0\nLabels: {'agent_instruction_gap': 1}\nPolarities: {'bad': 1}\nChanged file labels: {}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-33c5271b759376b5\",\n    \"kind\": \"pull_request_body\",\n    \"label\": \"agent_instruction_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/Va3elina/moex-agg"}, "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: Va3elina/moex-aggregator", "shortDescription": {"text": "Foundry mined test ci gap after feedback: Va3elina/moex-aggregator"}, "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_high_confidence_link\nRepo: Va3elina/moex-aggregator\nThread: Va3elina/moex-aggregator#75\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: Va3elina/moex-aggregator\nThread: Va3elina/moex-aggregator#75\nGraph gold label: supported_by_high_confidence_link\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: Va3elina/moex-aggregator#75\nRepo: Va3elina/moex-aggregator\nIssue/PR number: 75\nGraph consistency label: supported_by_high_confidence_link\nNodes: 15\nEdges: 19\nNode types: {'commit': 5, 'link_quality': 3, 'thread': 1, 'repo': 1, 'comment': 1, 'pr_file': 1, 'comme"}, "properties": {"scanner": "foundry_dataset", "category": "testing", "severity": "high", "confidence": 0.78, "cwe": "", "owasp": ""}}, {"id": "foundry_schema_ui_api_gap", "name": "Foundry mined schema ui api mismatch: Va3elina/moex-aggregator", "shortDescription": {"text": "Foundry mined schema ui api mismatch: Va3elina/moex-aggregator"}, "fullDescription": {"text": "Graph query export: Schema, UI, and API mismatch\nQuery id: schema_ui_api_mismatch\nQuery type: motif_query\nIntent: Assumption-check examples for data-path consistency across layers.\nMotif: schema_ui_api_mismatch\nTraining usage: assumption_check\nGraph gold label: supported_by_verification_signal\nRepo: Va3elina/moex-aggregator\nThread: Va3elina/moex-aggregator#48\nEvidence:\nGraph motif: Schema, UI, and API evidence do not line up\nMotif id: schema_ui_api_mismatch\nPolarity: bad\nTraining usage: assumption_check\nSeverity: high\nRepo: Va3elina/moex-aggregator\nThread: Va3elina/moex-aggregator#48\nGraph gold label: supported_by_verification_signal\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: Va3elina/moex-aggregator#48\nRepo: Va3elina/moex-aggregator\nIssue/PR number: 48\nGraph consistency label: supported_by_verification_signal\nNodes: 14\nEdges: 16\nNode types: {'commit': 5, 'link_quality': 3, 'thread': 1, 'repo': 1, 'comment': 1, 'comment_chain': 1, 'issue_chain': 1, 'fix_outcome': "}, "properties": {"scanner": "foundry_dataset", "category": "quality", "severity": "high", "confidence": 0.76, "cwe": "", "owasp": ""}}, {"id": "foundry_bad_chain", "name": "Foundry mined bad chains: Va3elina/moex-aggregator", "shortDescription": {"text": "Foundry mined bad chains: Va3elina/moex-aggregator"}, "fullDescription": {"text": "Comment chain pattern product: bad_chains\nRepo: Va3elina/moex-aggregator\nThread: Va3elina/moex-aggregator#87\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: Va3elina/moex-aggregator#87\nRepo: Va3elina/moex-aggregator\nThread label: thread_has_human_issue_without_fix_context\nOutcome: not_resolved_or_not_observed\nComment count: 1\nLinked commit count: 0\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 1\nLabels: {'api_integration_gap': 1}\nPolarities: {'bad': 1}\nChanged file labels: {'ui_or_frontend': 1}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-2f1b2ff5ecf291fb\",\n    \"kind\": \"pull_request_body\",\n    \"label\": \"api_integration_gap\",\n    \"polarity\": \"bad\",\n "}, "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: Va3elina/moex-aggregator", "shortDescription": {"text": "Foundry mined security auth guardrail gaps: Va3elina/moex-aggregator"}, "fullDescription": {"text": "Graph query export: Security/auth changes without enough guardrails\nQuery id: security_auth_guardrail_gaps\nQuery type: motif_query\nIntent: Assumption-check security/auth examples requiring stronger tests or CI.\nMotif: security_auth_without_guardrails\nTraining usage: assumption_check\nGraph gold label: supported_by_high_confidence_link\nRepo: Va3elina/moex-aggregator\nThread: Va3elina/moex-aggregator#65\nEvidence:\nGraph motif: Security/auth change without enough guardrails\nMotif id: security_auth_without_guardrails\nPolarity: bad\nTraining usage: assumption_check\nSeverity: critical\nRepo: Va3elina/moex-aggregator\nThread: Va3elina/moex-aggregator#65\nGraph gold label: supported_by_high_confidence_link\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: Va3elina/moex-aggregator#65\nRepo: Va3elina/moex-aggregator\nIssue/PR number: 65\nGraph consistency label: supported_by_high_confidence_link\nNodes: 10\nEdges: 12\nNode types: {'link_quality': 3, 'thread': 1, 'repo': 1, 'comment': 1, 'comme"}, "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: Va3elina/moex-aggregator", "shortDescription": {"text": "Foundry mined mock as real or placeholder: Va3elina/moex-aggregator"}, "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: supported_by_high_confidence_link\nRepo: Va3elina/moex-aggregator\nThread: Va3elina/moex-aggregator#86\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: Va3elina/moex-aggregator\nThread: Va3elina/moex-aggregator#86\nGraph gold label: supported_by_high_confidence_link\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: Va3elina/moex-aggregator#86\nRepo: Va3elina/moex-aggregator\nIssue/PR number: 86\nGraph consistency label: supported_by_high_confidence_link\nNodes: 20\nEdges: 34\nNode types: {'pr_file': 6, 'commit': 4, 'link_quality': "}, "properties": {"scanner": "foundry_dataset", "category": "practices", "severity": "critical", "confidence": 0.82, "cwe": "", "owasp": ""}}, {"id": "scanner-ef14c86d7d22d11d", "name": "Possibly dead Python function: is_weekend", "shortDescription": {"text": "Possibly dead Python function: is_weekend"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-9deb11c3828f9625", "name": "Possibly dead Python function: update_chart_caches", "shortDescription": {"text": "Possibly dead Python function: update_chart_caches"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-4a0534ef6c033883", "name": "Possibly dead Python function: cache_stats", "shortDescription": {"text": "Possibly dead Python function: cache_stats"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-dec3adab38895176", "name": "Possibly dead Python function: log_account_locked", "shortDescription": {"text": "Possibly dead Python function: log_account_locked"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-48afa246d729f259", "name": "Possibly dead Python function: cleanup_ip_attempts", "shortDescription": {"text": "Possibly dead Python function: cleanup_ip_attempts"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-3416a38b87119949", "name": "Possibly dead Python function: generate_temp_password", "shortDescription": {"text": "Possibly dead Python function: generate_temp_password"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-8ca22e301273b31b", "name": "Possibly dead Python function: list_public_plans", "shortDescription": {"text": "Possibly dead Python function: list_public_plans"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-ea4469d41ab33952", "name": "Possibly dead Python function: require_tier", "shortDescription": {"text": "Possibly dead Python function: require_tier"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-1d440735ed035e6c", "name": "Possibly dead Python function: optional_tier", "shortDescription": {"text": "Possibly dead Python function: optional_tier"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-35b746aa55665370", "name": "Possibly dead Python function: send_verification_email", "shortDescription": {"text": "Possibly dead Python function: send_verification_email"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-b8b32f3b77fa9091", "name": "Possibly dead Python function: require_admin", "shortDescription": {"text": "Possibly dead Python function: require_admin"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-d1f9a3834d9b9e49", "name": "Possibly dead Python function: require_pro", "shortDescription": {"text": "Possibly dead Python function: require_pro"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-bcfb23d7a4abd8a0", "name": "Possibly dead Python function: layer_daily", "shortDescription": {"text": "Possibly dead Python function: layer_daily"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-6ca45f2d9c5e087d", "name": "Possibly dead Python function: layer_weekday_avg", "shortDescription": {"text": "Possibly dead Python function: layer_weekday_avg"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-29c5d651d8ec1f6f", "name": "Possibly dead Python function: layer_monthly_avg", "shortDescription": {"text": "Possibly dead Python function: layer_monthly_avg"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-918fb234426f77ed", "name": "Possibly dead Python function: layer_monthday_avg", "shortDescription": {"text": "Possibly dead Python function: layer_monthday_avg"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-9123f258bce0ba29", "name": "Possibly dead Python function: cap_gdp_data", "shortDescription": {"text": "Possibly dead Python function: cap_gdp_data"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-f48374b2753285fc", "name": "Possibly dead Python function: cap_m2_data", "shortDescription": {"text": "Possibly dead Python function: cap_m2_data"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-f7b71c70287cc47b", "name": "Possibly dead Python function: check_rate_limit", "shortDescription": {"text": "Possibly dead Python function: check_rate_limit"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-c91428289224ac38", "name": "Stray `console.log` in TS/JS \u2014 frontend/scripts/prerender-meta.ts:181", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 frontend/scripts/prerender-meta.ts:181"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-dbf464533ffd5f7a", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/InstrumentSearchModal.tsx:373", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/InstrumentSearchModal.tsx:373"}, "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-49512b855672a309", "name": "Icon-only button without accessible name \u2014 frontend/src/components/funds/FundDetailModal.tsx:298", "shortDescription": {"text": "Icon-only button without accessible name \u2014 frontend/src/components/funds/FundDetailModal.tsx:298"}, "fullDescription": {"text": "A `<button>` whose only child is a single glyph or symbol needs `title=` or `aria-label=` so screen readers (and tooltips on hover) work.\n\nWhy: P3 in CHECKLIST.md \u2014 icon-only buttons skipped a title.\nRule id: fq.button.no-label"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-3ee9b7024d53b05c", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/funds/FundCardModal.tsx:118", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/funds/FundCardModal.tsx:118"}, "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-848750042280ecfe", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/fundtrades/CompanyFlowsTab.tsx:364", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/fundtrades/CompanyFlowsTab.tsx:364"}, "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-8684cb370e6c3199", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/pages/HeatmapPage.tsx:791", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/pages/HeatmapPage.tsx:791"}, "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-98799e1ef9523a30", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/pages/OverviewPage.tsx:332", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/pages/OverviewPage.tsx:332"}, "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-7272abdaf6314262", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/pages/AdminUserDetailPage.tsx:272", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/pages/AdminUserDetailPage.tsx:272"}, "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-1e083c02e8155843", "name": "Stray `console.log` in TS/JS \u2014 frontend/src/pages/ApiDocsPage.tsx:710", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 frontend/src/pages/ApiDocsPage.tsx:710"}, "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-699944a9ce84d9c2", "name": "`truncate` class without `title=` for hover reveal \u2014 docs/design-system/project/reference/frontend/src/components/Instru", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 docs/design-system/project/reference/frontend/src/components/InstrumentSearchModal.tsx:259"}, "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-7164054ed66595db", "name": "`truncate` class without `title=` for hover reveal \u2014 docs/design-system/project/reference/frontend/src/components/funds/", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 docs/design-system/project/reference/frontend/src/components/funds/FundCardModal.tsx:106"}, "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-dd1780d71537621c", "name": "`truncate` class without `title=` for hover reveal \u2014 docs/design-system/project/reference/frontend/src/pages/FundsCatalo", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 docs/design-system/project/reference/frontend/src/pages/FundsCatalogPage.tsx:56"}, "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-32707f16ed2c69b4", "name": "`truncate` class without `title=` for hover reveal \u2014 docs/design-system/project/reference/frontend/src/pages/FundsMoneyP", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 docs/design-system/project/reference/frontend/src/pages/FundsMoneyPage.tsx:379"}, "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-deac2dfe92debcf5", "name": "`truncate` class without `title=` for hover reveal \u2014 docs/handoff/FundsMoneyPage.CURRENT.tsx:401", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 docs/handoff/FundsMoneyPage.CURRENT.tsx:401"}, "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-bd14d334008b72c4", "name": "`truncate` class without `title=` for hover reveal \u2014 docs/handoff/FundsMoneyPage.ORIGINAL.tsx:379", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 docs/handoff/FundsMoneyPage.ORIGINAL.tsx:379"}, "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-1094013ffe9c3f0c", "name": "Privileged port 3 in use", "shortDescription": {"text": "Privileged port 3 in use"}, "fullDescription": {"text": "Port 3 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-d63da3583b14afc0", "name": "Dockerfile runs as root: Dockerfile", "shortDescription": {"text": "Dockerfile runs as root: Dockerfile"}, "fullDescription": {"text": "No non-root USER set. Containers running as root expand the blast radius of any vulnerability inside the image."}, "properties": {"scanner": "scanner-primary", "layer": "hardware", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-8987d6d1c30c7202", "name": "Docker base image is tag-pinned but not digest-pinned: node:20-alpine", "shortDescription": {"text": "Docker base image is tag-pinned but not digest-pinned: node:20-alpine"}, "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-e066691601852931", "name": "Docker base image is tag-pinned but not digest-pinned: python:3.11-slim", "shortDescription": {"text": "Docker base image is tag-pinned but not digest-pinned: python:3.11-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-5f760022ff036b8a", "name": "Insecure pattern 'local_storage_auth_token' in frontend/src/contexts/AuthContext.tsx:84", "shortDescription": {"text": "Insecure pattern 'local_storage_auth_token' in frontend/src/contexts/AuthContext.tsx:84"}, "fullDescription": {"text": "Found a known-risky pattern (local_storage_auth_token). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-48cfd72e4eb39261", "name": "Insecure pattern 'local_storage_auth_token' in frontend/src/pages/LoginPage.tsx:149", "shortDescription": {"text": "Insecure pattern 'local_storage_auth_token' in frontend/src/pages/LoginPage.tsx:149"}, "fullDescription": {"text": "Found a known-risky pattern (local_storage_auth_token). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-7e637a994929868e", "name": "Insecure pattern 'local_storage_auth_token' in frontend/src/pages/embed/EmbedPage.tsx:71", "shortDescription": {"text": "Insecure pattern 'local_storage_auth_token' in frontend/src/pages/embed/EmbedPage.tsx:71"}, "fullDescription": {"text": "Found a known-risky pattern (local_storage_auth_token). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-dfa9b1bfe1d7304a", "name": "Insecure pattern 'local_storage_auth_token' in frontend/src/services/api.ts:53", "shortDescription": {"text": "Insecure pattern 'local_storage_auth_token' in frontend/src/services/api.ts:53"}, "fullDescription": {"text": "Found a known-risky pattern (local_storage_auth_token). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-a6e4bdc63b441f90", "name": "Insecure pattern 'cors_wildcard' in api/main.py:117", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in api/main.py:117"}, "fullDescription": {"text": "Found a known-risky pattern (cors_wildcard). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-96bf40b961d4b1c2", "name": "Insecure pattern 'tls_verify_false' in signals/research/explore_v2.py:69", "shortDescription": {"text": "Insecure pattern 'tls_verify_false' in signals/research/explore_v2.py:69"}, "fullDescription": {"text": "Found a known-risky pattern (tls_verify_false). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-41e15a6fa8fd7155", "name": "Insecure pattern 'tls_verify_false' in signals/research/explore.py:85", "shortDescription": {"text": "Insecure pattern 'tls_verify_false' in signals/research/explore.py:85"}, "fullDescription": {"text": "Found a known-risky pattern (tls_verify_false). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-4229bb9ea4be697b", "name": "Insecure pattern 'tls_verify_false' in signals/detectors/ensemble.py:71", "shortDescription": {"text": "Insecure pattern 'tls_verify_false' in signals/detectors/ensemble.py:71"}, "fullDescription": {"text": "Found a known-risky pattern (tls_verify_false). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-2dc6034b1db9f4d9", "name": "Insecure pattern 'direct_innerhtml_assignment' in docs/claude-design-flows-redesign.html:548", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in docs/claude-design-flows-redesign.html:548"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-c263785bb7e7a106", "name": "Insecure pattern 'local_storage_auth_token' in docs/design-system/project/reference/frontend/src/contexts/AuthContext.ts", "shortDescription": {"text": "Insecure pattern 'local_storage_auth_token' in docs/design-system/project/reference/frontend/src/contexts/AuthContext.tsx:47"}, "fullDescription": {"text": "Found a known-risky pattern (local_storage_auth_token). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-e04e85779e63d929", "name": "Insecure pattern 'local_storage_auth_token' in docs/design-system/project/reference/frontend/src/services/api.ts:49", "shortDescription": {"text": "Insecure pattern 'local_storage_auth_token' in docs/design-system/project/reference/frontend/src/services/api.ts:49"}, "fullDescription": {"text": "Found a known-risky pattern (local_storage_auth_token). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-01fc69dd83fa73ba", "name": "Very large file: main_orchestrator.py (1202 lines)", "shortDescription": {"text": "Very large file: main_orchestrator.py (1202 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-3ef44ca5bf3d023b", "name": "Very large file: frontend/public/videos/oi/seg000.ts (1483 lines)", "shortDescription": {"text": "Very large file: frontend/public/videos/oi/seg000.ts (1483 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-30c378bce2c66ae4", "name": "Very large file: frontend/public/videos/strength/seg000.ts (1227 lines)", "shortDescription": {"text": "Very large file: frontend/public/videos/strength/seg000.ts (1227 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-cd1fa85cc1865dd1", "name": "Very large file: frontend/public/videos/funds-catalog/seg002.ts (992 lines)", "shortDescription": {"text": "Very large file: frontend/public/videos/funds-catalog/seg002.ts (992 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-dfb35196880338c8", "name": "Very large file: frontend/src/components/SimpleChart.tsx (1730 lines)", "shortDescription": {"text": "Very large file: frontend/src/components/SimpleChart.tsx (1730 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-07abab5fd1417896", "name": "Very large file: frontend/src/components/funds/FundDetailModal.tsx (1030 lines)", "shortDescription": {"text": "Very large file: frontend/src/components/funds/FundDetailModal.tsx (1030 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-6f22cec0083d1300", "name": "Very large file: frontend/src/components/mobile/MobileChart.tsx (1115 lines)", "shortDescription": {"text": "Very large file: frontend/src/components/mobile/MobileChart.tsx (1115 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-e430b8e07699b072", "name": "Very large file: frontend/src/pages/OpenInterestPage.tsx (887 lines)", "shortDescription": {"text": "Very large file: frontend/src/pages/OpenInterestPage.tsx (887 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-a3cc0a4c4e81e6f3", "name": "Very large file: frontend/src/pages/ApiDocsPage.tsx (2241 lines)", "shortDescription": {"text": "Very large file: frontend/src/pages/ApiDocsPage.tsx (2241 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-7a09e1cac3505370", "name": "Very large file: frontend/src/pages/FundTradesPage.tsx (1847 lines)", "shortDescription": {"text": "Very large file: frontend/src/pages/FundTradesPage.tsx (1847 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-4ff1e7ea1c116413", "name": "Very large file: frontend/src/pages/SeasonalityPage.tsx (1020 lines)", "shortDescription": {"text": "Very large file: frontend/src/pages/SeasonalityPage.tsx (1020 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-8bbf3e87d4316cbc", "name": "Very large file: frontend/src/pages/mobile/MobileSeasonalityPage.tsx (1206 lines)", "shortDescription": {"text": "Very large file: frontend/src/pages/mobile/MobileSeasonalityPage.tsx (1206 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-52c5e4522811daef", "name": "Very large file: frontend/src/pages/mobile/MobileFundTradesPage.tsx (1777 lines)", "shortDescription": {"text": "Very large file: frontend/src/pages/mobile/MobileFundTradesPage.tsx (1777 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-54db247834de9690", "name": "Very large file: frontend/src/services/api.ts (1770 lines)", "shortDescription": {"text": "Very large file: frontend/src/services/api.ts (1770 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-ece20566e5aa158c", "name": "Very large file: api/billing/service.py (1027 lines)", "shortDescription": {"text": "Very large file: api/billing/service.py (1027 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-9baf0918640b80a0", "name": "Very large file: api/routers/fund_trades.py (1625 lines)", "shortDescription": {"text": "Very large file: api/routers/fund_trades.py (1625 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-2693ca887ff3910f", "name": "Very large file: docs/design-system/project/reference/frontend/src/components/SimpleChart.tsx (1284 lines)", "shortDescription": {"text": "Very large file: docs/design-system/project/reference/frontend/src/components/SimpleChart.tsx (1284 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-ddac7f10e4e13937", "name": "Very large file: docs/handoff/SimpleChart.tsx (1286 lines)", "shortDescription": {"text": "Very large file: docs/handoff/SimpleChart.tsx (1286 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-b55a2c744bf6e936", "name": "Very large file: Candles/fetch_candles_futures_realtime.py (1352 lines)", "shortDescription": {"text": "Very large file: Candles/fetch_candles_futures_realtime.py (1352 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-7392ad41abf81cfa", "name": "Very large file: sandbox/app.py (970 lines)", "shortDescription": {"text": "Very large file: sandbox/app.py (970 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-6893a6c8b0861585", "name": "Very low test-to-source ratio", "shortDescription": {"text": "Very low test-to-source ratio"}, "fullDescription": {"text": "4 test file(s) for 502 source file(s) (ratio 0.01). Consider adding integration or unit tests for critical paths."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-141b30a41e03817b", "name": "No license file detected", "shortDescription": {"text": "No license file detected"}, "fullDescription": {"text": "No LICENSE/COPYING/NOTICE file was found. Generated repositories often omit licensing, which blocks reuse and automated intake."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-6e8f1085db955768", "name": "Node manifest has dependencies but no lockfile: docs/design-system/project/reference/frontend/package.json", "shortDescription": {"text": "Node manifest has dependencies but no lockfile: docs/design-system/project/reference/frontend/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 620 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 64 placeholder/mock markers across 41 source files. This often means the repo looks complete while core flows still use generated scaffolding or fake data."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-2d0c7b7ab8f8aacf", "name": "Critical user flow still appears backed by mock or placeholder data", "shortDescription": {"text": "Critical user flow still appears backed by mock or placeholder data"}, "fullDescription": {"text": "A payment/auth/admin/order/billing-style flow contains mock, fake, TODO, dummy, or placeholder markers in runtime source. In the Fable corpus this is a high-leverage completeness smell: the app can look finished while the money, identity, or tenant flow is still scaffolded."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-b9088664ace7f748", "name": "Composite production-readiness gap", "shortDescription": {"text": "Composite production-readiness gap"}, "fullDescription": {"text": "Multiple low-cost hardening controls are missing together: license, 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-c8e1757ace764e25", "name": "Agent authority lacks a verifier contract: .claude/skills/moex-responsive-audit/SKILL.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: .claude/skills/moex-responsive-audit/SKILL.md"}, "fullDescription": {"text": "This agent instruction grants code or shell authority but does not state the verification gate that decides promotion. The recurring safe pattern is: LLM proposes; deterministic tests/build/security checks verify; only verified code promotes."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-76951679493cef61", "name": "Agent authority lacks a verifier contract: .claude/skills/moex-fund-scha-backfill/references/uk-vim.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: .claude/skills/moex-fund-scha-backfill/references/uk-vim.md"}, "fullDescription": {"text": "This agent instruction grants code or shell authority but does not state the verification gate that decides promotion. The recurring safe pattern is: LLM proposes; deterministic tests/build/security checks verify; only verified code promotes."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-ec099d17a72db77a", "name": "Commented-code block (5 lines) in main_orchestrator.py:132", "shortDescription": {"text": "Commented-code block (5 lines) in main_orchestrator.py:132"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-a5095a75f7f328f1", "name": "Legacy-named symbol `cmd_backup` in tg_bot.py:94", "shortDescription": {"text": "Legacy-named symbol `cmd_backup` in tg_bot.py:94"}, "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-6b897435e44eb862", "name": "Commented-code block (5 lines) in frontend/public/sw.js:1", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/public/sw.js:1"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-2add83b7de92097a", "name": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/public/sw.js:51", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/public/sw.js:51"}, "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-b58349191a1d9986", "name": "Commented-code block (6 lines) in frontend/src/main.tsx:7", "shortDescription": {"text": "Commented-code block (6 lines) in frontend/src/main.tsx:7"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-8c6b14efb2ec6fb9", "name": "Commented-code block (5 lines) in frontend/src/config/chartTheme.ts:115", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/src/config/chartTheme.ts:115"}, "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-f2ae25a62549f658", "name": "Commented-code block (9 lines) in frontend/src/config/fundConfig.ts:109", "shortDescription": {"text": "Commented-code block (9 lines) in frontend/src/config/fundConfig.ts:109"}, "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-ce488df964b20742", "name": "Commented-code block (5 lines) in frontend/src/components/SimpleChart.tsx:188", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/src/components/SimpleChart.tsx:188"}, "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-aa6761d8277188fd", "name": "Legacy-named symbol `frame_consent_v1` in frontend/src/components/CookieConsentBanner.tsx:5", "shortDescription": {"text": "Legacy-named symbol `frame_consent_v1` in frontend/src/components/CookieConsentBanner.tsx:5"}, "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-12ac7715c07674a8", "name": "Commented-code block (5 lines) in frontend/src/components/ChartNavigator.tsx:219", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/src/components/ChartNavigator.tsx:219"}, "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-08b3afd1150d2a27", "name": "Commented-code block (5 lines) in frontend/src/components/ChartWatermark.tsx:54", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/src/components/ChartWatermark.tsx:54"}, "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-732ac732c79e4014", "name": "Commented-code block (6 lines) in frontend/src/components/InstrumentSearchModal.tsx:166", "shortDescription": {"text": "Commented-code block (6 lines) in frontend/src/components/InstrumentSearchModal.tsx: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-4d5156115e269d20", "name": "Commented-code block (6 lines) in frontend/src/components/Layout.tsx:58", "shortDescription": {"text": "Commented-code block (6 lines) in frontend/src/components/Layout.tsx:58"}, "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-110e1ad8c78d473b", "name": "Commented-code block (5 lines) in frontend/src/components/FrameLogo.tsx:37", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/src/components/FrameLogo.tsx:37"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-2d8b3d96ad3469e4", "name": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/src/components/TickerLogo.tsx:53", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/src/components/TickerLogo.tsx:53"}, "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-6359e4bd4756cf71", "name": "Commented-code block (8 lines) in frontend/src/components/seasonality/YearlySeasonalityChart.tsx:64", "shortDescription": {"text": "Commented-code block (8 lines) in frontend/src/components/seasonality/YearlySeasonalityChart.tsx:64"}, "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-490100573e9ca535", "name": "Commented-code block (5 lines) in frontend/src/components/seasonality/SeasonalityHistogram.tsx:166", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/src/components/seasonality/SeasonalityHistogram.tsx: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-6f93e5ebf9d6afca", "name": "Commented-code block (10 lines) in frontend/src/components/funds/FundDetailModal.tsx:84", "shortDescription": {"text": "Commented-code block (10 lines) in frontend/src/components/funds/FundDetailModal.tsx:84"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-562f058a53b86ec1", "name": "Commented-code block (9 lines) in frontend/src/components/funds/FlowsHistogram.tsx:194", "shortDescription": {"text": "Commented-code block (9 lines) in frontend/src/components/funds/FlowsHistogram.tsx:194"}, "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-f4a6a2fa1a7a852c", "name": "Commented-code block (8 lines) in frontend/src/components/mobile/MobileBottomRail.tsx:44", "shortDescription": {"text": "Commented-code block (8 lines) in frontend/src/components/mobile/MobileBottomRail.tsx:44"}, "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-b33b8b6e2c1c9b2a", "name": "Commented-code block (5 lines) in frontend/src/components/mobile/MobileAssetSearch.tsx:37", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/src/components/mobile/MobileAssetSearch.tsx:37"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-a7c68ea74bf1faba", "name": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/src/components/mobile/MobileAssetSearch.tsx:97", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/src/components/mobile/MobileAssetSearch.tsx:97"}, "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-616fc2b184b9faf1", "name": "Commented-code block (6 lines) in frontend/src/components/mobile/MobileChart.tsx:268", "shortDescription": {"text": "Commented-code block (6 lines) in frontend/src/components/mobile/MobileChart.tsx:268"}, "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-ac70303e630c39ae", "name": "Legacy-named symbol `frame_pwa_install_dismissed_v1` in frontend/src/components/mobile/MobilePWABanner.tsx:20", "shortDescription": {"text": "Legacy-named symbol `frame_pwa_install_dismissed_v1` in frontend/src/components/mobile/MobilePWABanner.tsx:20"}, "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-81d6a43980ff2eeb", "name": "Commented-code block (6 lines) in frontend/src/components/cbr/StackedBidirectionalHistogram.tsx:58", "shortDescription": {"text": "Commented-code block (6 lines) in frontend/src/components/cbr/StackedBidirectionalHistogram.tsx:58"}, "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-12d5a81e897b9759", "name": "Commented-code block (7 lines) in frontend/src/components/chart/ChartYAxis.tsx:45", "shortDescription": {"text": "Commented-code block (7 lines) in frontend/src/components/chart/ChartYAxis.tsx:45"}, "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-00c7c3c60d720aab", "name": "Commented-code block (7 lines) in frontend/src/components/landing/ThermalLinesHero.tsx:32", "shortDescription": {"text": "Commented-code block (7 lines) in frontend/src/components/landing/ThermalLinesHero.tsx:32"}, "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-0f1664949128986b", "name": "Commented-code block (5 lines) in frontend/src/components/landing/MultiChartShowcase.tsx:48", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/src/components/landing/MultiChartShowcase.tsx:48"}, "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-d89ee426e82812fa", "name": "Commented-code block (6 lines) in frontend/src/components/strength/IndexChart.tsx:217", "shortDescription": {"text": "Commented-code block (6 lines) in frontend/src/components/strength/IndexChart.tsx:217"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-27bdf2c4f9ef4a4d", "name": "Commented-code block (6 lines) in frontend/src/components/strength/BreadthChart.tsx:262", "shortDescription": {"text": "Commented-code block (6 lines) in frontend/src/components/strength/BreadthChart.tsx:262"}, "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-b51f7e18d9a8a262", "name": "Commented-code block (5 lines) in frontend/src/components/onboarding/OnboardingTour.tsx:77", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/src/components/onboarding/OnboardingTour.tsx:77"}, "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-f826b9c7099d0333", "name": "Commented-code block (5 lines) in frontend/src/components/fundtrades/AssetPickerModal.tsx:8", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/src/components/fundtrades/AssetPickerModal.tsx:8"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-39816fc4e874a744", "name": "Commented-code block (5 lines) in frontend/src/components/fundtrades/FundPicker.tsx:10", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/src/components/fundtrades/FundPicker.tsx:10"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-2e8a2135f14d3f0c", "name": "Commented-code block (7 lines) in frontend/src/components/fundtrades/UkMultiSelect.tsx:1", "shortDescription": {"text": "Commented-code block (7 lines) in frontend/src/components/fundtrades/UkMultiSelect.tsx: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-6ed709510e2f31b8", "name": "Commented-code block (6 lines) in frontend/src/components/export/captureChart.ts:54", "shortDescription": {"text": "Commented-code block (6 lines) in frontend/src/components/export/captureChart.ts:54"}, "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-8c21617392cf65f3", "name": "Commented-code block (5 lines) in frontend/src/components/export/CsvExportModal.tsx:74", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/src/components/export/CsvExportModal.tsx:74"}, "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-1db0620aff374359", "name": "Commented-code block (5 lines) in frontend/src/components/export/AnnotationCanvas.tsx:326", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/src/components/export/AnnotationCanvas.tsx:326"}, "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-b7be472e60be9223", "name": "Legacy-named symbol `PropsLegacy` in frontend/src/components/export/CsvExportButton.tsx:36", "shortDescription": {"text": "Legacy-named symbol `PropsLegacy` in frontend/src/components/export/CsvExportButton.tsx:36"}, "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-3c2d5d15ac7c1ff2", "name": "Commented-code block (5 lines) in frontend/src/contexts/AuthContext.tsx:33", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/src/contexts/AuthContext.tsx:33"}, "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-2fe629157a75eef7", "name": "Legacy-named symbol `frame_consent_v1` in frontend/src/contexts/AnalyticsContext.tsx:37", "shortDescription": {"text": "Legacy-named symbol `frame_consent_v1` in frontend/src/contexts/AnalyticsContext.tsx:37"}, "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-2cc1725e12696b2d", "name": "Commented-code block (5 lines) in frontend/src/contexts/ThemeContext.tsx:3", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/src/contexts/ThemeContext.tsx:3"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-6279ce148be1fbe3", "name": "Legacy-named symbol `frame_features_matrix_v1` in frontend/src/contexts/TierFeaturesContext.tsx:68", "shortDescription": {"text": "Legacy-named symbol `frame_features_matrix_v1` in frontend/src/contexts/TierFeaturesContext.tsx:68"}, "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-9fbef5a7940a35ec", "name": "Commented-code block (8 lines) in frontend/src/contexts/TierFeaturesContext.tsx:175", "shortDescription": {"text": "Commented-code block (8 lines) in frontend/src/contexts/TierFeaturesContext.tsx:175"}, "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-ab86eb16dbc52aa0", "name": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/src/pages/AuthCallback.tsx:74", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/src/pages/AuthCallback.tsx:74"}, "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-6ae600556492d062", "name": "Commented-code block (7 lines) in frontend/src/pages/HeatmapPage.tsx:174", "shortDescription": {"text": "Commented-code block (7 lines) in frontend/src/pages/HeatmapPage.tsx:174"}, "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-26a8afbb6a9bee53", "name": "Legacy-named symbol `allowedLegacy` in frontend/src/pages/OpenInterestPage.tsx:468", "shortDescription": {"text": "Legacy-named symbol `allowedLegacy` in frontend/src/pages/OpenInterestPage.tsx:468"}, "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-1c1ce85b4e062755", "name": "Commented-code block (6 lines) in frontend/src/pages/OpenInterestPage.tsx:80", "shortDescription": {"text": "Commented-code block (6 lines) in frontend/src/pages/OpenInterestPage.tsx:80"}, "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-a29f7386feeea0c7", "name": "Commented-code block (5 lines) in frontend/src/pages/LoginPage.tsx:133", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/src/pages/LoginPage.tsx:133"}, "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-2ec2efb0c6f25578", "name": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/src/pages/LoginPage.tsx:92", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/src/pages/LoginPage.tsx:92"}, "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-65e6c2e595e840b2", "name": "Legacy-named symbol `frame_consent_v1` in frontend/src/pages/ProfilePage.tsx:809", "shortDescription": {"text": "Legacy-named symbol `frame_consent_v1` in frontend/src/pages/ProfilePage.tsx:809"}, "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-475c4aaf94512f63", "name": "Commented-code block (5 lines) in frontend/src/pages/CbrFlowsPage.tsx:470", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/src/pages/CbrFlowsPage.tsx:470"}, "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-5cc5b0bac3f783be", "name": "Commented-code block (5 lines) in frontend/src/pages/FundsMoneyPage.tsx:136", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/src/pages/FundsMoneyPage.tsx:136"}, "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-dbecaa823534d4eb", "name": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/src/pages/ApiDocsPage.tsx:705", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/src/pages/ApiDocsPage.tsx:705"}, "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-5f412f29ffe52ddc", "name": "Commented-code block (6 lines) in frontend/src/pages/PricingPage.tsx:103", "shortDescription": {"text": "Commented-code block (6 lines) in frontend/src/pages/PricingPage.tsx:103"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-52f4ef48f666193f", "name": "Commented-code block (5 lines) in frontend/src/pages/StrengthPage.tsx:48", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/src/pages/StrengthPage.tsx:48"}, "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-122dbf10a3901687", "name": "Commented-code block (8 lines) in frontend/src/pages/SeasonalityPage.tsx:104", "shortDescription": {"text": "Commented-code block (8 lines) in frontend/src/pages/SeasonalityPage.tsx:104"}, "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-0d00e97c401ff288", "name": "Commented-code block (8 lines) in frontend/src/pages/mobile/MobileFundsMoneyPage.tsx:221", "shortDescription": {"text": "Commented-code block (8 lines) in frontend/src/pages/mobile/MobileFundsMoneyPage.tsx:221"}, "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-ede964a40395fc18", "name": "Commented-code block (5 lines) in frontend/src/pages/mobile/MobileSeasonalityPage.tsx:1037", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/src/pages/mobile/MobileSeasonalityPage.tsx:1037"}, "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-f37339fa45bf6190", "name": "Commented-code block (5 lines) in frontend/src/pages/mobile/MobileOpenInterestPage.tsx:77", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/src/pages/mobile/MobileOpenInterestPage.tsx:77"}, "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-e13c27e19e0aa170", "name": "Commented-code block (5 lines) in frontend/src/pages/mobile/MobileHeatmapPage.tsx:269", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/src/pages/mobile/MobileHeatmapPage.tsx:269"}, "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-48bc4a3ad611d4ba", "name": "Commented-code block (5 lines) in frontend/src/pages/mobile/MobileBuffettPage.tsx:429", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/src/pages/mobile/MobileBuffettPage.tsx:429"}, "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-7d7e5df45fd4f6c5", "name": "Commented-code block (5 lines) in frontend/src/pages/mobile/MobileStrengthPage.tsx:920", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/src/pages/mobile/MobileStrengthPage.tsx:920"}, "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-a7368cd032fa1772", "name": "Commented-code block (5 lines) in frontend/src/pages/mobile/MobileCbrFlowsPage.tsx:178", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/src/pages/mobile/MobileCbrFlowsPage.tsx:178"}, "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-c1a85e649ed1c540", "name": "Commented-code block (8 lines) in frontend/src/pages/mobile/MobileFundTradesPage.tsx:495", "shortDescription": {"text": "Commented-code block (8 lines) in frontend/src/pages/mobile/MobileFundTradesPage.tsx:495"}, "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-ec7fef5aba57f346", "name": "Commented-code block (5 lines) in frontend/src/pages/embed/EmbedFundsMoney.tsx:153", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/src/pages/embed/EmbedFundsMoney.tsx: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-00616156f57135af", "name": "Commented-code block (5 lines) in frontend/src/pages/embed/EmbedBuffett.tsx:150", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/src/pages/embed/EmbedBuffett.tsx:150"}, "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-f20ed90747bfceb2", "name": "Commented-code block (5 lines) in frontend/src/pages/embed/EmbedOpenInterest.tsx:175", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/src/pages/embed/EmbedOpenInterest.tsx:175"}, "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-0c76e01ba2a89f40", "name": "Legacy-named symbol `homepage_v2` in frontend/src/hooks/useExperiment.ts:5", "shortDescription": {"text": "Legacy-named symbol `homepage_v2` in frontend/src/hooks/useExperiment.ts:5"}, "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-30a84b49c9dd7e5a", "name": "Commented-code block (5 lines) in frontend/src/hooks/useFitToViewport.ts:117", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/src/hooks/useFitToViewport.ts:117"}, "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-ac975de7b0c17f04", "name": "Commented-code block (5 lines) in frontend/src/hooks/useRealtimeData.ts:23", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/src/hooks/useRealtimeData.ts:23"}, "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-548146baee94b0f7", "name": "Legacy-named symbol `frame_tour_seen_v2` in frontend/src/hooks/useFirstVisit.ts:22", "shortDescription": {"text": "Legacy-named symbol `frame_tour_seen_v2` in frontend/src/hooks/useFirstVisit.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-c7fa3f74c43557ff", "name": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/src/services/api.ts:231", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/src/services/api.ts:231"}, "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-cae2ed6e5913dcb7", "name": "Commented-code block (5 lines) in api/database.py:17", "shortDescription": {"text": "Commented-code block (5 lines) in api/database.py:17"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-b7c1bfad97538f8c", "name": "Commented-code block (5 lines) in api/middleware.py:23", "shortDescription": {"text": "Commented-code block (5 lines) in api/middleware.py:23"}, "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-1a61d9ad305e9e94", "name": "Commented-code block (9 lines) in api/security/jwt.py:72", "shortDescription": {"text": "Commented-code block (9 lines) in api/security/jwt.py:72"}, "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-4ab2707ce17f3a95", "name": "Commented-code block (5 lines) in api/security/access_control.py:168", "shortDescription": {"text": "Commented-code block (5 lines) in api/security/access_control.py:168"}, "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-5f08a76fb85ca4f4", "name": "Commented-code block (5 lines) in api/security/password.py:98", "shortDescription": {"text": "Commented-code block (5 lines) in api/security/password.py:98"}, "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-7f8498d35cfdeba4", "name": "Commented-code block (5 lines) in api/models/fund_holdings_history.py:48", "shortDescription": {"text": "Commented-code block (5 lines) in api/models/fund_holdings_history.py:48"}, "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-f177451460d5d0fc", "name": "Commented-code block (7 lines) in api/models/subscription.py:26", "shortDescription": {"text": "Commented-code block (7 lines) in api/models/subscription.py:26"}, "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-146ba2303de98e9d", "name": "Commented-code block (6 lines) in api/billing/tbank.py:63", "shortDescription": {"text": "Commented-code block (6 lines) in api/billing/tbank.py: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-7eb33d9f06d509de", "name": "Commented-code block (5 lines) in api/billing/invites.py:104", "shortDescription": {"text": "Commented-code block (5 lines) in api/billing/invites.py:104"}, "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-8fb3df71d4ebbc61", "name": "Commented-code block (8 lines) in api/billing/service.py:125", "shortDescription": {"text": "Commented-code block (8 lines) in api/billing/service.py:125"}, "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-5f0c42c7a1c07189", "name": "Commented-code block (9 lines) in api/services/chart_live.py:86", "shortDescription": {"text": "Commented-code block (9 lines) in api/services/chart_live.py: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-9302f51532eccd4f", "name": "Commented-code block (6 lines) in api/routers/chart.py:178", "shortDescription": {"text": "Commented-code block (6 lines) in api/routers/chart.py:178"}, "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-035f2cf0ea7e0140", "name": "Commented-code block (5 lines) in api/routers/auth.py:464", "shortDescription": {"text": "Commented-code block (5 lines) in api/routers/auth.py:464"}, "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-aa2a2bc61adf0ed2", "name": "Commented-code block (7 lines) in api/routers/analytics.py:601", "shortDescription": {"text": "Commented-code block (7 lines) in api/routers/analytics.py:601"}, "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-051d2d9daa624bab", "name": "Commented-code block (7 lines) in api/routers/heatmap.py:162", "shortDescription": {"text": "Commented-code block (7 lines) in api/routers/heatmap.py:162"}, "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-aaff002dc75488bb", "name": "Commented-code block (8 lines) in api/routers/fund_trades.py:95", "shortDescription": {"text": "Commented-code block (8 lines) in api/routers/fund_trades.py:95"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-eb31a4dd4e8b7fd9", "name": "Commented-code block (6 lines) in api/routers/breadth.py:29", "shortDescription": {"text": "Commented-code block (6 lines) in api/routers/breadth.py:29"}, "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-60db575782634e24", "name": "Commented-code block (5 lines) in api/routers/seasonality.py:1149", "shortDescription": {"text": "Commented-code block (5 lines) in api/routers/seasonality.py:1149"}, "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-4f8a030650c07b9f", "name": "Commented-code block (6 lines) in api/routers/oauth.py:169", "shortDescription": {"text": "Commented-code block (6 lines) in api/routers/oauth.py:169"}, "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-1f7ed3351e81970b", "name": "Commented-code block (5 lines) in api/routers/funds.py:32", "shortDescription": {"text": "Commented-code block (5 lines) in api/routers/funds.py:32"}, "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-fd273608718d0f11", "name": "Legacy-named symbol `research_v2` in signals/classification.py:17", "shortDescription": {"text": "Legacy-named symbol `research_v2` in signals/classification.py:17"}, "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-6e4b9dfc96e2df69", "name": "Legacy-named symbol `explore_v2` in signals/features.py:4", "shortDescription": {"text": "Legacy-named symbol `explore_v2` in signals/features.py:4"}, "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-7d84b57ec42691e7", "name": "Legacy-named symbol `diagnostics_v2` in signals/scoring.py:26", "shortDescription": {"text": "Legacy-named symbol `diagnostics_v2` in signals/scoring.py:26"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-c1852c7e9bf97a70", "name": "Commented-code block (5 lines) in signals/alerts_run.py:73", "shortDescription": {"text": "Commented-code block (5 lines) in signals/alerts_run.py:73"}, "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-1c2f1529c7a26821", "name": "`fetch()` without try/.catch or AbortSignal \u2014 signals/relay/cf-worker.js:29", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 signals/relay/cf-worker.js:29"}, "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-9c1187d22894bdb6", "name": "Legacy-named symbol `oi_anomaly_v2` in signals/research/oi_anomaly_v2.py:12", "shortDescription": {"text": "Legacy-named symbol `oi_anomaly_v2` in signals/research/oi_anomaly_v2.py:12"}, "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-c2abbecc63302272", "name": "Legacy-named symbol `explore_v2` in signals/research/explore_v2.py:13", "shortDescription": {"text": "Legacy-named symbol `explore_v2` in signals/research/explore_v2.py:13"}, "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-419d57d03f411a45", "name": "Commented-code block (10 lines) in signals/research/showcase.py:372", "shortDescription": {"text": "Commented-code block (10 lines) in signals/research/showcase.py:372"}, "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-f6603659f7958071", "name": "Legacy-named symbol `diagnostics_v2` in signals/research/diagnostics_v2.py:13", "shortDescription": {"text": "Legacy-named symbol `diagnostics_v2` in signals/research/diagnostics_v2.py:13"}, "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-dd59ad70fa8b2257", "name": "Legacy-named symbol `explore_v2` in signals/research/build_calibration.py:4", "shortDescription": {"text": "Legacy-named symbol `explore_v2` in signals/research/build_calibration.py:4"}, "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-6565ebd017b039cf", "name": "Network/subprocess call without timeout or try/except \u2014 signals/research/explore.py:74", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 signals/research/explore.py:74"}, "fullDescription": {"text": "`requests.get(...)` here lacks both a `timeout=` arg and an enclosing try/except. This is exactly the class of bug that took down our git-clone earlier (HTTP/2 stream cancel surfaced as a fatal). Add a `timeout=` and wrap in try/except, or use a wrapper that retries."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-4d3879c71e14db8d", "name": "Network/subprocess call without timeout or try/except \u2014 signals/detectors/ensemble.py:60", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 signals/detectors/ensemble.py:60"}, "fullDescription": {"text": "`requests.get(...)` here lacks both a `timeout=` arg and an enclosing try/except. This is exactly the class of bug that took down our git-clone earlier (HTTP/2 stream cancel surfaced as a fatal). Add a `timeout=` and wrap in try/except, or use a wrapper that retries."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-0d83de07c257fb30", "name": "Commented-code block (5 lines) in docs/design-system/project/reference/frontend/src/config/chartTheme.ts:103", "shortDescription": {"text": "Commented-code block (5 lines) in docs/design-system/project/reference/frontend/src/config/chartTheme.ts:103"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-f68b46438a738a61", "name": "`fetch()` without try/.catch or AbortSignal \u2014 docs/design-system/project/reference/frontend/src/contexts/AuthContext.tsx", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 docs/design-system/project/reference/frontend/src/contexts/AuthContext.tsx:64"}, "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-572cc2b8a3275898", "name": "`fetch()` without try/.catch or AbortSignal \u2014 docs/design-system/project/reference/frontend/src/pages/AuthCallback.tsx:7", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 docs/design-system/project/reference/frontend/src/pages/AuthCallback.tsx:74"}, "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-db5b3cc998644232", "name": "Commented-code block (5 lines) in docs/design-system/project/reference/frontend/src/pages/FundsMoneyPage.tsx:298", "shortDescription": {"text": "Commented-code block (5 lines) in docs/design-system/project/reference/frontend/src/pages/FundsMoneyPage.tsx:298"}, "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-c97c6f007f26681b", "name": "`fetch()` without try/.catch or AbortSignal \u2014 docs/design-system/project/reference/frontend/src/services/api.ts:69", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 docs/design-system/project/reference/frontend/src/services/api.ts:69"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-d2991faf6b75c123", "name": "Commented-code block (5 lines) in docs/handoff/FundsMoneyPage.CURRENT.tsx:320", "shortDescription": {"text": "Commented-code block (5 lines) in docs/handoff/FundsMoneyPage.CURRENT.tsx:320"}, "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-f0c5bf4eff45e6dc", "name": "Commented-code block (5 lines) in docs/handoff/chartTheme.ts:103", "shortDescription": {"text": "Commented-code block (5 lines) in docs/handoff/chartTheme.ts:103"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-008aea88b788c4b4", "name": "Commented-code block (5 lines) in docs/handoff/FundsMoneyPage.ORIGINAL.tsx:298", "shortDescription": {"text": "Commented-code block (5 lines) in docs/handoff/FundsMoneyPage.ORIGINAL.tsx:298"}, "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-168f3da4fa61ff82", "name": "Network/subprocess call without timeout or try/except \u2014 scripts/process-new-logos.py:23", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 scripts/process-new-logos.py:23"}, "fullDescription": {"text": "`subprocess.run(...)` here lacks both a `timeout=` arg and an enclosing try/except. This is exactly the class of bug that took down our git-clone earlier (HTTP/2 stream cancel surfaced as a fatal). Add a `timeout=` and wrap in try/except, or use a wrapper that retries."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-fffce4d20a611d8d", "name": "Commented-code block (6 lines) in CBR/backfill_orfr_history.py:115", "shortDescription": {"text": "Commented-code block (6 lines) in CBR/backfill_orfr_history.py:115"}, "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-4f56fdcebe3fcfa8", "name": "Commented-code block (6 lines) in CBR/fetch_orfr_flows.py:76", "shortDescription": {"text": "Commented-code block (6 lines) in CBR/fetch_orfr_flows.py:76"}, "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-0c092692e4c80737", "name": "Commented-code block (6 lines) in Commodity/fetch_commodity_realtime.py:49", "shortDescription": {"text": "Commented-code block (6 lines) in Commodity/fetch_commodity_realtime.py:49"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-0f74bd07b70684c5", "name": "Commented-code block (6 lines) in Candles/fetch_candles_futures_realtime.py:827", "shortDescription": {"text": "Commented-code block (6 lines) in Candles/fetch_candles_futures_realtime.py:827"}, "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-2175f7b63c80fb0c", "name": "Commented-code block (6 lines) in OI/fetch_oi_5min_realtime.py:812", "shortDescription": {"text": "Commented-code block (6 lines) in OI/fetch_oi_5min_realtime.py:812"}, "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-6c5e92b4003af1e3", "name": "Commented-code block (5 lines) in sandbox/fear_lib.py:45", "shortDescription": {"text": "Commented-code block (5 lines) in sandbox/fear_lib.py:45"}, "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-923e895c9da040dc", "name": "Commented-code block (6 lines) in extension/src/widget.js:188", "shortDescription": {"text": "Commented-code block (6 lines) in extension/src/widget.js:188"}, "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-f7d04adc7a21916d", "name": "Commented-code block (5 lines) in Funds/fetch_funds_realtime.py:596", "shortDescription": {"text": "Commented-code block (5 lines) in Funds/fetch_funds_realtime.py:596"}, "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-fc6e00941976fb1d", "name": "Commented-code block (5 lines) in Funds/vim_sdr_backfill.py:39", "shortDescription": {"text": "Commented-code block (5 lines) in Funds/vim_sdr_backfill.py:39"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-1ae225fa1868876e", "name": "Commented-code block (6 lines) in Funds/fetch_indices_realtime.py:569", "shortDescription": {"text": "Commented-code block (6 lines) in Funds/fetch_indices_realtime.py:569"}, "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-95cb1f2163dbef82", "name": "Commented-code block (6 lines) in Funds/parsers/scha_xls_parser.py:100", "shortDescription": {"text": "Commented-code block (6 lines) in Funds/parsers/scha_xls_parser.py:100"}, "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-8b08df5a86bf6b07", "name": "Commented-code block (5 lines) in Funds/parsers/vim_parser.py:143", "shortDescription": {"text": "Commented-code block (5 lines) in Funds/parsers/vim_parser.py:143"}, "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-d0da734074c4eed0", "name": "Commented-code block (5 lines) in Funds/parsers/scha_parser.py:75", "shortDescription": {"text": "Commented-code block (5 lines) in Funds/parsers/scha_parser.py:75"}, "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-5fa5af25316da646", "name": "16 env vars used in code but missing from .env.example", "shortDescription": {"text": "16 env vars used in code but missing from .env.example"}, "fullDescription": {"text": "Drift between code and config docs. The first few: `ADMIN_USER_ID`, `ALERT_BOT_USERNAME`, `ALLOWED_ORIGINS`, `COMMODITY_API_ROOT`, `DEV`, `GOOGLE_CLIENT_ID`, `GOOGLE_CLIENT_SECRET`, `GOOGLE_REDIRECT_URI` + 8 more. Add them (with a placeholder/comment) to .env.example so onboarding doesn't break."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-be46ea126aa5d8dc", "name": "Near-duplicate function bodies in 3 places", "shortDescription": {"text": "Near-duplicate function bodies in 3 places"}, "fullDescription": {"text": "Functions with the same first-5-line body hash:\nmain_orchestrator.py:get_moscow_time, Candles/fetch_candles_spot_realtime.py:get_moscow_time, Candles/fetch_candles_futures_realtime.py:get_moscow_time\n\nThis is *the* AI-coder failure mode (4\u00d7 more duplication in vibe-coded repos \u2014 see https://jw.hn/ai-code-hygiene). Consolidate or document why they're separate."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-2c04133e54348533", "name": "Near-duplicate function bodies in 2 places", "shortDescription": {"text": "Near-duplicate function bodies in 2 places"}, "fullDescription": {"text": "Functions with the same first-5-line body hash:\ntg_bot.py:main_keyboard, tg_bot.py:main\n\nThis is *the* AI-coder failure mode (4\u00d7 more duplication in vibe-coded repos \u2014 see https://jw.hn/ai-code-hygiene). Consolidate or document why they're separate."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-49c98f7cedd9c977", "name": "Near-duplicate function bodies in 4 places", "shortDescription": {"text": "Near-duplicate function bodies in 4 places"}, "fullDescription": {"text": "Functions with the same first-5-line body hash:\napi/middleware.py:dispatch, api/middleware.py:dispatch, api/middleware.py:dispatch, api/middleware.py:dispatch\n\nThis is *the* AI-coder failure mode (4\u00d7 more duplication in vibe-coded repos \u2014 see https://jw.hn/ai-code-hygiene). Consolidate or document why they're separate."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-02525d39071dd2c7", "name": "Near-duplicate function bodies in 5 places", "shortDescription": {"text": "Near-duplicate function bodies in 5 places"}, "fullDescription": {"text": "Functions with the same first-5-line body hash:\napi/billing/tbank.py:create_checkout, api/billing/tbank.py:charge, api/billing/provider.py:create_checkout, api/billing/provider.py:charge\n\nThis is *the* AI-coder failure mode (4\u00d7 more duplication in vibe-coded repos \u2014 see https://jw.hn/ai-code-hygiene). Consolidate or document why they're separate."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-560b56501c677523", "name": "Frontend route `/auth/callback/google` has no Link/navigate to it \u2014 docs/design-system/project/reference/frontend/src/Ap", "shortDescription": {"text": "Frontend route `/auth/callback/google` has no Link/navigate to it \u2014 docs/design-system/project/reference/frontend/src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-afb4b4ccc2f2a6dc", "name": "Frontend route `/auth/callback/vk` has no Link/navigate to it \u2014 docs/design-system/project/reference/frontend/src/App.ts", "shortDescription": {"text": "Frontend route `/auth/callback/vk` has no Link/navigate to it \u2014 docs/design-system/project/reference/frontend/src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-a3ad577f92153aeb", "name": "Frontend route `/auth/callback/yandex` has no Link/navigate to it \u2014 docs/design-system/project/reference/frontend/src/Ap", "shortDescription": {"text": "Frontend route `/auth/callback/yandex` has no Link/navigate to it \u2014 docs/design-system/project/reference/frontend/src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-57a1afaf90c47814", "name": "Frontend route `/auth/callback/telegram` has no Link/navigate to it \u2014 docs/design-system/project/reference/frontend/src/", "shortDescription": {"text": "Frontend route `/auth/callback/telegram` has no Link/navigate to it \u2014 docs/design-system/project/reference/frontend/src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-bdf59d8c63a65576", "name": "Frontend route `/style-preview` has no Link/navigate to it \u2014 frontend/src/App.tsx", "shortDescription": {"text": "Frontend route `/style-preview` has no Link/navigate to it \u2014 frontend/src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-e3127030b4409c7f", "name": "Frontend route `/signal-export` has no Link/navigate to it \u2014 frontend/src/App.tsx", "shortDescription": {"text": "Frontend route `/signal-export` has no Link/navigate to it \u2014 frontend/src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-ae009468fa757b03", "name": "Frontend route `/embed/:indicator` has no Link/navigate to it \u2014 frontend/src/App.tsx", "shortDescription": {"text": "Frontend route `/embed/:indicator` has no Link/navigate to it \u2014 frontend/src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-f756fed85130ceb0", "name": "Frontend route `/funds` has no Link/navigate to it \u2014 docs/design-system/project/reference/frontend/src/App.tsx", "shortDescription": {"text": "Frontend route `/funds` has no Link/navigate to it \u2014 docs/design-system/project/reference/frontend/src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-775aff29cfa2849f", "name": "Frontend route `/methodology/oi` has no Link/navigate to it \u2014 frontend/src/App.tsx", "shortDescription": {"text": "Frontend route `/methodology/oi` has no Link/navigate to it \u2014 frontend/src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-207b0022938208f9", "name": "Frontend route `/methodology/heatmap` has no Link/navigate to it \u2014 frontend/src/App.tsx", "shortDescription": {"text": "Frontend route `/methodology/heatmap` has no Link/navigate to it \u2014 frontend/src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-5afa064d56486911", "name": "Frontend route `/methodology/funds-money` has no Link/navigate to it \u2014 frontend/src/App.tsx", "shortDescription": {"text": "Frontend route `/methodology/funds-money` has no Link/navigate to it \u2014 frontend/src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-02e286de4c9a900b", "name": "Frontend route `/methodology/funds-catalog` has no Link/navigate to it \u2014 frontend/src/App.tsx", "shortDescription": {"text": "Frontend route `/methodology/funds-catalog` has no Link/navigate to it \u2014 frontend/src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-aed4aef618a2798f", "name": "Frontend route `/methodology/buffett` has no Link/navigate to it \u2014 frontend/src/App.tsx", "shortDescription": {"text": "Frontend route `/methodology/buffett` has no Link/navigate to it \u2014 frontend/src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-15893589bb505064", "name": "Frontend route `/methodology/strength` has no Link/navigate to it \u2014 frontend/src/App.tsx", "shortDescription": {"text": "Frontend route `/methodology/strength` has no Link/navigate to it \u2014 frontend/src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-f93a66dcc81d242a", "name": "Frontend route `/methodology/seasonality` has no Link/navigate to it \u2014 frontend/src/App.tsx", "shortDescription": {"text": "Frontend route `/methodology/seasonality` has no Link/navigate to it \u2014 frontend/src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-5ca09cb6014300e2", "name": "Frontend route `/methodology/cbr-flows` has no Link/navigate to it \u2014 frontend/src/App.tsx", "shortDescription": {"text": "Frontend route `/methodology/cbr-flows` has no Link/navigate to it \u2014 frontend/src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-f168e84fe1fb31fc", "name": "Frontend route `/billing/success` has no Link/navigate to it \u2014 frontend/src/App.tsx", "shortDescription": {"text": "Frontend route `/billing/success` has no Link/navigate to it \u2014 frontend/src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-a10fcc937432e6f5", "name": "Frontend route `/billing/fail` has no Link/navigate to it \u2014 frontend/src/App.tsx", "shortDescription": {"text": "Frontend route `/billing/fail` has no Link/navigate to it \u2014 frontend/src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-4db8425b48765353", "name": "Frontend route `/billing/stub` has no Link/navigate to it \u2014 frontend/src/App.tsx", "shortDescription": {"text": "Frontend route `/billing/stub` has no Link/navigate to it \u2014 frontend/src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-9e344b1e11b69a77", "name": "Frontend route `/billing/redeem` has no Link/navigate to it \u2014 frontend/src/App.tsx", "shortDescription": {"text": "Frontend route `/billing/redeem` has no Link/navigate to it \u2014 frontend/src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-e5764351ca9700f8", "name": "Frontend route `/security` has no Link/navigate to it \u2014 frontend/src/App.tsx", "shortDescription": {"text": "Frontend route `/security` has no Link/navigate to it \u2014 frontend/src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-586ddd5f55efe26c", "name": "Frontend route `/admin/users/:userId` has no Link/navigate to it \u2014 frontend/src/App.tsx", "shortDescription": {"text": "Frontend route `/admin/users/:userId` has no Link/navigate to it \u2014 frontend/src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-718c2ee1b53b0eed", "name": "Frontend route `/oi-total` has no Link/navigate to it \u2014 docs/design-system/project/reference/frontend/src/App.tsx", "shortDescription": {"text": "Frontend route `/oi-total` has no Link/navigate to it \u2014 docs/design-system/project/reference/frontend/src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-ce4110d5bac1d3bd", "name": "FastAPI POST `exchange` without auth dependency \u2014 api/routers/extension.py:105", "shortDescription": {"text": "FastAPI POST `exchange` without auth dependency \u2014 api/routers/extension.py:105"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-d65d7e6e22876985", "name": "FastAPI POST `refresh_tokens` without auth dependency \u2014 api/routers/auth.py:442", "shortDescription": {"text": "FastAPI POST `refresh_tokens` without auth dependency \u2014 api/routers/auth.py:442"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-780e1ece1859bcc4", "name": "FastAPI POST `receive_csp_report` without auth dependency \u2014 api/routers/csp_report.py:41", "shortDescription": {"text": "FastAPI POST `receive_csp_report` without auth dependency \u2014 api/routers/csp_report.py:41"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-78c264ea5719c0ae", "name": "FastAPI POST `stub_simulate` without auth dependency \u2014 api/routers/billing.py:508", "shortDescription": {"text": "FastAPI POST `stub_simulate` without auth dependency \u2014 api/routers/billing.py:508"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-3f8189035678d90a", "name": "FastAPI POST `google_oauth_callback` without auth dependency \u2014 api/routers/oauth.py:337", "shortDescription": {"text": "FastAPI POST `google_oauth_callback` without auth dependency \u2014 api/routers/oauth.py:337"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-de33fd2249b039a4", "name": "FastAPI POST `vk_oauth_callback` without auth dependency \u2014 api/routers/oauth.py:344", "shortDescription": {"text": "FastAPI POST `vk_oauth_callback` without auth dependency \u2014 api/routers/oauth.py:344"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-f63808490d969dab", "name": "FastAPI POST `yandex_oauth_callback` without auth dependency \u2014 api/routers/oauth.py:428", "shortDescription": {"text": "FastAPI POST `yandex_oauth_callback` without auth dependency \u2014 api/routers/oauth.py:428"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-06e2d1d2d64622fb", "name": "FastAPI POST `telegram_oauth_callback` without auth dependency \u2014 api/routers/oauth.py:500", "shortDescription": {"text": "FastAPI POST `telegram_oauth_callback` without auth dependency \u2014 api/routers/oauth.py:500"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-7eba8461815c2d2a", "name": "Dangling fetch: GET /logos/sprite-manifest.json (frontend/src/components/TickerLogo.tsx:53)", "shortDescription": {"text": "Dangling fetch: GET /logos/sprite-manifest.json (frontend/src/components/TickerLogo.tsx:53)"}, "fullDescription": {"text": "`frontend/src/components/TickerLogo.tsx:53` calls `GET /logos/sprite-manifest.json` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/logos/sprite-manifest.json`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-6c732d5f5184503f", "name": "Dangling fetch: GET /api/billing/features (frontend/src/contexts/TierFeaturesContext.tsx:103)", "shortDescription": {"text": "Dangling fetch: GET /api/billing/features (frontend/src/contexts/TierFeaturesContext.tsx:103)"}, "fullDescription": {"text": "`frontend/src/contexts/TierFeaturesContext.tsx:103` calls `GET /api/billing/features` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/billing/features`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-0c2249eebb7c802d", "name": "Dangling fetch: POST /api/auth/oauth/telegram (frontend/src/pages/AuthCallback.tsx:74)", "shortDescription": {"text": "Dangling fetch: POST /api/auth/oauth/telegram (frontend/src/pages/AuthCallback.tsx:74)"}, "fullDescription": {"text": "`frontend/src/pages/AuthCallback.tsx:74` calls `POST /api/auth/oauth/telegram` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/auth/oauth/telegram`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-5158ecd7814e3f4c", "name": "Dangling fetch: POST /api/auth/oauth/${provider} (frontend/src/pages/AuthCallback.tsx:153)", "shortDescription": {"text": "Dangling fetch: POST /api/auth/oauth/${provider} (frontend/src/pages/AuthCallback.tsx:153)"}, "fullDescription": {"text": "`frontend/src/pages/AuthCallback.tsx:153` calls `POST /api/auth/oauth/${provider}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/auth/oauth/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-d677892f79e5a6d8", "name": "Dangling fetch: GET /api/heatmap/prices (frontend/src/pages/HeatmapPage.tsx:296)", "shortDescription": {"text": "Dangling fetch: GET /api/heatmap/prices (frontend/src/pages/HeatmapPage.tsx:296)"}, "fullDescription": {"text": "`frontend/src/pages/HeatmapPage.tsx:296` calls `GET /api/heatmap/prices` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/heatmap/prices`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-9f6ba4a27c6f6034", "name": "Dangling fetch: GET /api/auth/oauth/providers (frontend/src/pages/LoginPage.tsx:61)", "shortDescription": {"text": "Dangling fetch: GET /api/auth/oauth/providers (frontend/src/pages/LoginPage.tsx:61)"}, "fullDescription": {"text": "`frontend/src/pages/LoginPage.tsx:61` calls `GET /api/auth/oauth/providers` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/auth/oauth/providers`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-ead2e36d63050660", "name": "Dangling fetch: POST /api/auth/login (frontend/src/pages/LoginPage.tsx:92)", "shortDescription": {"text": "Dangling fetch: POST /api/auth/login (frontend/src/pages/LoginPage.tsx:92)"}, "fullDescription": {"text": "`frontend/src/pages/LoginPage.tsx:92` calls `POST /api/auth/login` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/auth/login`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-bcde839b014047de", "name": "Dangling fetch: GET /api/auth/oauth/${providerId}/url (frontend/src/pages/LoginPage.tsx:129)", "shortDescription": {"text": "Dangling fetch: GET /api/auth/oauth/${providerId}/url (frontend/src/pages/LoginPage.tsx:129)"}, "fullDescription": {"text": "`frontend/src/pages/LoginPage.tsx:129` calls `GET /api/auth/oauth/${providerId}/url` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/auth/oauth/<p>/url`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-475a949b581daa37", "name": "Dangling fetch: GET /api/billing/status (frontend/src/pages/ProfilePage.tsx:118)", "shortDescription": {"text": "Dangling fetch: GET /api/billing/status (frontend/src/pages/ProfilePage.tsx:118)"}, "fullDescription": {"text": "`frontend/src/pages/ProfilePage.tsx:118` calls `GET /api/billing/status` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/billing/status`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-8d31661df5b3f784", "name": "Dangling fetch: GET /api/billing/history?limit=20 (frontend/src/pages/ProfilePage.tsx:126)", "shortDescription": {"text": "Dangling fetch: GET /api/billing/history?limit=20 (frontend/src/pages/ProfilePage.tsx:126)"}, "fullDescription": {"text": "`frontend/src/pages/ProfilePage.tsx:126` calls `GET /api/billing/history?limit=20` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/billing/history`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-c2d39868e280f17b", "name": "Dangling fetch: POST /api/billing/${action} (frontend/src/pages/ProfilePage.tsx:151)", "shortDescription": {"text": "Dangling fetch: POST /api/billing/${action} (frontend/src/pages/ProfilePage.tsx:151)"}, "fullDescription": {"text": "`frontend/src/pages/ProfilePage.tsx:151` calls `POST /api/billing/${action}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/billing/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-d9bd983ebef98843", "name": "Dangling fetch: POST /api/billing/retention/accept (frontend/src/pages/ProfilePage.tsx:171)", "shortDescription": {"text": "Dangling fetch: POST /api/billing/retention/accept (frontend/src/pages/ProfilePage.tsx:171)"}, "fullDescription": {"text": "`frontend/src/pages/ProfilePage.tsx:171` calls `POST /api/billing/retention/accept` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/billing/retention/accept`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-49d31a252199a1cd", "name": "Dangling fetch: POST /api/auth/change-password (frontend/src/pages/ProfilePage.tsx:201)", "shortDescription": {"text": "Dangling fetch: POST /api/auth/change-password (frontend/src/pages/ProfilePage.tsx:201)"}, "fullDescription": {"text": "`frontend/src/pages/ProfilePage.tsx:201` calls `POST /api/auth/change-password` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/auth/change-password`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-261877a8f7e701f1", "name": "Dangling fetch: POST /api/billing/stub/simulate (frontend/src/pages/BillingStubPage.tsx:28)", "shortDescription": {"text": "Dangling fetch: POST /api/billing/stub/simulate (frontend/src/pages/BillingStubPage.tsx:28)"}, "fullDescription": {"text": "`frontend/src/pages/BillingStubPage.tsx:28` calls `POST /api/billing/stub/simulate` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/billing/stub/simulate`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-67a14955001a93be", "name": "Dangling fetch: GET /api/billing/plans (frontend/src/pages/PricingPage.tsx:124)", "shortDescription": {"text": "Dangling fetch: GET /api/billing/plans (frontend/src/pages/PricingPage.tsx:124)"}, "fullDescription": {"text": "`frontend/src/pages/PricingPage.tsx:124` calls `GET /api/billing/plans` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/billing/plans`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-b50c1fc15f6ae0e2", "name": "Dangling fetch: GET /logos/sprite-manifest.json (frontend/src/hooks/usePrefetchLogos.ts:26)", "shortDescription": {"text": "Dangling fetch: GET /logos/sprite-manifest.json (frontend/src/hooks/usePrefetchLogos.ts:26)"}, "fullDescription": {"text": "`frontend/src/hooks/usePrefetchLogos.ts:26` calls `GET /logos/sprite-manifest.json` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/logos/sprite-manifest.json`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-d534469ac3f7a077", "name": "Dangling fetch: POST /api/auth/refresh (frontend/src/services/api.ts:46)", "shortDescription": {"text": "Dangling fetch: POST /api/auth/refresh (frontend/src/services/api.ts:46)"}, "fullDescription": {"text": "`frontend/src/services/api.ts:46` calls `POST /api/auth/refresh` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/auth/refresh`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-afef03daa862a413", "name": "Dangling fetch: POST /api/auth/refresh (docs/design-system/project/reference/frontend/src/contexts/AuthContext.tsx:40)", "shortDescription": {"text": "Dangling fetch: POST /api/auth/refresh (docs/design-system/project/reference/frontend/src/contexts/AuthContext.tsx:40)"}, "fullDescription": {"text": "`docs/design-system/project/reference/frontend/src/contexts/AuthContext.tsx:40` calls `POST /api/auth/refresh` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/auth/refresh`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-54b0808e2fe6675a", "name": "Dangling fetch: POST /api/auth/refresh (docs/design-system/project/reference/frontend/src/contexts/AuthContext.tsx:108)", "shortDescription": {"text": "Dangling fetch: POST /api/auth/refresh (docs/design-system/project/reference/frontend/src/contexts/AuthContext.tsx:108)"}, "fullDescription": {"text": "`docs/design-system/project/reference/frontend/src/contexts/AuthContext.tsx:108` calls `POST /api/auth/refresh` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/auth/refresh`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-d4eda2ff04c1831d", "name": "Dangling fetch: POST /api/auth/oauth/telegram (docs/design-system/project/reference/frontend/src/pages/AuthCallback.tsx:", "shortDescription": {"text": "Dangling fetch: POST /api/auth/oauth/telegram (docs/design-system/project/reference/frontend/src/pages/AuthCallback.tsx:74)"}, "fullDescription": {"text": "`docs/design-system/project/reference/frontend/src/pages/AuthCallback.tsx:74` calls `POST /api/auth/oauth/telegram` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/auth/oauth/telegram`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-2df61937cda00cf7", "name": "Dangling fetch: POST /api/auth/oauth/${provider} (docs/design-system/project/reference/frontend/src/pages/AuthCallback.t", "shortDescription": {"text": "Dangling fetch: POST /api/auth/oauth/${provider} (docs/design-system/project/reference/frontend/src/pages/AuthCallback.tsx:123)"}, "fullDescription": {"text": "`docs/design-system/project/reference/frontend/src/pages/AuthCallback.tsx:123` calls `POST /api/auth/oauth/${provider}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/auth/oauth/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-0c06a87c3b736de2", "name": "Dangling fetch: GET /api/heatmap/prices (docs/design-system/project/reference/frontend/src/pages/HeatmapPage.tsx:209)", "shortDescription": {"text": "Dangling fetch: GET /api/heatmap/prices (docs/design-system/project/reference/frontend/src/pages/HeatmapPage.tsx:209)"}, "fullDescription": {"text": "`docs/design-system/project/reference/frontend/src/pages/HeatmapPage.tsx:209` calls `GET /api/heatmap/prices` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/heatmap/prices`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-9478c32e4863fa01", "name": "Dangling fetch: GET /api/auth/oauth/providers (docs/design-system/project/reference/frontend/src/pages/LoginPage.tsx:59)", "shortDescription": {"text": "Dangling fetch: GET /api/auth/oauth/providers (docs/design-system/project/reference/frontend/src/pages/LoginPage.tsx:59)"}, "fullDescription": {"text": "`docs/design-system/project/reference/frontend/src/pages/LoginPage.tsx:59` calls `GET /api/auth/oauth/providers` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/auth/oauth/providers`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-616f92faef586c1d", "name": "Dangling fetch: GET /api/auth/oauth/${providerId}/url (docs/design-system/project/reference/frontend/src/pages/LoginPage", "shortDescription": {"text": "Dangling fetch: GET /api/auth/oauth/${providerId}/url (docs/design-system/project/reference/frontend/src/pages/LoginPage.tsx:110)"}, "fullDescription": {"text": "`docs/design-system/project/reference/frontend/src/pages/LoginPage.tsx:110` calls `GET /api/auth/oauth/${providerId}/url` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/auth/oauth/<p>/url`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-87f1e571ea34438d", "name": "Dangling fetch: GET /api/heatmap/stocks?size_by=value_1m&color_by=change_1m&group_by=none (docs/design-system/project/re", "shortDescription": {"text": "Dangling fetch: GET /api/heatmap/stocks?size_by=value_1m&color_by=change_1m&group_by=none (docs/design-system/project/reference/frontend/src/pages/OverviewPage.tsx:94)"}, "fullDescription": {"text": "`docs/design-system/project/reference/frontend/src/pages/OverviewPage.tsx:94` calls `GET /api/heatmap/stocks?size_by=value_1m&color_by=change_1m&group_by=none` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/heatmap/stocks`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-2d5a78f1d8f094fe", "name": "Dangling fetch: POST /api/auth/change-password (docs/design-system/project/reference/frontend/src/pages/ProfilePage.tsx:", "shortDescription": {"text": "Dangling fetch: POST /api/auth/change-password (docs/design-system/project/reference/frontend/src/pages/ProfilePage.tsx:58)"}, "fullDescription": {"text": "`docs/design-system/project/reference/frontend/src/pages/ProfilePage.tsx:58` calls `POST /api/auth/change-password` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/auth/change-password`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-438e0e0cb52e453f", "name": "Dangling fetch: POST /api/auth/refresh (docs/design-system/project/reference/frontend/src/services/api.ts:42)", "shortDescription": {"text": "Dangling fetch: POST /api/auth/refresh (docs/design-system/project/reference/frontend/src/services/api.ts:42)"}, "fullDescription": {"text": "`docs/design-system/project/reference/frontend/src/services/api.ts:42` calls `POST /api/auth/refresh` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/auth/refresh`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-4756b4c4da7d2088", "name": "Unused endpoint: GET /api/health", "shortDescription": {"text": "Unused endpoint: GET /api/health"}, "fullDescription": {"text": "`api/main.py` declares `GET /api/health` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-bc1afb9c1261643f", "name": "Unused endpoint: GET /api/info", "shortDescription": {"text": "Unused endpoint: GET /api/info"}, "fullDescription": {"text": "`api/main.py` declares `GET /api/info` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-91786ec9e40e27ca", "name": "Unused endpoint: GET /{path:path}", "shortDescription": {"text": "Unused endpoint: GET /{path:path}"}, "fullDescription": {"text": "`api/main.py` declares `GET /{path:path}` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-236d254a125da481", "name": "Unused endpoint: GET /token", "shortDescription": {"text": "Unused endpoint: GET /token"}, "fullDescription": {"text": "`api/routers/extension.py` declares `GET /token` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-358815753e8867f1", "name": "Unused endpoint: POST /token", "shortDescription": {"text": "Unused endpoint: POST /token"}, "fullDescription": {"text": "`api/routers/extension.py` declares `POST /token` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-1c324c8cb1c64b50", "name": "Unused endpoint: DELETE /token/{token_id}", "shortDescription": {"text": "Unused endpoint: DELETE /token/{token_id}"}, "fullDescription": {"text": "`api/routers/extension.py` declares `DELETE /token/{token_id}` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-1c5d213f62b75719", "name": "Unused endpoint: POST /exchange", "shortDescription": {"text": "Unused endpoint: POST /exchange"}, "fullDescription": {"text": "`api/routers/extension.py` declares `POST /exchange` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-081932657ff10ced", "name": "Unused endpoint: GET /intervals/{sectype}", "shortDescription": {"text": "Unused endpoint: GET /intervals/{sectype}"}, "fullDescription": {"text": "`api/routers/chart.py` declares `GET /intervals/{sectype}` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-d5052c8767524794", "name": "Unused endpoint: GET /{sec_id}", "shortDescription": {"text": "Unused endpoint: GET /{sec_id}"}, "fullDescription": {"text": "`api/routers/chart.py` declares `GET /{sec_id}` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-5baa8971ebe192a1", "name": "Unused endpoint: GET /", "shortDescription": {"text": "Unused endpoint: GET /"}, "fullDescription": {"text": "`api/routers/api_keys.py` declares `GET /` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-7a009b1a56794f45", "name": "Unused endpoint: POST /", "shortDescription": {"text": "Unused endpoint: POST /"}, "fullDescription": {"text": "`api/routers/api_keys.py` declares `POST /` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-d467299d5c174fc0", "name": "Unused endpoint: GET /usage", "shortDescription": {"text": "Unused endpoint: GET /usage"}, "fullDescription": {"text": "`api/routers/api_keys.py` declares `GET /usage` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-38f0a0bf734e5bcc", "name": "Unused endpoint: DELETE /{key_id}", "shortDescription": {"text": "Unused endpoint: DELETE /{key_id}"}, "fullDescription": {"text": "`api/routers/api_keys.py` declares `DELETE /{key_id}` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-304b6f2b403d93f7", "name": "Unused endpoint: POST /register", "shortDescription": {"text": "Unused endpoint: POST /register"}, "fullDescription": {"text": "`api/routers/auth.py` declares `POST /register` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-618721b912bad1c2", "name": "Unused endpoint: POST /login", "shortDescription": {"text": "Unused endpoint: POST /login"}, "fullDescription": {"text": "`api/routers/auth.py` declares `POST /login` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-7ce17d6b092a81ca", "name": "Unused endpoint: POST /refresh", "shortDescription": {"text": "Unused endpoint: POST /refresh"}, "fullDescription": {"text": "`api/routers/auth.py` declares `POST /refresh` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-99fc36db98c134ce", "name": "Unused endpoint: POST /logout", "shortDescription": {"text": "Unused endpoint: POST /logout"}, "fullDescription": {"text": "`api/routers/auth.py` declares `POST /logout` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-fd1dc91abf32142d", "name": "Unused endpoint: GET /me", "shortDescription": {"text": "Unused endpoint: GET /me"}, "fullDescription": {"text": "`api/routers/auth.py` declares `GET /me` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-eeceb1463df7381a", "name": "Unused endpoint: POST /add-email", "shortDescription": {"text": "Unused endpoint: POST /add-email"}, "fullDescription": {"text": "`api/routers/auth.py` declares `POST /add-email` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-0c3bb6af93b4422a", "name": "Unused endpoint: POST /verify-email", "shortDescription": {"text": "Unused endpoint: POST /verify-email"}, "fullDescription": {"text": "`api/routers/auth.py` declares `POST /verify-email` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-0afae4bfd1ff1c08", "name": "Unused endpoint: POST /resend-verification", "shortDescription": {"text": "Unused endpoint: POST /resend-verification"}, "fullDescription": {"text": "`api/routers/auth.py` declares `POST /resend-verification` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-2a6222222192a469", "name": "Unused endpoint: GET /guest-limits", "shortDescription": {"text": "Unused endpoint: GET /guest-limits"}, "fullDescription": {"text": "`api/routers/auth.py` declares `GET /guest-limits` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-4fe9bb486644f008", "name": "Unused endpoint: POST /change-password", "shortDescription": {"text": "Unused endpoint: POST /change-password"}, "fullDescription": {"text": "`api/routers/auth.py` declares `POST /change-password` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-e5cea7dddfee804f", "name": "Unused endpoint: POST /event", "shortDescription": {"text": "Unused endpoint: POST /event"}, "fullDescription": {"text": "`api/routers/analytics.py` declares `POST /event` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-cd8dc4599ec52a08", "name": "Unused endpoint: GET /stats", "shortDescription": {"text": "Unused endpoint: GET /stats"}, "fullDescription": {"text": "`api/routers/analytics.py` declares `GET /stats` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-3e03a6de6e7f5fe8", "name": "Unused endpoint: GET /funnel", "shortDescription": {"text": "Unused endpoint: GET /funnel"}, "fullDescription": {"text": "`api/routers/analytics.py` declares `GET /funnel` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-57c230d8ec50e109", "name": "Unused endpoint: GET /cohort", "shortDescription": {"text": "Unused endpoint: GET /cohort"}, "fullDescription": {"text": "`api/routers/analytics.py` declares `GET /cohort` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-1e386d92e940e3d2", "name": "Unused endpoint: GET /realtime", "shortDescription": {"text": "Unused endpoint: GET /realtime"}, "fullDescription": {"text": "`api/routers/analytics.py` declares `GET /realtime` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-ad5e663a54b219ee", "name": "Unused endpoint: GET /experiments", "shortDescription": {"text": "Unused endpoint: GET /experiments"}, "fullDescription": {"text": "`api/routers/analytics.py` declares `GET /experiments` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-4b4622970581e36a", "name": "Unused endpoint: POST /experiments", "shortDescription": {"text": "Unused endpoint: POST /experiments"}, "fullDescription": {"text": "`api/routers/analytics.py` declares `POST /experiments` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-e4911d6b89bb7a4a", "name": "Unused endpoint: DELETE /experiments/{name}", "shortDescription": {"text": "Unused endpoint: DELETE /experiments/{name}"}, "fullDescription": {"text": "`api/routers/analytics.py` declares `DELETE /experiments/{name}` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-88398ab59b476885", "name": "Unused endpoint: GET /experiments/{name}/assign", "shortDescription": {"text": "Unused endpoint: GET /experiments/{name}/assign"}, "fullDescription": {"text": "`api/routers/analytics.py` declares `GET /experiments/{name}/assign` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-841e50bf821e4158", "name": "Unused endpoint: GET /users", "shortDescription": {"text": "Unused endpoint: GET /users"}, "fullDescription": {"text": "`api/routers/analytics.py` declares `GET /users` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-d18411a066b7e2c1", "name": "Unused endpoint: GET /users/{user_id}", "shortDescription": {"text": "Unused endpoint: GET /users/{user_id}"}, "fullDescription": {"text": "`api/routers/analytics.py` declares `GET /users/{user_id}` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-0ece7dc55b06b820", "name": "Unused endpoint: GET /stocks", "shortDescription": {"text": "Unused endpoint: GET /stocks"}, "fullDescription": {"text": "`api/routers/heatmap.py` declares `GET /stocks` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-e2631495c43f2a81", "name": "Unused endpoint: GET /prices", "shortDescription": {"text": "Unused endpoint: GET /prices"}, "fullDescription": {"text": "`api/routers/heatmap.py` declares `GET /prices` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-0e2e81790f4eee4d", "name": "Unused endpoint: GET /imoex", "shortDescription": {"text": "Unused endpoint: GET /imoex"}, "fullDescription": {"text": "`api/routers/heatmap.py` declares `GET /imoex` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-adc68f9f0ddf5c19", "name": "Unused endpoint: GET /intraday-assets", "shortDescription": {"text": "Unused endpoint: GET /intraday-assets"}, "fullDescription": {"text": "`api/routers/open_interest.py` declares `GET /intraday-assets` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-7feb467034bef67a", "name": "Unused endpoint: GET /{sectype}", "shortDescription": {"text": "Unused endpoint: GET /{sectype}"}, "fullDescription": {"text": "`api/routers/open_interest.py` declares `GET /{sectype}` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-89531cd1957e8f15", "name": "Unused endpoint: GET /funds", "shortDescription": {"text": "Unused endpoint: GET /funds"}, "fullDescription": {"text": "`api/routers/fund_trades.py` declares `GET /funds` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-6a3b16f143677903", "name": "Unused endpoint: GET /fund/{ticker}", "shortDescription": {"text": "Unused endpoint: GET /fund/{ticker}"}, "fullDescription": {"text": "`api/routers/fund_trades.py` declares `GET /fund/{ticker}` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-f91f282218c9cda9", "name": "Unused endpoint: GET /movers", "shortDescription": {"text": "Unused endpoint: GET /movers"}, "fullDescription": {"text": "`api/routers/fund_trades.py` declares `GET /movers` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-6b48db282d44e71b", "name": "Unused endpoint: GET /intraday/{ticker}", "shortDescription": {"text": "Unused endpoint: GET /intraday/{ticker}"}, "fullDescription": {"text": "`api/routers/fund_trades.py` declares `GET /intraday/{ticker}` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-41d7b0ce008b21fb", "name": "Unused endpoint: GET /asset/{asset_name}", "shortDescription": {"text": "Unused endpoint: GET /asset/{asset_name}"}, "fullDescription": {"text": "`api/routers/fund_trades.py` declares `GET /asset/{asset_name}` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-c2ab4f52b5100a22", "name": "Unused endpoint: GET /snapshots/{ticker}", "shortDescription": {"text": "Unused endpoint: GET /snapshots/{ticker}"}, "fullDescription": {"text": "`api/routers/fund_trades.py` declares `GET /snapshots/{ticker}` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-f9835dfb82d7892b", "name": "Unused endpoint: GET /snapshot/{ticker}", "shortDescription": {"text": "Unused endpoint: GET /snapshot/{ticker}"}, "fullDescription": {"text": "`api/routers/fund_trades.py` declares `GET /snapshot/{ticker}` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-b9cdbae91eebc8e1", "name": "Unused endpoint: GET /asset-history/{ticker}", "shortDescription": {"text": "Unused endpoint: GET /asset-history/{ticker}"}, "fullDescription": {"text": "`api/routers/fund_trades.py` declares `GET /asset-history/{ticker}` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-68c058e796a5439f", "name": "Unused endpoint: GET /assets", "shortDescription": {"text": "Unused endpoint: GET /assets"}, "fullDescription": {"text": "`api/routers/fund_trades.py` declares `GET /assets` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-55475034b057bdda", "name": "Unused endpoint: GET /company-flows", "shortDescription": {"text": "Unused endpoint: GET /company-flows"}, "fullDescription": {"text": "`api/routers/fund_trades.py` declares `GET /company-flows` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-d06ddcaddd685127", "name": "Unused endpoint: GET /heatmap.csv", "shortDescription": {"text": "Unused endpoint: GET /heatmap.csv"}, "fullDescription": {"text": "`api/routers/exports.py` declares `GET /heatmap.csv` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}]}}, "automationDetails": {"id": "repobility/22025"}, "properties": {"repository": "Va3elina/moex-aggregator", "repoUrl": "https://github.com/Va3elina/moex-aggregator", "branch": "main"}, "results": [{"ruleId": "foundry_unresolved_feedback", "level": "warning", "message": {"text": "Foundry mined unresolved feedback: Va3elina/moex-aggregator"}, "properties": {"repobilityId": 463014, "scanner": "foundry_dataset", "fingerprint": "86adb59f41700956383674ce3326b84c211129d903bf99bcc47096cf1fe09065", "category": "practices", "severity": "medium", "confidence": 0.7, "triageState": "open", "verdict": "needs_review", "isResolved": false, "reason": "Imported from mined Foundry/Fable5 evidence with real GitHub/source provenance. Review source_id before acting.", "evidence": {"meta": {"kind": "graph_query_record", "title": "Human feedback without linked fix evidence", "intent": "Negative/unresolved examples that should not be hallucinated into fixes.", "labels": {"ui_or_frontend": 1, "api_integration_gap": 1, "issue_or_pull_request_thread": 1, "not_resolved_or_not_observed": 3, "human_reported_issue_no_linked_fix": 1, "thread_has_human_issue_without_fix_context": 2}, "source": "graph_query_export", "motif_id": "unlinked_feedback_needs_evidence", "outcomes": {"not_resolved_or_not_observed": 6}, "polarity": "bad", "query_id": "unresolved_feedback", "severity": "medium", "ci_labels": {}, "synthetic": false, "edge_count": 14, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 1, "thread_has_comment": 1, "thread_touches_file": 1, "chain_has_link_quality": 3, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "issue_chain_touches_file": 1, "thread_has_comment_chain": 1, "comment_chain_touches_file": 1, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 1}, "node_count": 10, "node_types": {"repo": 1, "thread": 1, "comment": 1, "pr_file": 1, "fix_outcome": 1, "issue_chain": 1, "link_quality": 3, "comment_chain": 1}, "query_type": "motif_query", "thread_key": "Va3elina/moex-aggregator#87", "issue_number": "87", "quality_tiers": {"unresolved": 3}, "repo_full_name": "Va3elina/moex-aggregator", "training_usage": "negative_or_unresolved", "source_motif_id": "graph-pattern-motif-thread-acb0732578892466", "graph_gold_label": "needs_more_evidence", "changed_file_labels": {"ui_or_frontend": 4}}, "text": "Graph query export: Human feedback without linked fix evidence\nQuery id: unresolved_feedback\nQuery type: motif_query\nIntent: Negative/unresolved examples that should not be hallucinated into fixes.\nMotif: unlinked_feedback_needs_evidence\nTraining usage: negative_or_unresolved\nGraph gold label: needs_more_evidence\nRepo: Va3elina/moex-aggregator\nThread: Va3elina/moex-aggregator#87\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: Va3elina/moex-aggregator\nThread: Va3elina/moex-aggregator#87\nGraph gold label: needs_more_evidence\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: Va3elina/moex-aggregator#87\nRepo: Va3elina/moex-aggregator\nIssue/PR number: 87\nGraph consistency label: needs_more_evidence\nNodes: 10\nEdges: 14\nNode types: {'link_quality': 3, 'thread': 1, 'repo': 1, 'comment': 1, 'pr_file': 1, 'comment_chain': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'chain_has_link_quality': 3, 'repo_has_thread': 1, 'thread_has_comment': 1, 'thread_touches_file': 1, 'thread_has_comment_chain': 1, 'comment_has_chain': 1, 'comment_chain_touches_file': 1, 'thread_has_issue_chain': 1, 'issue_chain_has_comment_chain': 1, 'issue_chain_touches_file': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'not_resolved_or_not_observed': 3, 'thread_has_human_issue_without_fix_context': 2, 'issue_or_pull_request_thread': 1, 'api_integration_gap': 1, 'ui_or_frontend': 1, 'human_reported_issue_no_linked_fix': 1}\nOutcomes: {'not_resolved_or_not_observed': 6}\nQuality tiers: {'unresolved': 3}\nCI labels: {}\nCurriculum targets:\n- Teach models to preserve unresolved human feedback instead of hallucinating fixes.\n- Build issue-to-regression examples where no accepted fix exists yet.\nAssumption checks:\n- Can a commit be linked by issue number, SHA, changed path, or time window?\n- If no link exists, is this explicitly labelled unresolved?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/Va3elina/moex-aggregator", "source_id": "graph-query-motif_query-dfa421ec34acbe7c", "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": "Va3elina/moex-aggregator", "source_dataset": "graph_queries/unresolved_feedback", "training_usage": "negative_or_unresolved"}}}, {"ruleId": "foundry_unresolved_feedback", "level": "warning", "message": {"text": "Foundry mined unresolved feedback: Va3elina/moex-aggregator"}, "properties": {"repobilityId": 463013, "scanner": "foundry_dataset", "fingerprint": "3cc7ecbe52ae670bc410c3de5f42293ff1234ded3d4f8665a7dfac064f87ae3a", "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": {"api_or_backend": 1, "ui_or_frontend": 7, "ui_workflow_gap": 1, "issue_or_pull_request_thread": 1, "not_resolved_or_not_observed": 3, "human_reported_issue_no_linked_fix": 1, "thread_has_human_issue_without_fix_context": 2}, "source": "graph_query_export", "motif_id": "unlinked_feedback_needs_evidence", "outcomes": {"not_resolved_or_not_observed": 6}, "polarity": "bad", "query_id": "unresolved_feedback", "severity": "medium", "ci_labels": {}, "synthetic": false, "edge_count": 35, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 1, "thread_has_comment": 1, "thread_touches_file": 8, "chain_has_link_quality": 3, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "issue_chain_touches_file": 8, "thread_has_comment_chain": 1, "comment_chain_touches_file": 8, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 1}, "node_count": 17, "node_types": {"repo": 1, "thread": 1, "comment": 1, "pr_file": 8, "fix_outcome": 1, "issue_chain": 1, "link_quality": 3, "comment_chain": 1}, "query_type": "motif_query", "thread_key": "Va3elina/moex-aggregator#74", "issue_number": "74", "quality_tiers": {"unresolved": 3}, "repo_full_name": "Va3elina/moex-aggregator", "training_usage": "negative_or_unresolved", "source_motif_id": "graph-pattern-motif-thread-3e87d4a45853ff9b", "graph_gold_label": "needs_more_evidence", "changed_file_labels": {"api_or_backend": 4, "ui_or_frontend": 28}}, "text": "Graph query export: Human feedback without linked fix evidence\nQuery id: unresolved_feedback\nQuery type: motif_query\nIntent: Negative/unresolved examples that should not be hallucinated into fixes.\nMotif: unlinked_feedback_needs_evidence\nTraining usage: negative_or_unresolved\nGraph gold label: needs_more_evidence\nRepo: Va3elina/moex-aggregator\nThread: Va3elina/moex-aggregator#74\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: Va3elina/moex-aggregator\nThread: Va3elina/moex-aggregator#74\nGraph gold label: needs_more_evidence\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: Va3elina/moex-aggregator#74\nRepo: Va3elina/moex-aggregator\nIssue/PR number: 74\nGraph consistency label: needs_more_evidence\nNodes: 17\nEdges: 35\nNode types: {'pr_file': 8, 'link_quality': 3, 'thread': 1, 'repo': 1, 'comment': 1, 'comment_chain': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'thread_touches_file': 8, 'comment_chain_touches_file': 8, 'issue_chain_touches_file': 8, 'chain_has_link_quality': 3, 'repo_has_thread': 1, 'thread_has_comment': 1, 'thread_has_comment_chain': 1, 'comment_has_chain': 1, 'thread_has_issue_chain': 1, 'issue_chain_has_comment_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'ui_or_frontend': 7, 'not_resolved_or_not_observed': 3, 'thread_has_human_issue_without_fix_context': 2, 'issue_or_pull_request_thread': 1, 'ui_workflow_gap': 1, 'api_or_backend': 1, 'human_reported_issue_no_linked_fix': 1}\nOutcomes: {'not_resolved_or_not_observed': 6}\nQuality tiers: {'unresolved': 3}\nCI labels: {}\nCurriculum targets:\n- Teach models to preserve unresolved human feedback instead of hallucinating fixes.\n- Build issue-to-regression examples where no accepted fix exists yet.\nAssumption checks:\n- Can a commit be linked by issue number, SHA, changed path, or time window?\n- If no link exists, is this explicitly labelled unresolved?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/Va3elina/moex-aggregator", "source_id": "graph-query-motif_query-eeededf1a0215f23", "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": "Va3elina/moex-aggregator", "source_dataset": "graph_queries/unresolved_feedback", "training_usage": "negative_or_unresolved"}}}, {"ruleId": "foundry_unresolved_feedback", "level": "warning", "message": {"text": "Foundry mined unresolved feedback: Va3elina/moex-aggregator"}, "properties": {"repobilityId": 463012, "scanner": "foundry_dataset", "fingerprint": "08b14c4729dbe80fe668e93d3405f2cb6e18beb2c6d9b2791a06f6226e464476", "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": {"api_integration_gap": 1, "security_auth_secret": 1, "issue_or_pull_request_thread": 1, "not_resolved_or_not_observed": 4, "human_reported_issue_no_linked_fix": 2, "thread_has_human_issue_without_fix_context": 2}, "source": "graph_query_export", "motif_id": "unlinked_feedback_needs_evidence", "outcomes": {"not_resolved_or_not_observed": 8}, "polarity": "bad", "query_id": "unresolved_feedback", "severity": "medium", "ci_labels": {}, "synthetic": false, "edge_count": 16, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 2, "thread_has_comment": 2, "chain_has_link_quality": 4, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 2, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 2}, "node_count": 12, "node_types": {"repo": 1, "thread": 1, "comment": 2, "fix_outcome": 1, "issue_chain": 1, "link_quality": 4, "comment_chain": 2}, "query_type": "motif_query", "thread_key": "Va3elina/moex-aggregator#29", "issue_number": "29", "quality_tiers": {"unresolved": 4}, "repo_full_name": "Va3elina/moex-aggregator", "training_usage": "negative_or_unresolved", "source_motif_id": "graph-pattern-motif-thread-e273ad7469fefe3f", "graph_gold_label": "needs_more_evidence", "changed_file_labels": {}}, "text": "Graph query export: Human feedback without linked fix evidence\nQuery id: unresolved_feedback\nQuery type: motif_query\nIntent: Negative/unresolved examples that should not be hallucinated into fixes.\nMotif: unlinked_feedback_needs_evidence\nTraining usage: negative_or_unresolved\nGraph gold label: needs_more_evidence\nRepo: Va3elina/moex-aggregator\nThread: Va3elina/moex-aggregator#29\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: Va3elina/moex-aggregator\nThread: Va3elina/moex-aggregator#29\nGraph gold label: needs_more_evidence\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: Va3elina/moex-aggregator#29\nRepo: Va3elina/moex-aggregator\nIssue/PR number: 29\nGraph consistency label: needs_more_evidence\nNodes: 12\nEdges: 16\nNode types: {'link_quality': 4, 'comment': 2, 'comment_chain': 2, 'thread': 1, 'repo': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'chain_has_link_quality': 4, 'thread_has_comment': 2, 'thread_has_comment_chain': 2, 'comment_has_chain': 2, 'issue_chain_has_comment_chain': 2, 'repo_has_thread': 1, 'thread_has_issue_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'not_resolved_or_not_observed': 4, 'human_reported_issue_no_linked_fix': 2, 'thread_has_human_issue_without_fix_context': 2, 'issue_or_pull_request_thread': 1, 'security_auth_secret': 1, 'api_integration_gap': 1}\nOutcomes: {'not_resolved_or_not_observed': 8}\nQuality tiers: {'unresolved': 4}\nCI labels: {}\nCurriculum targets:\n- Teach models to preserve unresolved human feedback instead of hallucinating fixes.\n- Build issue-to-regression examples where no accepted fix exists yet.\nAssumption checks:\n- Can a commit be linked by issue number, SHA, changed path, or time window?\n- If no link exists, is this explicitly labelled unresolved?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/Va3elina/moex-aggregator", "source_id": "graph-query-motif_query-b5af139307befb01", "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": "Va3elina/moex-aggregator", "source_dataset": "graph_queries/unresolved_feedback", "training_usage": "negative_or_unresolved"}}}, {"ruleId": "foundry_unresolved_feedback", "level": "warning", "message": {"text": "Foundry mined unresolved feedback: Va3elina/moex-aggregator"}, "properties": {"repobilityId": 463011, "scanner": "foundry_dataset", "fingerprint": "a9802cba6ae1a47bfc6982f0238b0fee37f8b27569cc0e618f802f93e3397c85", "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, "api_integration_gap": 1, "dependency_or_build": 2, "issue_or_pull_request_thread": 1, "not_resolved_or_not_observed": 4, "human_reported_issue_no_linked_fix": 2, "thread_has_human_issue_without_fix_context": 2}, "source": "graph_query_export", "motif_id": "unlinked_feedback_needs_evidence", "outcomes": {"not_resolved_or_not_observed": 8}, "polarity": "bad", "query_id": "unresolved_feedback", "severity": "medium", "ci_labels": {}, "synthetic": false, "edge_count": 24, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 2, "thread_has_comment": 2, "thread_touches_file": 2, "chain_has_link_quality": 4, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "issue_chain_touches_file": 2, "thread_has_comment_chain": 2, "comment_chain_touches_file": 4, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 2}, "node_count": 14, "node_types": {"repo": 1, "thread": 1, "comment": 2, "pr_file": 2, "fix_outcome": 1, "issue_chain": 1, "link_quality": 4, "comment_chain": 2}, "query_type": "motif_query", "thread_key": "Va3elina/moex-aggregator#28", "issue_number": "28", "quality_tiers": {"unresolved": 4}, "repo_full_name": "Va3elina/moex-aggregator", "training_usage": "negative_or_unresolved", "source_motif_id": "graph-pattern-motif-thread-8162bf5b9444910d", "graph_gold_label": "needs_more_evidence", "changed_file_labels": {"dependency_or_build": 10}}, "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: Va3elina/moex-aggregator\nThread: Va3elina/moex-aggregator#28\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: Va3elina/moex-aggregator\nThread: Va3elina/moex-aggregator#28\nGraph gold label: needs_more_evidence\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: Va3elina/moex-aggregator#28\nRepo: Va3elina/moex-aggregator\nIssue/PR number: 28\nGraph consistency label: needs_more_evidence\nNodes: 14\nEdges: 24\nNode types: {'link_quality': 4, 'comment': 2, 'pr_file': 2, 'comment_chain': 2, 'thread': 1, 'repo': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'comment_chain_touches_file': 4, 'chain_has_link_quality': 4, 'thread_has_comment': 2, 'thread_touches_file': 2, 'thread_has_comment_chain': 2, 'comment_has_chain': 2, 'issue_chain_has_comment_chain': 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': 4, 'dependency_or_build': 2, 'human_reported_issue_no_linked_fix': 2, 'thread_has_human_issue_without_fix_context': 2, 'issue_or_pull_request_thread': 1, 'test_ci_gap': 1, 'api_integration_gap': 1}\nOutcomes: {'not_resolved_or_not_observed': 8}\nQuality tiers: {'unresolved': 4}\nCI labels: {}\nCurriculum targets:\n- Teach models to preserve unresolved human feedback instead of hallucinating fixes.\n- Build issue-to-regression examples where no accepted fix exists yet.\nAssumption checks:\n- Can a commit be linked by issue number, SHA, changed path, or time window?\n- If no link exists, is this explicitly labelled unresolved?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/Va3elina/moex-aggregator", "source_id": "graph-query-motif_query-bf3526724ad88950", "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": "Va3elina/moex-aggregator", "source_dataset": "graph_queries/unresolved_feedback", "training_usage": "negative_or_unresolved"}}}, {"ruleId": "foundry_unresolved_feedback", "level": "warning", "message": {"text": "Foundry mined unresolved feedback: Va3elina/moex-aggregator"}, "properties": {"repobilityId": 463010, "scanner": "foundry_dataset", "fingerprint": "f9b60174fd3ddefa6fd5bd18df570c7fb960a00ef16a3d32e912da2b5c683e51", "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": {"api_integration_gap": 2, "dependency_or_build": 2, "issue_or_pull_request_thread": 1, "not_resolved_or_not_observed": 4, "human_reported_issue_no_linked_fix": 2, "thread_has_human_issue_without_fix_context": 2}, "source": "graph_query_export", "motif_id": "unlinked_feedback_needs_evidence", "outcomes": {"not_resolved_or_not_observed": 8}, "polarity": "bad", "query_id": "unresolved_feedback", "severity": "medium", "ci_labels": {}, "synthetic": false, "edge_count": 24, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 2, "thread_has_comment": 2, "thread_touches_file": 2, "chain_has_link_quality": 4, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "issue_chain_touches_file": 2, "thread_has_comment_chain": 2, "comment_chain_touches_file": 4, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 2}, "node_count": 14, "node_types": {"repo": 1, "thread": 1, "comment": 2, "pr_file": 2, "fix_outcome": 1, "issue_chain": 1, "link_quality": 4, "comment_chain": 2}, "query_type": "motif_query", "thread_key": "Va3elina/moex-aggregator#27", "issue_number": "27", "quality_tiers": {"unresolved": 4}, "repo_full_name": "Va3elina/moex-aggregator", "training_usage": "negative_or_unresolved", "source_motif_id": "graph-pattern-motif-thread-306c0cfa956c3513", "graph_gold_label": "needs_more_evidence", "changed_file_labels": {"dependency_or_build": 10}}, "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: Va3elina/moex-aggregator\nThread: Va3elina/moex-aggregator#27\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: Va3elina/moex-aggregator\nThread: Va3elina/moex-aggregator#27\nGraph gold label: needs_more_evidence\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: Va3elina/moex-aggregator#27\nRepo: Va3elina/moex-aggregator\nIssue/PR number: 27\nGraph consistency label: needs_more_evidence\nNodes: 14\nEdges: 24\nNode types: {'link_quality': 4, 'comment': 2, 'pr_file': 2, 'comment_chain': 2, 'thread': 1, 'repo': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'comment_chain_touches_file': 4, 'chain_has_link_quality': 4, 'thread_has_comment': 2, 'thread_touches_file': 2, 'thread_has_comment_chain': 2, 'comment_has_chain': 2, 'issue_chain_has_comment_chain': 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': 4, 'api_integration_gap': 2, 'dependency_or_build': 2, 'human_reported_issue_no_linked_fix': 2, 'thread_has_human_issue_without_fix_context': 2, 'issue_or_pull_request_thread': 1}\nOutcomes: {'not_resolved_or_not_observed': 8}\nQuality tiers: {'unresolved': 4}\nCI labels: {}\nCurriculum targets:\n- Teach models to preserve unresolved human feedback instead of hallucinating fixes.\n- Build issue-to-regression examples where no accepted fix exists yet.\nAssumption checks:\n- Can a commit be linked by issue number, SHA, changed path, or time window?\n- If no link exists, is this explicitly labelled unresolved?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/Va3elina/moex-aggregator", "source_id": "graph-query-motif_query-b2fb06609ebb3aad", "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": "Va3elina/moex-aggregator", "source_dataset": "graph_queries/unresolved_feedback", "training_usage": "negative_or_unresolved"}}}, {"ruleId": "foundry_unresolved_feedback", "level": "warning", "message": {"text": "Foundry mined unresolved feedback: Va3elina/moex-aggregator"}, "properties": {"repobilityId": 463009, "scanner": "foundry_dataset", "fingerprint": "9df39ef77d101f7d8451f7a43f4235291b9d5863ffe460929c7b538374a7fdd0", "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": {"api_integration_gap": 1, "security_auth_secret": 1, "issue_or_pull_request_thread": 1, "not_resolved_or_not_observed": 4, "human_reported_issue_no_linked_fix": 2, "thread_has_human_issue_without_fix_context": 2}, "source": "graph_query_export", "motif_id": "unlinked_feedback_needs_evidence", "outcomes": {"not_resolved_or_not_observed": 8}, "polarity": "bad", "query_id": "unresolved_feedback", "severity": "medium", "ci_labels": {}, "synthetic": false, "edge_count": 16, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 2, "thread_has_comment": 2, "chain_has_link_quality": 4, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 2, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 2}, "node_count": 12, "node_types": {"repo": 1, "thread": 1, "comment": 2, "fix_outcome": 1, "issue_chain": 1, "link_quality": 4, "comment_chain": 2}, "query_type": "motif_query", "thread_key": "Va3elina/moex-aggregator#26", "issue_number": "26", "quality_tiers": {"unresolved": 4}, "repo_full_name": "Va3elina/moex-aggregator", "training_usage": "negative_or_unresolved", "source_motif_id": "graph-pattern-motif-thread-13d8129f3c9a9747", "graph_gold_label": "needs_more_evidence", "changed_file_labels": {}}, "text": "Graph query export: Human feedback without linked fix evidence\nQuery id: unresolved_feedback\nQuery type: motif_query\nIntent: Negative/unresolved examples that should not be hallucinated into fixes.\nMotif: unlinked_feedback_needs_evidence\nTraining usage: negative_or_unresolved\nGraph gold label: needs_more_evidence\nRepo: Va3elina/moex-aggregator\nThread: Va3elina/moex-aggregator#26\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: Va3elina/moex-aggregator\nThread: Va3elina/moex-aggregator#26\nGraph gold label: needs_more_evidence\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: Va3elina/moex-aggregator#26\nRepo: Va3elina/moex-aggregator\nIssue/PR number: 26\nGraph consistency label: needs_more_evidence\nNodes: 12\nEdges: 16\nNode types: {'link_quality': 4, 'comment': 2, 'comment_chain': 2, 'thread': 1, 'repo': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'chain_has_link_quality': 4, 'thread_has_comment': 2, 'thread_has_comment_chain': 2, 'comment_has_chain': 2, 'issue_chain_has_comment_chain': 2, 'repo_has_thread': 1, 'thread_has_issue_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'not_resolved_or_not_observed': 4, 'human_reported_issue_no_linked_fix': 2, 'thread_has_human_issue_without_fix_context': 2, 'issue_or_pull_request_thread': 1, 'security_auth_secret': 1, 'api_integration_gap': 1}\nOutcomes: {'not_resolved_or_not_observed': 8}\nQuality tiers: {'unresolved': 4}\nCI labels: {}\nCurriculum targets:\n- Teach models to preserve unresolved human feedback instead of hallucinating fixes.\n- Build issue-to-regression examples where no accepted fix exists yet.\nAssumption checks:\n- Can a commit be linked by issue number, SHA, changed path, or time window?\n- If no link exists, is this explicitly labelled unresolved?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/Va3elina/moex-aggregator", "source_id": "graph-query-motif_query-2c1669386a086289", "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": "Va3elina/moex-aggregator", "source_dataset": "graph_queries/unresolved_feedback", "training_usage": "negative_or_unresolved"}}}, {"ruleId": "foundry_unresolved_feedback", "level": "warning", "message": {"text": "Foundry mined unresolved feedback: Va3elina/moex-aggregator"}, "properties": {"repobilityId": 463008, "scanner": "foundry_dataset", "fingerprint": "36490e71152cc28a0c57167f24a2a6d26f2442bf8b6868d30704001d9c8a8837", "category": "practices", "severity": "medium", "confidence": 0.7, "triageState": "open", "verdict": "needs_review", "isResolved": false, "reason": "Imported from mined Foundry/Fable5 evidence with real GitHub/source provenance. Review source_id before acting.", "evidence": {"meta": {"kind": "graph_query_record", "title": "Human feedback without linked fix evidence", "intent": "Negative/unresolved examples that should not be hallucinated into fixes.", "labels": {"runtime_failure": 1, "api_integration_gap": 1, "issue_or_pull_request_thread": 1, "not_resolved_or_not_observed": 4, "human_reported_issue_no_linked_fix": 2, "thread_has_human_issue_without_fix_context": 2}, "source": "graph_query_export", "motif_id": "unlinked_feedback_needs_evidence", "outcomes": {"not_resolved_or_not_observed": 8}, "polarity": "bad", "query_id": "unresolved_feedback", "severity": "medium", "ci_labels": {}, "synthetic": false, "edge_count": 16, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 2, "thread_has_comment": 2, "chain_has_link_quality": 4, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 2, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 2}, "node_count": 12, "node_types": {"repo": 1, "thread": 1, "comment": 2, "fix_outcome": 1, "issue_chain": 1, "link_quality": 4, "comment_chain": 2}, "query_type": "motif_query", "thread_key": "Va3elina/moex-aggregator#25", "issue_number": "25", "quality_tiers": {"unresolved": 4}, "repo_full_name": "Va3elina/moex-aggregator", "training_usage": "negative_or_unresolved", "source_motif_id": "graph-pattern-motif-thread-17705edd2cd7ec6f", "graph_gold_label": "needs_more_evidence", "changed_file_labels": {}}, "text": "Graph query export: Human feedback without linked fix evidence\nQuery id: unresolved_feedback\nQuery type: motif_query\nIntent: Negative/unresolved examples that should not be hallucinated into fixes.\nMotif: unlinked_feedback_needs_evidence\nTraining usage: negative_or_unresolved\nGraph gold label: needs_more_evidence\nRepo: Va3elina/moex-aggregator\nThread: Va3elina/moex-aggregator#25\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: Va3elina/moex-aggregator\nThread: Va3elina/moex-aggregator#25\nGraph gold label: needs_more_evidence\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: Va3elina/moex-aggregator#25\nRepo: Va3elina/moex-aggregator\nIssue/PR number: 25\nGraph consistency label: needs_more_evidence\nNodes: 12\nEdges: 16\nNode types: {'link_quality': 4, 'comment': 2, 'comment_chain': 2, 'thread': 1, 'repo': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'chain_has_link_quality': 4, 'thread_has_comment': 2, 'thread_has_comment_chain': 2, 'comment_has_chain': 2, 'issue_chain_has_comment_chain': 2, 'repo_has_thread': 1, 'thread_has_issue_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'not_resolved_or_not_observed': 4, 'human_reported_issue_no_linked_fix': 2, 'thread_has_human_issue_without_fix_context': 2, 'issue_or_pull_request_thread': 1, 'runtime_failure': 1, 'api_integration_gap': 1}\nOutcomes: {'not_resolved_or_not_observed': 8}\nQuality tiers: {'unresolved': 4}\nCI labels: {}\nCurriculum targets:\n- Teach models to preserve unresolved human feedback instead of hallucinating fixes.\n- Build issue-to-regression examples where no accepted fix exists yet.\nAssumption checks:\n- Can a commit be linked by issue number, SHA, changed path, or time window?\n- If no link exists, is this explicitly labelled unresolved?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/Va3elina/moex-aggregator", "source_id": "graph-query-motif_query-41f2ae19a79f487d", "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": "Va3elina/moex-aggregator", "source_dataset": "graph_queries/unresolved_feedback", "training_usage": "negative_or_unresolved"}}}, {"ruleId": "foundry_unresolved_feedback", "level": "warning", "message": {"text": "Foundry mined unresolved feedback: Va3elina/moex-aggregator"}, "properties": {"repobilityId": 463007, "scanner": "foundry_dataset", "fingerprint": "b2a32407d1ab42e8317035ce98468bd30422b121cb2f3fc66746939dcb149c55", "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": {"api_integration_gap": 1, "verification_or_tests": 2, "data_schema_persistence": 1, "issue_or_pull_request_thread": 1, "not_resolved_or_not_observed": 1, "ambiguous_needs_more_evidence": 3, "comment_has_related_commit_context": 1, "human_reported_issue_no_linked_fix": 1, "thread_has_human_issue_and_fix_context": 2}, "source": "graph_query_export", "motif_id": "unlinked_feedback_needs_evidence", "outcomes": {"not_resolved_or_not_observed": 2, "ambiguous_needs_more_evidence": 6}, "polarity": "bad", "query_id": "unresolved_feedback", "severity": "medium", "ci_labels": {}, "synthetic": false, "edge_count": 18, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 2, "thread_has_comment": 2, "chain_has_link_quality": 4, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 2, "comment_chain_links_commit": 2, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 2}, "node_count": 14, "node_types": {"repo": 1, "commit": 2, "thread": 1, "comment": 2, "fix_outcome": 1, "issue_chain": 1, "link_quality": 4, "comment_chain": 2}, "query_type": "motif_query", "thread_key": "Va3elina/moex-aggregator#24", "issue_number": "24", "quality_tiers": {"unresolved": 1, "weak_supervision": 3}, "repo_full_name": "Va3elina/moex-aggregator", "training_usage": "negative_or_unresolved", "source_motif_id": "graph-pattern-motif-thread-8a6d4379abf0f206", "graph_gold_label": "weak_supervision_needs_review", "changed_file_labels": {}}, "text": "Graph query export: Human feedback without linked fix evidence\nQuery id: unresolved_feedback\nQuery type: motif_query\nIntent: Negative/unresolved examples that should not be hallucinated into fixes.\nMotif: unlinked_feedback_needs_evidence\nTraining usage: negative_or_unresolved\nGraph gold label: weak_supervision_needs_review\nRepo: Va3elina/moex-aggregator\nThread: Va3elina/moex-aggregator#24\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: Va3elina/moex-aggregator\nThread: Va3elina/moex-aggregator#24\nGraph gold label: weak_supervision_needs_review\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: Va3elina/moex-aggregator#24\nRepo: Va3elina/moex-aggregator\nIssue/PR number: 24\nGraph consistency label: weak_supervision_needs_review\nNodes: 14\nEdges: 18\nNode types: {'link_quality': 4, 'comment': 2, 'comment_chain': 2, 'commit': 2, 'thread': 1, 'repo': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'chain_has_link_quality': 4, 'thread_has_comment': 2, 'thread_has_comment_chain': 2, 'comment_has_chain': 2, 'comment_chain_links_commit': 2, 'issue_chain_has_comment_chain': 2, 'repo_has_thread': 1, 'thread_has_issue_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'ambiguous_needs_more_evidence': 3, 'verification_or_tests': 2, 'thread_has_human_issue_and_fix_context': 2, 'issue_or_pull_request_thread': 1, 'data_schema_persistence': 1, 'api_integration_gap': 1, 'comment_has_related_commit_context': 1, 'human_reported_issue_no_linked_fix': 1, 'not_resolved_or_not_observed': 1}\nOutcomes: {'ambiguous_needs_more_evidence': 6, 'not_resolved_or_not_observed': 2}\nQuality tiers: {'weak_supervision': 3, 'unresolved': 1}\nCI labels: {}\nCurriculum targets:\n- Teach models to preserve unresolved human feedback instead of hallucinating fixes.\n- Build issue-to-regression examples where no accepted fix exists yet.\nAssumption checks:\n- Can a commit be linked by issue number, SHA, changed path, or time window?\n- If no link exists, is this explicitly labelled unresolved?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/Va3elina/moex-aggregator", "source_id": "graph-query-motif_query-c81c7ae0c54f8414", "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": "Va3elina/moex-aggregator", "source_dataset": "graph_queries/unresolved_feedback", "training_usage": "negative_or_unresolved"}}}, {"ruleId": "foundry_unresolved_feedback", "level": "warning", "message": {"text": "Foundry mined unresolved feedback: Va3elina/moex-aggregator"}, "properties": {"repobilityId": 463006, "scanner": "foundry_dataset", "fingerprint": "4ccfa18d14555573db9a7adb8a78fc2e2306b47d67c479a9edc82146360b6844", "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, "api_integration_gap": 1, "issue_or_pull_request_thread": 1, "not_resolved_or_not_observed": 4, "human_reported_issue_no_linked_fix": 2, "thread_has_human_issue_without_fix_context": 2}, "source": "graph_query_export", "motif_id": "unlinked_feedback_needs_evidence", "outcomes": {"not_resolved_or_not_observed": 8}, "polarity": "bad", "query_id": "unresolved_feedback", "severity": "medium", "ci_labels": {}, "synthetic": false, "edge_count": 16, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 2, "thread_has_comment": 2, "chain_has_link_quality": 4, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 2, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 2}, "node_count": 12, "node_types": {"repo": 1, "thread": 1, "comment": 2, "fix_outcome": 1, "issue_chain": 1, "link_quality": 4, "comment_chain": 2}, "query_type": "motif_query", "thread_key": "Va3elina/moex-aggregator#23", "issue_number": "23", "quality_tiers": {"unresolved": 4}, "repo_full_name": "Va3elina/moex-aggregator", "training_usage": "negative_or_unresolved", "source_motif_id": "graph-pattern-motif-thread-9ca5b97094d112e7", "graph_gold_label": "needs_more_evidence", "changed_file_labels": {}}, "text": "Graph query export: Human feedback without linked fix evidence\nQuery id: unresolved_feedback\nQuery type: motif_query\nIntent: Negative/unresolved examples that should not be hallucinated into fixes.\nMotif: unlinked_feedback_needs_evidence\nTraining usage: negative_or_unresolved\nGraph gold label: needs_more_evidence\nRepo: Va3elina/moex-aggregator\nThread: Va3elina/moex-aggregator#23\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: Va3elina/moex-aggregator\nThread: Va3elina/moex-aggregator#23\nGraph gold label: needs_more_evidence\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: Va3elina/moex-aggregator#23\nRepo: Va3elina/moex-aggregator\nIssue/PR number: 23\nGraph consistency label: needs_more_evidence\nNodes: 12\nEdges: 16\nNode types: {'link_quality': 4, 'comment': 2, 'comment_chain': 2, 'thread': 1, 'repo': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'chain_has_link_quality': 4, 'thread_has_comment': 2, 'thread_has_comment_chain': 2, 'comment_has_chain': 2, 'issue_chain_has_comment_chain': 2, 'repo_has_thread': 1, 'thread_has_issue_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'not_resolved_or_not_observed': 4, 'human_reported_issue_no_linked_fix': 2, 'thread_has_human_issue_without_fix_context': 2, 'issue_or_pull_request_thread': 1, 'test_ci_gap': 1, 'api_integration_gap': 1}\nOutcomes: {'not_resolved_or_not_observed': 8}\nQuality tiers: {'unresolved': 4}\nCI labels: {}\nCurriculum targets:\n- Teach models to preserve unresolved human feedback instead of hallucinating fixes.\n- Build issue-to-regression examples where no accepted fix exists yet.\nAssumption checks:\n- Can a commit be linked by issue number, SHA, changed path, or time window?\n- If no link exists, is this explicitly labelled unresolved?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/Va3elina/moex-aggregator", "source_id": "graph-query-motif_query-155e7ad74c4743be", "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": "Va3elina/moex-aggregator", "source_dataset": "graph_queries/unresolved_feedback", "training_usage": "negative_or_unresolved"}}}, {"ruleId": "foundry_unresolved_feedback", "level": "warning", "message": {"text": "Foundry mined unresolved feedback: Va3elina/moex-aggregator"}, "properties": {"repobilityId": 463005, "scanner": "foundry_dataset", "fingerprint": "6275e67ce53b2628e7ac4101f6290f1d85b50848743110a3250a0d57d9320469", "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": {"api_integration_gap": 1, "security_auth_secret": 1, "issue_or_pull_request_thread": 1, "not_resolved_or_not_observed": 4, "human_reported_issue_no_linked_fix": 2, "thread_has_human_issue_without_fix_context": 2}, "source": "graph_query_export", "motif_id": "unlinked_feedback_needs_evidence", "outcomes": {"not_resolved_or_not_observed": 8}, "polarity": "bad", "query_id": "unresolved_feedback", "severity": "medium", "ci_labels": {}, "synthetic": false, "edge_count": 16, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 2, "thread_has_comment": 2, "chain_has_link_quality": 4, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 2, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 2}, "node_count": 12, "node_types": {"repo": 1, "thread": 1, "comment": 2, "fix_outcome": 1, "issue_chain": 1, "link_quality": 4, "comment_chain": 2}, "query_type": "motif_query", "thread_key": "Va3elina/moex-aggregator#22", "issue_number": "22", "quality_tiers": {"unresolved": 4}, "repo_full_name": "Va3elina/moex-aggregator", "training_usage": "negative_or_unresolved", "source_motif_id": "graph-pattern-motif-thread-ba615b3f5aafbb71", "graph_gold_label": "needs_more_evidence", "changed_file_labels": {}}, "text": "Graph query export: Human feedback without linked fix evidence\nQuery id: unresolved_feedback\nQuery type: motif_query\nIntent: Negative/unresolved examples that should not be hallucinated into fixes.\nMotif: unlinked_feedback_needs_evidence\nTraining usage: negative_or_unresolved\nGraph gold label: needs_more_evidence\nRepo: Va3elina/moex-aggregator\nThread: Va3elina/moex-aggregator#22\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: Va3elina/moex-aggregator\nThread: Va3elina/moex-aggregator#22\nGraph gold label: needs_more_evidence\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: Va3elina/moex-aggregator#22\nRepo: Va3elina/moex-aggregator\nIssue/PR number: 22\nGraph consistency label: needs_more_evidence\nNodes: 12\nEdges: 16\nNode types: {'link_quality': 4, 'comment': 2, 'comment_chain': 2, 'thread': 1, 'repo': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'chain_has_link_quality': 4, 'thread_has_comment': 2, 'thread_has_comment_chain': 2, 'comment_has_chain': 2, 'issue_chain_has_comment_chain': 2, 'repo_has_thread': 1, 'thread_has_issue_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'not_resolved_or_not_observed': 4, 'human_reported_issue_no_linked_fix': 2, 'thread_has_human_issue_without_fix_context': 2, 'issue_or_pull_request_thread': 1, 'security_auth_secret': 1, 'api_integration_gap': 1}\nOutcomes: {'not_resolved_or_not_observed': 8}\nQuality tiers: {'unresolved': 4}\nCI labels: {}\nCurriculum targets:\n- Teach models to preserve unresolved human feedback instead of hallucinating fixes.\n- Build issue-to-regression examples where no accepted fix exists yet.\nAssumption checks:\n- Can a commit be linked by issue number, SHA, changed path, or time window?\n- If no link exists, is this explicitly labelled unresolved?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/Va3elina/moex-aggregator", "source_id": "graph-query-motif_query-12fff89de1e2f7e3", "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": "Va3elina/moex-aggregator", "source_dataset": "graph_queries/unresolved_feedback", "training_usage": "negative_or_unresolved"}}}, {"ruleId": "foundry_unresolved_feedback", "level": "warning", "message": {"text": "Foundry mined unresolved feedback: Va3elina/moex-aggregator"}, "properties": {"repobilityId": 463004, "scanner": "foundry_dataset", "fingerprint": "3634a49140e96befc5cc0bce192b876eba969e31cfd980639aa501b09bb0225b", "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, "api_integration_gap": 1, "issue_or_pull_request_thread": 1, "not_resolved_or_not_observed": 4, "human_reported_issue_no_linked_fix": 2, "thread_has_human_issue_without_fix_context": 2}, "source": "graph_query_export", "motif_id": "unlinked_feedback_needs_evidence", "outcomes": {"not_resolved_or_not_observed": 8}, "polarity": "bad", "query_id": "unresolved_feedback", "severity": "medium", "ci_labels": {}, "synthetic": false, "edge_count": 16, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 2, "thread_has_comment": 2, "chain_has_link_quality": 4, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 2, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 2}, "node_count": 12, "node_types": {"repo": 1, "thread": 1, "comment": 2, "fix_outcome": 1, "issue_chain": 1, "link_quality": 4, "comment_chain": 2}, "query_type": "motif_query", "thread_key": "Va3elina/moex-aggregator#21", "issue_number": "21", "quality_tiers": {"unresolved": 4}, "repo_full_name": "Va3elina/moex-aggregator", "training_usage": "negative_or_unresolved", "source_motif_id": "graph-pattern-motif-thread-76d4af98279a5b1f", "graph_gold_label": "needs_more_evidence", "changed_file_labels": {}}, "text": "Graph query export: Human feedback without linked fix evidence\nQuery id: unresolved_feedback\nQuery type: motif_query\nIntent: Negative/unresolved examples that should not be hallucinated into fixes.\nMotif: unlinked_feedback_needs_evidence\nTraining usage: negative_or_unresolved\nGraph gold label: needs_more_evidence\nRepo: Va3elina/moex-aggregator\nThread: Va3elina/moex-aggregator#21\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: Va3elina/moex-aggregator\nThread: Va3elina/moex-aggregator#21\nGraph gold label: needs_more_evidence\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: Va3elina/moex-aggregator#21\nRepo: Va3elina/moex-aggregator\nIssue/PR number: 21\nGraph consistency label: needs_more_evidence\nNodes: 12\nEdges: 16\nNode types: {'link_quality': 4, 'comment': 2, 'comment_chain': 2, 'thread': 1, 'repo': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'chain_has_link_quality': 4, 'thread_has_comment': 2, 'thread_has_comment_chain': 2, 'comment_has_chain': 2, 'issue_chain_has_comment_chain': 2, 'repo_has_thread': 1, 'thread_has_issue_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'not_resolved_or_not_observed': 4, 'human_reported_issue_no_linked_fix': 2, 'thread_has_human_issue_without_fix_context': 2, 'issue_or_pull_request_thread': 1, 'test_ci_gap': 1, 'api_integration_gap': 1}\nOutcomes: {'not_resolved_or_not_observed': 8}\nQuality tiers: {'unresolved': 4}\nCI labels: {}\nCurriculum targets:\n- Teach models to preserve unresolved human feedback instead of hallucinating fixes.\n- Build issue-to-regression examples where no accepted fix exists yet.\nAssumption checks:\n- Can a commit be linked by issue number, SHA, changed path, or time window?\n- If no link exists, is this explicitly labelled unresolved?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/Va3elina/moex-aggregator", "source_id": "graph-query-motif_query-ee3420fb96bdd53b", "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": "Va3elina/moex-aggregator", "source_dataset": "graph_queries/unresolved_feedback", "training_usage": "negative_or_unresolved"}}}, {"ruleId": "foundry_unresolved_feedback", "level": "warning", "message": {"text": "Foundry mined unresolved feedback: Va3elina/moex-aggregator"}, "properties": {"repobilityId": 463003, "scanner": "foundry_dataset", "fingerprint": "cbec28601237e009910c0afcd5c3ba889a3cff1ea74a6b3709b6966c308ebb00", "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, "api_integration_gap": 1, "issue_or_pull_request_thread": 1, "not_resolved_or_not_observed": 4, "human_reported_issue_no_linked_fix": 2, "thread_has_human_issue_without_fix_context": 2}, "source": "graph_query_export", "motif_id": "unlinked_feedback_needs_evidence", "outcomes": {"not_resolved_or_not_observed": 8}, "polarity": "bad", "query_id": "unresolved_feedback", "severity": "medium", "ci_labels": {}, "synthetic": false, "edge_count": 16, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 2, "thread_has_comment": 2, "chain_has_link_quality": 4, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 2, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 2}, "node_count": 12, "node_types": {"repo": 1, "thread": 1, "comment": 2, "fix_outcome": 1, "issue_chain": 1, "link_quality": 4, "comment_chain": 2}, "query_type": "motif_query", "thread_key": "Va3elina/moex-aggregator#20", "issue_number": "20", "quality_tiers": {"unresolved": 4}, "repo_full_name": "Va3elina/moex-aggregator", "training_usage": "negative_or_unresolved", "source_motif_id": "graph-pattern-motif-thread-9d5f41cd27dbc259", "graph_gold_label": "needs_more_evidence", "changed_file_labels": {}}, "text": "Graph query export: Human feedback without linked fix evidence\nQuery id: unresolved_feedback\nQuery type: motif_query\nIntent: Negative/unresolved examples that should not be hallucinated into fixes.\nMotif: unlinked_feedback_needs_evidence\nTraining usage: negative_or_unresolved\nGraph gold label: needs_more_evidence\nRepo: Va3elina/moex-aggregator\nThread: Va3elina/moex-aggregator#20\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: Va3elina/moex-aggregator\nThread: Va3elina/moex-aggregator#20\nGraph gold label: needs_more_evidence\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: Va3elina/moex-aggregator#20\nRepo: Va3elina/moex-aggregator\nIssue/PR number: 20\nGraph consistency label: needs_more_evidence\nNodes: 12\nEdges: 16\nNode types: {'link_quality': 4, 'comment': 2, 'comment_chain': 2, 'thread': 1, 'repo': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'chain_has_link_quality': 4, 'thread_has_comment': 2, 'thread_has_comment_chain': 2, 'comment_has_chain': 2, 'issue_chain_has_comment_chain': 2, 'repo_has_thread': 1, 'thread_has_issue_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'not_resolved_or_not_observed': 4, 'human_reported_issue_no_linked_fix': 2, 'thread_has_human_issue_without_fix_context': 2, 'issue_or_pull_request_thread': 1, 'test_ci_gap': 1, 'api_integration_gap': 1}\nOutcomes: {'not_resolved_or_not_observed': 8}\nQuality tiers: {'unresolved': 4}\nCI labels: {}\nCurriculum targets:\n- Teach models to preserve unresolved human feedback instead of hallucinating fixes.\n- Build issue-to-regression examples where no accepted fix exists yet.\nAssumption checks:\n- Can a commit be linked by issue number, SHA, changed path, or time window?\n- If no link exists, is this explicitly labelled unresolved?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/Va3elina/moex-aggregator", "source_id": "graph-query-motif_query-564dfd785758834e", "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": "Va3elina/moex-aggregator", "source_dataset": "graph_queries/unresolved_feedback", "training_usage": "negative_or_unresolved"}}}, {"ruleId": "foundry_unresolved_feedback", "level": "warning", "message": {"text": "Foundry mined unresolved feedback: Va3elina/moex-aggregator"}, "properties": {"repobilityId": 463002, "scanner": "foundry_dataset", "fingerprint": "129883d34545c827c670f18d2d34267ea16fda4ffe51c4e053a069ccb2ccb3f3", "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": {"api_integration_gap": 1, "issue_or_pull_request_thread": 1, "not_resolved_or_not_observed": 3, "human_reported_issue_no_linked_fix": 1, "thread_has_human_issue_without_fix_context": 2}, "source": "graph_query_export", "motif_id": "unlinked_feedback_needs_evidence", "outcomes": {"not_resolved_or_not_observed": 6}, "polarity": "bad", "query_id": "unresolved_feedback", "severity": "medium", "ci_labels": {}, "synthetic": false, "edge_count": 11, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 1, "thread_has_comment": 1, "chain_has_link_quality": 3, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 1, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 1}, "node_count": 9, "node_types": {"repo": 1, "thread": 1, "comment": 1, "fix_outcome": 1, "issue_chain": 1, "link_quality": 3, "comment_chain": 1}, "query_type": "motif_query", "thread_key": "Va3elina/moex-aggregator#2", "issue_number": "2", "quality_tiers": {"unresolved": 3}, "repo_full_name": "Va3elina/moex-aggregator", "training_usage": "negative_or_unresolved", "source_motif_id": "graph-pattern-motif-thread-31eeefb467c60a8f", "graph_gold_label": "needs_more_evidence", "changed_file_labels": {}}, "text": "Graph query export: Human feedback without linked fix evidence\nQuery id: unresolved_feedback\nQuery type: motif_query\nIntent: Negative/unresolved examples that should not be hallucinated into fixes.\nMotif: unlinked_feedback_needs_evidence\nTraining usage: negative_or_unresolved\nGraph gold label: needs_more_evidence\nRepo: Va3elina/moex-aggregator\nThread: Va3elina/moex-aggregator#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: Va3elina/moex-aggregator\nThread: Va3elina/moex-aggregator#2\nGraph gold label: needs_more_evidence\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: Va3elina/moex-aggregator#2\nRepo: Va3elina/moex-aggregator\nIssue/PR number: 2\nGraph consistency label: needs_more_evidence\nNodes: 9\nEdges: 11\nNode types: {'link_quality': 3, 'thread': 1, 'repo': 1, 'comment': 1, 'comment_chain': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'chain_has_link_quality': 3, 'repo_has_thread': 1, 'thread_has_comment': 1, 'thread_has_comment_chain': 1, 'comment_has_chain': 1, 'thread_has_issue_chain': 1, 'issue_chain_has_comment_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'not_resolved_or_not_observed': 3, 'thread_has_human_issue_without_fix_context': 2, 'issue_or_pull_request_thread': 1, 'api_integration_gap': 1, 'human_reported_issue_no_linked_fix': 1}\nOutcomes: {'not_resolved_or_not_observed': 6}\nQuality tiers: {'unresolved': 3}\nCI labels: {}\nCurriculum targets:\n- Teach models to preserve unresolved human feedback instead of hallucinating fixes.\n- Build issue-to-regression examples where no accepted fix exists yet.\nAssumption checks:\n- Can a commit be linked by issue number, SHA, changed path, or time window?\n- If no link exists, is this explicitly labelled unresolved?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/Va3elina/moex-aggregator", "source_id": "graph-query-motif_query-f35c6872ea9eca61", "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": "Va3elina/moex-aggregator", "source_dataset": "graph_queries/unresolved_feedback", "training_usage": "negative_or_unresolved"}}}, {"ruleId": "foundry_unresolved_feedback", "level": "warning", "message": {"text": "Foundry mined unresolved feedback: Va3elina/moex-aggregator"}, "properties": {"repobilityId": 463001, "scanner": "foundry_dataset", "fingerprint": "bf1e45a2ee75c1dbc0bcb233b6b8c76c7149f1a7c9c90de9f7cbddb55b0208fe", "category": "practices", "severity": "medium", "confidence": 0.7, "triageState": "open", "verdict": "needs_review", "isResolved": false, "reason": "Imported from mined Foundry/Fable5 evidence with real GitHub/source provenance. Review source_id before acting.", "evidence": {"meta": {"kind": "graph_query_record", "title": "Human feedback without linked fix evidence", "intent": "Negative/unresolved examples that should not be hallucinated into fixes.", "labels": {"test_ci_gap": 2, "issue_or_pull_request_thread": 1, "not_resolved_or_not_observed": 4, "human_reported_issue_no_linked_fix": 2, "thread_has_human_issue_without_fix_context": 2}, "source": "graph_query_export", "motif_id": "unlinked_feedback_needs_evidence", "outcomes": {"not_resolved_or_not_observed": 8}, "polarity": "bad", "query_id": "unresolved_feedback", "severity": "medium", "ci_labels": {}, "synthetic": false, "edge_count": 16, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 2, "thread_has_comment": 2, "chain_has_link_quality": 4, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 2, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 2}, "node_count": 12, "node_types": {"repo": 1, "thread": 1, "comment": 2, "fix_outcome": 1, "issue_chain": 1, "link_quality": 4, "comment_chain": 2}, "query_type": "motif_query", "thread_key": "Va3elina/moex-aggregator#19", "issue_number": "19", "quality_tiers": {"unresolved": 4}, "repo_full_name": "Va3elina/moex-aggregator", "training_usage": "negative_or_unresolved", "source_motif_id": "graph-pattern-motif-thread-2c45ea1846eda4ad", "graph_gold_label": "needs_more_evidence", "changed_file_labels": {}}, "text": "Graph query export: Human feedback without linked fix evidence\nQuery id: unresolved_feedback\nQuery type: motif_query\nIntent: Negative/unresolved examples that should not be hallucinated into fixes.\nMotif: unlinked_feedback_needs_evidence\nTraining usage: negative_or_unresolved\nGraph gold label: needs_more_evidence\nRepo: Va3elina/moex-aggregator\nThread: Va3elina/moex-aggregator#19\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: Va3elina/moex-aggregator\nThread: Va3elina/moex-aggregator#19\nGraph gold label: needs_more_evidence\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: Va3elina/moex-aggregator#19\nRepo: Va3elina/moex-aggregator\nIssue/PR number: 19\nGraph consistency label: needs_more_evidence\nNodes: 12\nEdges: 16\nNode types: {'link_quality': 4, 'comment': 2, 'comment_chain': 2, 'thread': 1, 'repo': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'chain_has_link_quality': 4, 'thread_has_comment': 2, 'thread_has_comment_chain': 2, 'comment_has_chain': 2, 'issue_chain_has_comment_chain': 2, 'repo_has_thread': 1, 'thread_has_issue_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'not_resolved_or_not_observed': 4, 'test_ci_gap': 2, 'human_reported_issue_no_linked_fix': 2, 'thread_has_human_issue_without_fix_context': 2, 'issue_or_pull_request_thread': 1}\nOutcomes: {'not_resolved_or_not_observed': 8}\nQuality tiers: {'unresolved': 4}\nCI labels: {}\nCurriculum targets:\n- Teach models to preserve unresolved human feedback instead of hallucinating fixes.\n- Build issue-to-regression examples where no accepted fix exists yet.\nAssumption checks:\n- Can a commit be linked by issue number, SHA, changed path, or time window?\n- If no link exists, is this explicitly labelled unresolved?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/Va3elina/moex-aggregator", "source_id": "graph-query-motif_query-faff4dde60862eec", "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": "Va3elina/moex-aggregator", "source_dataset": "graph_queries/unresolved_feedback", "training_usage": "negative_or_unresolved"}}}, {"ruleId": "foundry_unresolved_feedback", "level": "warning", "message": {"text": "Foundry mined unresolved feedback: Va3elina/moex-aggregator"}, "properties": {"repobilityId": 463000, "scanner": "foundry_dataset", "fingerprint": "c812f68203f238700528c7fa289058c1cd3dc78a7b5a373164f9dce80d66799f", "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, "build_install_failure": 1, "issue_or_pull_request_thread": 1, "not_resolved_or_not_observed": 4, "human_reported_issue_no_linked_fix": 2, "thread_has_human_issue_without_fix_context": 2}, "source": "graph_query_export", "motif_id": "unlinked_feedback_needs_evidence", "outcomes": {"not_resolved_or_not_observed": 8}, "polarity": "bad", "query_id": "unresolved_feedback", "severity": "medium", "ci_labels": {}, "synthetic": false, "edge_count": 16, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 2, "thread_has_comment": 2, "chain_has_link_quality": 4, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 2, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 2}, "node_count": 12, "node_types": {"repo": 1, "thread": 1, "comment": 2, "fix_outcome": 1, "issue_chain": 1, "link_quality": 4, "comment_chain": 2}, "query_type": "motif_query", "thread_key": "Va3elina/moex-aggregator#18", "issue_number": "18", "quality_tiers": {"unresolved": 4}, "repo_full_name": "Va3elina/moex-aggregator", "training_usage": "negative_or_unresolved", "source_motif_id": "graph-pattern-motif-thread-11c981bd0528a8b8", "graph_gold_label": "needs_more_evidence", "changed_file_labels": {}}, "text": "Graph query export: Human feedback without linked fix evidence\nQuery id: unresolved_feedback\nQuery type: motif_query\nIntent: Negative/unresolved examples that should not be hallucinated into fixes.\nMotif: unlinked_feedback_needs_evidence\nTraining usage: negative_or_unresolved\nGraph gold label: needs_more_evidence\nRepo: Va3elina/moex-aggregator\nThread: Va3elina/moex-aggregator#18\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: Va3elina/moex-aggregator\nThread: Va3elina/moex-aggregator#18\nGraph gold label: needs_more_evidence\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: Va3elina/moex-aggregator#18\nRepo: Va3elina/moex-aggregator\nIssue/PR number: 18\nGraph consistency label: needs_more_evidence\nNodes: 12\nEdges: 16\nNode types: {'link_quality': 4, 'comment': 2, 'comment_chain': 2, 'thread': 1, 'repo': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'chain_has_link_quality': 4, 'thread_has_comment': 2, 'thread_has_comment_chain': 2, 'comment_has_chain': 2, 'issue_chain_has_comment_chain': 2, 'repo_has_thread': 1, 'thread_has_issue_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'not_resolved_or_not_observed': 4, 'human_reported_issue_no_linked_fix': 2, 'thread_has_human_issue_without_fix_context': 2, 'issue_or_pull_request_thread': 1, 'build_install_failure': 1, 'test_ci_gap': 1}\nOutcomes: {'not_resolved_or_not_observed': 8}\nQuality tiers: {'unresolved': 4}\nCI labels: {}\nCurriculum targets:\n- Teach models to preserve unresolved human feedback instead of hallucinating fixes.\n- Build issue-to-regression examples where no accepted fix exists yet.\nAssumption checks:\n- Can a commit be linked by issue number, SHA, changed path, or time window?\n- If no link exists, is this explicitly labelled unresolved?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/Va3elina/moex-aggregator", "source_id": "graph-query-motif_query-b123a258f859bee5", "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": "Va3elina/moex-aggregator", "source_dataset": "graph_queries/unresolved_feedback", "training_usage": "negative_or_unresolved"}}}, {"ruleId": "foundry_unresolved_feedback", "level": "warning", "message": {"text": "Foundry mined unresolved feedback: Va3elina/moex-aggregator"}, "properties": {"repobilityId": 462999, "scanner": "foundry_dataset", "fingerprint": "cee5d311bd23ef106f0ce22be6d560ed3ce5d1f2e9c03e69a3d9453f7fade9a4", "category": "practices", "severity": "medium", "confidence": 0.7, "triageState": "open", "verdict": "needs_review", "isResolved": false, "reason": "Imported from mined Foundry/Fable5 evidence with real GitHub/source provenance. Review source_id before acting.", "evidence": {"meta": {"kind": "graph_query_record", "title": "Human feedback without linked fix evidence", "intent": "Negative/unresolved examples that should not be hallucinated into fixes.", "labels": {"test_ci_gap": 2, "issue_or_pull_request_thread": 1, "not_resolved_or_not_observed": 4, "human_reported_issue_no_linked_fix": 2, "thread_has_human_issue_without_fix_context": 2}, "source": "graph_query_export", "motif_id": "unlinked_feedback_needs_evidence", "outcomes": {"not_resolved_or_not_observed": 8}, "polarity": "bad", "query_id": "unresolved_feedback", "severity": "medium", "ci_labels": {}, "synthetic": false, "edge_count": 16, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 2, "thread_has_comment": 2, "chain_has_link_quality": 4, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 2, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 2}, "node_count": 12, "node_types": {"repo": 1, "thread": 1, "comment": 2, "fix_outcome": 1, "issue_chain": 1, "link_quality": 4, "comment_chain": 2}, "query_type": "motif_query", "thread_key": "Va3elina/moex-aggregator#17", "issue_number": "17", "quality_tiers": {"unresolved": 4}, "repo_full_name": "Va3elina/moex-aggregator", "training_usage": "negative_or_unresolved", "source_motif_id": "graph-pattern-motif-thread-d2dd13ec25c27d6a", "graph_gold_label": "needs_more_evidence", "changed_file_labels": {}}, "text": "Graph query export: Human feedback without linked fix evidence\nQuery id: unresolved_feedback\nQuery type: motif_query\nIntent: Negative/unresolved examples that should not be hallucinated into fixes.\nMotif: unlinked_feedback_needs_evidence\nTraining usage: negative_or_unresolved\nGraph gold label: needs_more_evidence\nRepo: Va3elina/moex-aggregator\nThread: Va3elina/moex-aggregator#17\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: Va3elina/moex-aggregator\nThread: Va3elina/moex-aggregator#17\nGraph gold label: needs_more_evidence\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: Va3elina/moex-aggregator#17\nRepo: Va3elina/moex-aggregator\nIssue/PR number: 17\nGraph consistency label: needs_more_evidence\nNodes: 12\nEdges: 16\nNode types: {'link_quality': 4, 'comment': 2, 'comment_chain': 2, 'thread': 1, 'repo': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'chain_has_link_quality': 4, 'thread_has_comment': 2, 'thread_has_comment_chain': 2, 'comment_has_chain': 2, 'issue_chain_has_comment_chain': 2, 'repo_has_thread': 1, 'thread_has_issue_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'not_resolved_or_not_observed': 4, 'test_ci_gap': 2, 'human_reported_issue_no_linked_fix': 2, 'thread_has_human_issue_without_fix_context': 2, 'issue_or_pull_request_thread': 1}\nOutcomes: {'not_resolved_or_not_observed': 8}\nQuality tiers: {'unresolved': 4}\nCI labels: {}\nCurriculum targets:\n- Teach models to preserve unresolved human feedback instead of hallucinating fixes.\n- Build issue-to-regression examples where no accepted fix exists yet.\nAssumption checks:\n- Can a commit be linked by issue number, SHA, changed path, or time window?\n- If no link exists, is this explicitly labelled unresolved?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/Va3elina/moex-aggregator", "source_id": "graph-query-motif_query-997d1adf7f9d4800", "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": "Va3elina/moex-aggregator", "source_dataset": "graph_queries/unresolved_feedback", "training_usage": "negative_or_unresolved"}}}, {"ruleId": "foundry_unresolved_feedback", "level": "warning", "message": {"text": "Foundry mined unresolved feedback: Va3elina/moex-aggregator"}, "properties": {"repobilityId": 462998, "scanner": "foundry_dataset", "fingerprint": "2baaff2f5c3a5f2eb08474509c658015946dc29345d963fe2132155ac14d6870", "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, "security_auth_secret": 1, "issue_or_pull_request_thread": 1, "not_resolved_or_not_observed": 4, "human_reported_issue_no_linked_fix": 2, "thread_has_human_issue_without_fix_context": 2}, "source": "graph_query_export", "motif_id": "unlinked_feedback_needs_evidence", "outcomes": {"not_resolved_or_not_observed": 8}, "polarity": "bad", "query_id": "unresolved_feedback", "severity": "medium", "ci_labels": {}, "synthetic": false, "edge_count": 16, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 2, "thread_has_comment": 2, "chain_has_link_quality": 4, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 2, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 2}, "node_count": 12, "node_types": {"repo": 1, "thread": 1, "comment": 2, "fix_outcome": 1, "issue_chain": 1, "link_quality": 4, "comment_chain": 2}, "query_type": "motif_query", "thread_key": "Va3elina/moex-aggregator#16", "issue_number": "16", "quality_tiers": {"unresolved": 4}, "repo_full_name": "Va3elina/moex-aggregator", "training_usage": "negative_or_unresolved", "source_motif_id": "graph-pattern-motif-thread-60ba501031503612", "graph_gold_label": "needs_more_evidence", "changed_file_labels": {}}, "text": "Graph query export: Human feedback without linked fix evidence\nQuery id: unresolved_feedback\nQuery type: motif_query\nIntent: Negative/unresolved examples that should not be hallucinated into fixes.\nMotif: unlinked_feedback_needs_evidence\nTraining usage: negative_or_unresolved\nGraph gold label: needs_more_evidence\nRepo: Va3elina/moex-aggregator\nThread: Va3elina/moex-aggregator#16\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: Va3elina/moex-aggregator\nThread: Va3elina/moex-aggregator#16\nGraph gold label: needs_more_evidence\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: Va3elina/moex-aggregator#16\nRepo: Va3elina/moex-aggregator\nIssue/PR number: 16\nGraph consistency label: needs_more_evidence\nNodes: 12\nEdges: 16\nNode types: {'link_quality': 4, 'comment': 2, 'comment_chain': 2, 'thread': 1, 'repo': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'chain_has_link_quality': 4, 'thread_has_comment': 2, 'thread_has_comment_chain': 2, 'comment_has_chain': 2, 'issue_chain_has_comment_chain': 2, 'repo_has_thread': 1, 'thread_has_issue_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'not_resolved_or_not_observed': 4, 'human_reported_issue_no_linked_fix': 2, 'thread_has_human_issue_without_fix_context': 2, 'issue_or_pull_request_thread': 1, 'security_auth_secret': 1, 'test_ci_gap': 1}\nOutcomes: {'not_resolved_or_not_observed': 8}\nQuality tiers: {'unresolved': 4}\nCI labels: {}\nCurriculum targets:\n- Teach models to preserve unresolved human feedback instead of hallucinating fixes.\n- Build issue-to-regression examples where no accepted fix exists yet.\nAssumption checks:\n- Can a commit be linked by issue number, SHA, changed path, or time window?\n- If no link exists, is this explicitly labelled unresolved?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/Va3elina/moex-aggregator", "source_id": "graph-query-motif_query-69f58d099800a528", "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": "Va3elina/moex-aggregator", "source_dataset": "graph_queries/unresolved_feedback", "training_usage": "negative_or_unresolved"}}}, {"ruleId": "foundry_unresolved_feedback", "level": "warning", "message": {"text": "Foundry mined unresolved feedback: Va3elina/moex-aggregator"}, "properties": {"repobilityId": 462997, "scanner": "foundry_dataset", "fingerprint": "e83b7691ae08005d1a07623473de71bfa9c3d246835d8183c3a74ab56e158eaa", "category": "practices", "severity": "medium", "confidence": 0.7, "triageState": "open", "verdict": "needs_review", "isResolved": false, "reason": "Imported from mined Foundry/Fable5 evidence with real GitHub/source provenance. Review source_id before acting.", "evidence": {"meta": {"kind": "graph_query_record", "title": "Human feedback without linked fix evidence", "intent": "Negative/unresolved examples that should not be hallucinated into fixes.", "labels": {"test_ci_gap": 2, "issue_or_pull_request_thread": 1, "not_resolved_or_not_observed": 4, "human_reported_issue_no_linked_fix": 2, "thread_has_human_issue_without_fix_context": 2}, "source": "graph_query_export", "motif_id": "unlinked_feedback_needs_evidence", "outcomes": {"not_resolved_or_not_observed": 8}, "polarity": "bad", "query_id": "unresolved_feedback", "severity": "medium", "ci_labels": {}, "synthetic": false, "edge_count": 16, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 2, "thread_has_comment": 2, "chain_has_link_quality": 4, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 2, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 2}, "node_count": 12, "node_types": {"repo": 1, "thread": 1, "comment": 2, "fix_outcome": 1, "issue_chain": 1, "link_quality": 4, "comment_chain": 2}, "query_type": "motif_query", "thread_key": "Va3elina/moex-aggregator#15", "issue_number": "15", "quality_tiers": {"unresolved": 4}, "repo_full_name": "Va3elina/moex-aggregator", "training_usage": "negative_or_unresolved", "source_motif_id": "graph-pattern-motif-thread-6ce94a418babb48a", "graph_gold_label": "needs_more_evidence", "changed_file_labels": {}}, "text": "Graph query export: Human feedback without linked fix evidence\nQuery id: unresolved_feedback\nQuery type: motif_query\nIntent: Negative/unresolved examples that should not be hallucinated into fixes.\nMotif: unlinked_feedback_needs_evidence\nTraining usage: negative_or_unresolved\nGraph gold label: needs_more_evidence\nRepo: Va3elina/moex-aggregator\nThread: Va3elina/moex-aggregator#15\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: Va3elina/moex-aggregator\nThread: Va3elina/moex-aggregator#15\nGraph gold label: needs_more_evidence\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: Va3elina/moex-aggregator#15\nRepo: Va3elina/moex-aggregator\nIssue/PR number: 15\nGraph consistency label: needs_more_evidence\nNodes: 12\nEdges: 16\nNode types: {'link_quality': 4, 'comment': 2, 'comment_chain': 2, 'thread': 1, 'repo': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'chain_has_link_quality': 4, 'thread_has_comment': 2, 'thread_has_comment_chain': 2, 'comment_has_chain': 2, 'issue_chain_has_comment_chain': 2, 'repo_has_thread': 1, 'thread_has_issue_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'not_resolved_or_not_observed': 4, 'test_ci_gap': 2, 'human_reported_issue_no_linked_fix': 2, 'thread_has_human_issue_without_fix_context': 2, 'issue_or_pull_request_thread': 1}\nOutcomes: {'not_resolved_or_not_observed': 8}\nQuality tiers: {'unresolved': 4}\nCI labels: {}\nCurriculum targets:\n- Teach models to preserve unresolved human feedback instead of hallucinating fixes.\n- Build issue-to-regression examples where no accepted fix exists yet.\nAssumption checks:\n- Can a commit be linked by issue number, SHA, changed path, or time window?\n- If no link exists, is this explicitly labelled unresolved?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/Va3elina/moex-aggregator", "source_id": "graph-query-motif_query-b2a700a10c421705", "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": "Va3elina/moex-aggregator", "source_dataset": "graph_queries/unresolved_feedback", "training_usage": "negative_or_unresolved"}}}, {"ruleId": "foundry_unresolved_feedback", "level": "warning", "message": {"text": "Foundry mined unresolved feedback: Va3elina/moex-aggregator"}, "properties": {"repobilityId": 462996, "scanner": "foundry_dataset", "fingerprint": "e269b9197ffa28e9e57f78401b64e23085e3c64216216986dd80eb66c30b91e6", "category": "practices", "severity": "medium", "confidence": 0.7, "triageState": "open", "verdict": "needs_review", "isResolved": false, "reason": "Imported from mined Foundry/Fable5 evidence with real GitHub/source provenance. Review source_id before acting.", "evidence": {"meta": {"kind": "graph_query_record", "title": "Human feedback without linked fix evidence", "intent": "Negative/unresolved examples that should not be hallucinated into fixes.", "labels": {"security_auth_secret": 1, "agent_instruction_gap": 1, "issue_or_pull_request_thread": 1, "not_resolved_or_not_observed": 4, "human_reported_issue_no_linked_fix": 2, "thread_has_human_issue_without_fix_context": 2}, "source": "graph_query_export", "motif_id": "unlinked_feedback_needs_evidence", "outcomes": {"not_resolved_or_not_observed": 8}, "polarity": "bad", "query_id": "unresolved_feedback", "severity": "medium", "ci_labels": {}, "synthetic": false, "edge_count": 16, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 2, "thread_has_comment": 2, "chain_has_link_quality": 4, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 2, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 2}, "node_count": 12, "node_types": {"repo": 1, "thread": 1, "comment": 2, "fix_outcome": 1, "issue_chain": 1, "link_quality": 4, "comment_chain": 2}, "query_type": "motif_query", "thread_key": "Va3elina/moex-aggregator#1", "issue_number": "1", "quality_tiers": {"unresolved": 4}, "repo_full_name": "Va3elina/moex-aggregator", "training_usage": "negative_or_unresolved", "source_motif_id": "graph-pattern-motif-thread-38113cfd7341b593", "graph_gold_label": "needs_more_evidence", "changed_file_labels": {}}, "text": "Graph query export: Human feedback without linked fix evidence\nQuery id: unresolved_feedback\nQuery type: motif_query\nIntent: Negative/unresolved examples that should not be hallucinated into fixes.\nMotif: unlinked_feedback_needs_evidence\nTraining usage: negative_or_unresolved\nGraph gold label: needs_more_evidence\nRepo: Va3elina/moex-aggregator\nThread: Va3elina/moex-aggregator#1\nEvidence:\nGraph motif: Human feedback exists without a linked fix\nMotif id: unlinked_feedback_needs_evidence\nPolarity: bad\nTraining usage: negative_or_unresolved\nSeverity: medium\nRepo: Va3elina/moex-aggregator\nThread: Va3elina/moex-aggregator#1\nGraph gold label: needs_more_evidence\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: Va3elina/moex-aggregator#1\nRepo: Va3elina/moex-aggregator\nIssue/PR number: 1\nGraph consistency label: needs_more_evidence\nNodes: 12\nEdges: 16\nNode types: {'link_quality': 4, 'comment': 2, 'comment_chain': 2, 'thread': 1, 'repo': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'chain_has_link_quality': 4, 'thread_has_comment': 2, 'thread_has_comment_chain': 2, 'comment_has_chain': 2, 'issue_chain_has_comment_chain': 2, 'repo_has_thread': 1, 'thread_has_issue_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'not_resolved_or_not_observed': 4, 'human_reported_issue_no_linked_fix': 2, 'thread_has_human_issue_without_fix_context': 2, 'issue_or_pull_request_thread': 1, 'agent_instruction_gap': 1, 'security_auth_secret': 1}\nOutcomes: {'not_resolved_or_not_observed': 8}\nQuality tiers: {'unresolved': 4}\nCI labels: {}\nCurriculum targets:\n- Teach models to preserve unresolved human feedback instead of hallucinating fixes.\n- Build issue-to-regression examples where no accepted fix exists yet.\nAssumption checks:\n- Can a commit be linked by issue number, SHA, changed path, or time window?\n- If no link exists, is this explicitly labelled unresolved?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/Va3elina/moex-aggregator", "source_id": "graph-query-motif_query-f8a83062d7f27d57", "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": "Va3elina/moex-aggregator", "source_dataset": "graph_queries/unresolved_feedback", "training_usage": "negative_or_unresolved"}}}, {"ruleId": "foundry_assumption_check", "level": "warning", "message": {"text": "Foundry mined assumption checks: Va3elina/moex-aggregator"}, "properties": {"repobilityId": 434445, "scanner": "foundry_dataset", "fingerprint": "aa4e8f2bf81c2935f86ce6cfbf9557f9ebe0c45fdcb76bc87ea0bbc710c7910c", "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": "Va3elina/moex-aggregator#9", "human_labels": ["agent_instruction_gap"], "issue_number": "9", "thread_label": "thread_has_human_issue_and_fix_context", "outcome_label": "claimed_resolved_unverified", "source_backed": true, "max_confidence": 0.92, "repo_full_name": "Va3elina/moex-aggregator", "training_usage": "gold_candidate", "confidence_tier": "high_confidence", "source_chain_id": "evidence-chain-issue_chain-c583f410b95f7bad", "helicopter_views": {"schemas": 2}, "artifact_families": {"ci": 3, "docs": 5}, "source_chain_kind": "issue_chain", "changed_file_count": 0, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {}, "linked_commit_count": 5, "helicopter_view_count": 2, "source_artifact_count": 8, "classification_reasons": ["source_graph_has_real_artifacts", "source_graph_has_verification_artifacts", "repo_has_isolated_helicopter_views", "link_quality_high_confidence"], "linked_ci_commit_count": 0, "verification_artifact_count": 3, "design_schema_api_artifact_count": 0}, "text": "Comment chain pattern product: assumption_checks\nRepo: Va3elina/moex-aggregator\nThread: Va3elina/moex-aggregator#9\nOutcome: claimed_resolved_unverified\nThread label: thread_has_human_issue_and_fix_context\nSource graph label: source_backed_multi_signal_graph\nReasons: source_graph_has_real_artifacts, source_graph_has_verification_artifacts, repo_has_isolated_helicopter_views, link_quality_high_confidence\nChain evidence:\nIssue/PR evidence chain: Va3elina/moex-aggregator#9\nRepo: Va3elina/moex-aggregator\nThread label: thread_has_human_issue_and_fix_context\nOutcome: claimed_resolved_unverified\nComment count: 1\nLinked commit count: 5\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 0\nLabels: {'agent_instruction_gap': 1}\nPolarities: {'bad': 1}\nChanged file labels: {}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-33c5271b759376b5\",\n    \"kind\": \"pull_request_body\",\n    \"label\": \"agent_instruction_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/Va3elina/moex-aggregator/pull/9\",\n    \"text\": \"GitHub feedback: agent_instruction_gap\\nPolarity: bad\\nKind: pull_request_body\\nRepo: Va3elina/moex-aggregator\\nAuthor: Va3elina (User)\\nURL: https://github.com/Va3elina/moex-aggregator/pull/9\\nTitle: fix(charts): nice-ticks \u043e\u043a\u0440\u0443\u0433\u043b\u044f\u044e\u0442 \u0413\u0420\u0410\u041d\u0418\u0426\u042b \u043e\u0441\u0438 (\u0432\u0435\u0440\u0445\u043d\u0435\u0435 \u0447\u0438\u0441\u043b\u043e \u0432\u0441\u0435\u0433\u0434\u0430 \u0435\u0441\u0442\u044c)\\nBody:\\n\u0420\u0430\u043d\u044c\u0448\u0435 \u0434\u0435\u043b\u0435\u043d\u0438\u044f \u0441\u0442\u0430\u0432\u0438\u043b\u0438\u0441\u044c \u0432\u043d\u0443\u0442\u0440\u0438 \u0441\u044b\u0440\u043e\u0433\u043e \u0434\u043e\u043c\u0435\u043d\u0430 \u2192 \u0435\u0441\u043b\u0438 \u043c\u0430\u043a\u0441\u0438\u043c\u0443\u043c \u0434\u0430\u043d\u043d\u044b\u0445 \u043f\u043e\u043f\u0430\u0434\u0430\u043b\\n\u043c\u0435\u0436\u0434\u0443 \u043a\u0440\u0443\u0433\u043b\u044b\u043c\u0438 (\u043d\u0430\u043f\u0440. \u043a\u0430\u043f\u0438\u0442\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f 5\u041b ~66 \u0442\u0440\u043b\u043d), \u0432\u0435\u0440\u0445\u043d\u0435\u0433\u043e \u0434\u0435\u043b\u0435\u043d\u0438\u044f (70) \u043d\u0435\\n\u0431\u044b\u043b\u043e, \u0430 \u043d\u0430 20\u041b \u043e\u043d\u043e \u043f\u043e\u044f\u0432\u043b\u044f\u043b\u043e\u0441\u044c \u2014 \u043d\u0435\u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u0435. \u0422\u0435\u043f\u0435\u0440\u044c niceScale \u043e\u043a\u0440\u0443\u0433\u043b\u044f\u0435\u0442\\n\u0433\u0440\u0430\u043d\u0438\u0446\u044b \u043d\u0430\u0440\u0443\u0436\u0443 (\u043d\u0438\u0437 \u0432\u043d\u0438\u0437, \u0432\u0435\u0440\u0445 \u0432\u0432\u0435\u0440\u0445 \u0434\u043e \u043a\u0440\u0430\u0442\u043d\u043e\u0433\u043e \u0448\u0430\u0433\u0443) \u043f\u043e \u0441\u044b\u0440\u043e\u043c\u0443 \u0434\u0438\u0430\u043f\u0430\u0437\u043e\u043d\u0443\\n\u0434\u0430\u043d\u043d\u044b\u0445, \u0434\u0435\u043b\u0435\u043d\u0438\u044f \u0438\u0434\u0443\u0442 \u043e\u0442 \u043d\u0438\u0437\u0430 \u0434\u043e \u0432\u0435\u0440\u0445\u0430 \u0432\u043a\u043b\u044e\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e. \u0425\u0435\u043b\u043f\u0435\u0440 niceTickValues \u2192\\nniceScale; SimpleChart + MobileChart.\\n\\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>\\n\"\n  }\n]\nChanged files:\n[]\nLinked chain ids:\n[\"evidence-chain-comment_to_commit-3f9674154cc62c18\"]\nSource graph evidence:\nSource evidence repo graph summary\nRepo: Va3elina/moex-aggregator\nGraph label: source_backed_multi_signal_graph\nNodes: 14\nEdges: 22\nNode types: {\"cooccurrence_profile\": 1, \"github_repo_summary\": 1, \"helicopter_repo_view\": 2, \"repo\": 1, \"source_artifact\": 8, \"source_bundle\": 1}\nEdge types: {\"artifact_needs_claim_verification\": 5, \"artifact_supports_verification\": 3, \"repo_has_cooccurrence_profile\": 1, \"repo_has_github_evidence_summary\": 1, \"repo_has_schemas_helicopter_view\": 2, \"repo_has_source_artifact\": 8, \"repo_has_source_bundle\": 1, \"source_bundle_uses_cooccurrence_profile\": 1}\nArtifact families: {\"ci\": 3, \"docs\": 5}\nHelicopter views: {\"schemas\": 2}\nBundle labels: {\"source_backed_fake_real_verification_bundle\": 1}\nCo-occurrence labels: {\"fake_real_data_plus_verification_gap\": 1}", "source": "foundry_mined_dataset", "repo_url": "https://github.com/Va3elina/moex-aggregator", "source_id": "comment-chain-pattern-assumption_checks-b5e9a385b2765803", "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": "Va3elina/moex-aggregator", "source_dataset": "comment_chain_patterns/assumption_checks", "training_usage": "gold_candidate"}}}, {"ruleId": "foundry_assumption_check", "level": "warning", "message": {"text": "Foundry mined assumption checks: Va3elina/moex-aggregator"}, "properties": {"repobilityId": 434444, "scanner": "foundry_dataset", "fingerprint": "da70239f11d4e6a6a9067601b82675a4a448eb5ee5cf7a54f43dbb195e33915c", "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": "Va3elina/moex-aggregator#84", "human_labels": ["agent_instruction_gap", "source_or_other", "ui_or_frontend"], "issue_number": "84", "thread_label": "thread_has_human_issue_and_fix_context", "outcome_label": "claimed_resolved_unverified", "source_backed": true, "max_confidence": 0.92, "repo_full_name": "Va3elina/moex-aggregator", "training_usage": "gold_candidate", "confidence_tier": "high_confidence", "source_chain_id": "evidence-chain-issue_chain-91dc90bbdfd7cda8", "helicopter_views": {"schemas": 2}, "artifact_families": {"ci": 3, "docs": 5}, "source_chain_kind": "issue_chain", "changed_file_count": 3, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {"ui_or_frontend": 2, "source_or_other": 1}, "linked_commit_count": 5, "helicopter_view_count": 2, "source_artifact_count": 8, "classification_reasons": ["source_graph_has_real_artifacts", "source_graph_has_verification_artifacts", "repo_has_isolated_helicopter_views", "link_quality_high_confidence"], "linked_ci_commit_count": 0, "verification_artifact_count": 3, "design_schema_api_artifact_count": 0}, "text": "Comment chain pattern product: assumption_checks\nRepo: Va3elina/moex-aggregator\nThread: Va3elina/moex-aggregator#84\nOutcome: claimed_resolved_unverified\nThread label: thread_has_human_issue_and_fix_context\nSource graph label: source_backed_multi_signal_graph\nReasons: source_graph_has_real_artifacts, source_graph_has_verification_artifacts, repo_has_isolated_helicopter_views, link_quality_high_confidence\nChain evidence:\nIssue/PR evidence chain: Va3elina/moex-aggregator#84\nRepo: Va3elina/moex-aggregator\nThread label: thread_has_human_issue_and_fix_context\nOutcome: claimed_resolved_unverified\nComment count: 1\nLinked commit count: 5\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 3\nLabels: {'agent_instruction_gap': 1}\nPolarities: {'bad': 1}\nChanged file labels: {'ui_or_frontend': 2, 'source_or_other': 1}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-059bca3daa08acdb\",\n    \"kind\": \"pull_request_body\",\n    \"label\": \"agent_instruction_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/Va3elina/moex-aggregator/pull/84\",\n    \"text\": \"GitHub feedback: agent_instruction_gap\\nPolarity: bad\\nKind: pull_request_body\\nRepo: Va3elina/moex-aggregator\\nAuthor: Va3elina (User)\\nURL: https://github.com/Va3elina/moex-aggregator/pull/84\\nTitle: feat(funds): custom-\u0441\u0438\u0433\u043d\u0430\u043b \u2192 \u0434\u043e\u043c\u0438\u043d\u0438\u0440\u0443\u044e\u0449\u0430\u044f \u043a\u0430\u0442\u0435\u0433\u043e\u0440\u0438\u044f + \u0438\u0437\u043e\u043b\u044f\u0446\u0438\u044f \u0444\u043e\u043d\u0434\u043e\u0432 (?funds=)\\nBody:\\n\u0414\u043e\u0432\u043e\u0434\u043a\u0430 \u0434\u0438\u043f\u043b\u0438\u043d\u043a\u0430 \u0444\u043e\u043d\u0434-\u0441\u0438\u0433\u043d\u0430\u043b\u043e\u0432 (\u043f\u043e\u0441\u043b\u0435 category-\u043f\u0440\u0435\u0441\u0435\u043b\u0435\u043a\u0442\u0430 #83). 'custom'-\u043d\u0430\u0431\u043e\u0440\\n(\u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u044b\u0435 \u0444\u043e\u043d\u0434\u044b) \u0440\u0430\u043d\u044c\u0448\u0435 \u0432\u0451\u043b \u043d\u0430 \u0433\u043e\u043b\u044b\u0439 /funds-money.\\n\\n- **\u0411\u044d\u043a\u0435\u043d\u0434** (`_funds_resolve` + `_funds_url`): \u043f\u043e `fund_ids` \u043e\u0434\u0438\u043d \u0437\u0430\u043f\u0440\u043e\u0441 \u043a `funds`\\n  \u2192 \u0434\u043e\u043c\u0438\u043d\u0438\u0440\u0443\u044e\u0449\u0430\u044f \u043a\u0430\u0442\u0435\u0433\u043e\u0440\u0438\u044f + \u0435\u0451 fund_id'\u044b \u2192 `?category=<dom>&funds=<ids>`.\\n  \u041a\u0440\u043e\u0441\u0441-\u043a\u0430\u0442\u0435\u0433\u043e\u0440\u0438\u0439\u043d\u044b\u0439 \u0445\u0432\u043e\u0441\u0442 \u043e\u0442\u0431\u0440\u0430\u0441\u044b\u0432\u0430\u0435\u0442\u0441\u044f (\u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430 \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u043e\u0434\u0438\u043d \u0440\u0430\u0437\u0434\u0435\u043b).\\n  \u041f\u0440\u043e\u0432\u0435\u0440\u0435\u043d\u043e \u043d\u0430 \u043f\u0440\u043e\u0434-\u0411\u0414: {43,63 stocks + 33 bonds} \u2192 `category=stocks&funds=43,63`.\\n- **\u0424\u0440\u043e\u043d\u0442** (\u043e\u0431\u0435 funds-\u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b): \u044d\u0444\u0444\u0435\u043a\u0442 \u043d\u0430 \u043c\u0430\u0443\u043d\u0442\u0435 \u0447\u0438\u0442\u0430\u0435\u0442 `?funds=`, \u043f\u043e\u0441\u043b\u0435 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438\\n  funds \u0438\u0437\u043e\u043b\u0438\u0440\u0443\u0435\u0442 \u0438\u043c\u0435\u043d\u043d\u043e \u0441\u0438\u0433\u043d\u0430\u043b\u044c\u043d\u044b\u0435 \u0444\u043e\u043d\u0434\u044b \u0432\u043d\u0443\u0442\u0440\u0438 \u043a\u0430\u0442\u0435\u0433\u043e\u0440\u0438\u0438 \u0447\u0435\u0440\u0435\u0437 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0443\u044e\\n  `hiddenFunds` (\u2192 `visibleFundIds` \u2192 \u0444\u0438\u043b\u044c\u0442\u0440 `getFundsFlows`). Ref-guard \u00ab\u043e\u0434\u0438\u043d \u0440\u0430\u0437\u00bb\\n  \u043f\u0435\u0440\u0435\u0436\u0438\u0432\u0430\u0435\u0442 category-reset/\u0440\u0435\u0444\u0435\u0442\u0447\u0438; tier-locked \u0444\u043e\u043d\u0434\u044b \u043f\u0440\u043e\u043f\u0443\u0441\u043a\u0430\u044e\u0442\u0441\u044f.\\n\\n**\u041e\u0441\u0442\u0430\u0451\u0442\u0441\u044f by design:** `all` \u2192 \u0433\u043e\u043b\u044b\u0439 /funds-money (\u0430\u0433\u0440\u0435\u0433\u0430\u0442\u043d\u043e\u0433\u043e \u00ab\u0432\u0441\u0435 \u0444\u043e\u043d\u0434\u044b\u00bb \u0432\u0438\u0434\u0430 \u043d\u0435\u0442).\\n\\n`tsc -b` + `py_compile` \u0437\u0435\u043b\u0451\u043d\u044b\u0435. \u041f\u0440\u0435\u0432\u044c\u044e \u043d\u0435 \u0437\u0430\u0434\u0435\u0439\u0441\u0442\u0432\u043e\u0432\u0430\u043b \u2014 \u0432 \u0434\u0435\u0432\"\n  }\n]\nChanged files:\n[\n  {\n    \"id\": \"github-pr-file-file-6ada4fa2e0e5ab31\",\n    \"filename\": \"frontend/src/pages/FundsMoneyPage.tsx\",\n    \"label\": \"ui_or_frontend\",\n    \"status\": \"modified\",\n    \"additions\": 15,\n    \"deletions\": 0,\n    \"changes\": 15,\n    \"blob_url\": \"https://github.com/Va3elina/moex-aggregator/blob/c3b2d2c6a98db7585a4e6f159c7d1050379bf6dc/frontend%2Fsrc%2Fpages%2FFundsMoneyPage.tsx\"\n  },\n  {\n    \"id\": \"github-pr-file-file-5c414ad3adba3e2f\",\n    \"filename\": \"frontend/src/pages/mobile/MobileFundsMoneyPage.tsx\",\n    \"label\": \"ui_or_frontend\",\n    \"status\": \"modified\",\n    \"additions\": 14,\n    \"deletions\": 0,\n    \"changes\": 14,\n    \"blob_url\": \"http\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/Va3elina/moex-aggregator", "source_id": "comment-chain-pattern-assumption_checks-5a6ad448ac57c2b8", "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": "Va3elina/moex-aggregator", "source_dataset": "comment_chain_patterns/assumption_checks", "training_usage": "gold_candidate"}}}, {"ruleId": "foundry_assumption_check", "level": "warning", "message": {"text": "Foundry mined assumption checks: Va3elina/moex-aggregator"}, "properties": {"repobilityId": 434443, "scanner": "foundry_dataset", "fingerprint": "7fe399637757522a4915eb9f1f7250e92712a2d4d2f80ba28edf9a7762396379", "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": "Va3elina/moex-aggregator#83", "human_labels": ["agent_instruction_gap", "source_or_other", "ui_or_frontend"], "issue_number": "83", "thread_label": "thread_has_human_issue_and_fix_context", "outcome_label": "claimed_resolved_unverified", "source_backed": true, "max_confidence": 0.92, "repo_full_name": "Va3elina/moex-aggregator", "training_usage": "gold_candidate", "confidence_tier": "high_confidence", "source_chain_id": "evidence-chain-issue_chain-a7752e613db638e5", "helicopter_views": {"schemas": 2}, "artifact_families": {"ci": 3, "docs": 5}, "source_chain_kind": "issue_chain", "changed_file_count": 3, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {"ui_or_frontend": 2, "source_or_other": 1}, "linked_commit_count": 5, "helicopter_view_count": 2, "source_artifact_count": 8, "classification_reasons": ["source_graph_has_real_artifacts", "source_graph_has_verification_artifacts", "repo_has_isolated_helicopter_views", "link_quality_high_confidence"], "linked_ci_commit_count": 0, "verification_artifact_count": 3, "design_schema_api_artifact_count": 0}, "text": "Comment chain pattern product: assumption_checks\nRepo: Va3elina/moex-aggregator\nThread: Va3elina/moex-aggregator#83\nOutcome: claimed_resolved_unverified\nThread label: thread_has_human_issue_and_fix_context\nSource graph label: source_backed_multi_signal_graph\nReasons: source_graph_has_real_artifacts, source_graph_has_verification_artifacts, repo_has_isolated_helicopter_views, link_quality_high_confidence\nChain evidence:\nIssue/PR evidence chain: Va3elina/moex-aggregator#83\nRepo: Va3elina/moex-aggregator\nThread label: thread_has_human_issue_and_fix_context\nOutcome: claimed_resolved_unverified\nComment count: 1\nLinked commit count: 5\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 3\nLabels: {'agent_instruction_gap': 1}\nPolarities: {'bad': 1}\nChanged file labels: {'ui_or_frontend': 2, 'source_or_other': 1}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-f68fd4aa43741fd0\",\n    \"kind\": \"pull_request_body\",\n    \"label\": \"agent_instruction_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/Va3elina/moex-aggregator/pull/83\",\n    \"text\": \"GitHub feedback: agent_instruction_gap\\nPolarity: bad\\nKind: pull_request_body\\nRepo: Va3elina/moex-aggregator\\nAuthor: Va3elina (User)\\nURL: https://github.com/Va3elina/moex-aggregator/pull/83\\nTitle: fix(funds): \u0434\u0438\u043f\u043b\u0438\u043d\u043a \u0441\u0438\u0433\u043d\u0430\u043b\u0430 \u043f\u0440\u0435\u0441\u0435\u043b\u0435\u043a\u0442\u0438\u0442 \u043a\u0430\u0442\u0435\u0433\u043e\u0440\u0438\u044e \u043d\u0430 /funds-money\\nBody:\\n\u041f\u0440\u043e\u0434\u043e\u043b\u0436\u0435\u043d\u0438\u0435 \u0444\u0438\u043a\u0441\u0430 \u0434\u0438\u043f\u043b\u0438\u043d\u043a\u043e\u0432 (\u043f\u043e\u0441\u043b\u0435 #80 \u0434\u043b\u044f \u041e\u0418). Fund-\u0441\u0438\u0433\u043d\u0430\u043b \u0432\u0451\u043b \u043d\u0430 \u0433\u043e\u043b\u044b\u0439\\n`/funds-money` \u2192 \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u043b\u0441\u044f \u0434\u0435\u0444\u043e\u043b\u0442\u043d\u044b\u0439/\u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0439 \u0440\u0430\u0437\u0434\u0435\u043b, \u043d\u0435 \u0442\u043e\u0442, \u043e \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0441\u0438\u0433\u043d\u0430\u043b.\\n\\n- **\u0411\u044d\u043a\u0435\u043d\u0434** (`alerts_run._funds_url`): \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442 `?category=<cat>` \u0434\u043b\u044f \u0441\u0438\u0433\u043d\u0430\u043b\u043e\u0432\\n  \u043f\u043e \u043a\u0430\u0442\u0435\u0433\u043e\u0440\u0438\u0438 (money_market/stocks/bonds/gold).\\n- **\u0424\u0440\u043e\u043d\u0442** (FundsMoneyPage + MobileFundsMoneyPage): \u0447\u0438\u0442\u0430\u044e\u0442 `?category=` \u043d\u0430 \u043c\u0430\u0443\u043d\u0442\u0435\\n  \u0438 \u043f\u0440\u0435\u0441\u0435\u043b\u0435\u043a\u0442\u044f\u0442 \u0440\u0430\u0437\u0434\u0435\u043b (\u043f\u0435\u0440\u0435\u043a\u0440\u044b\u0432\u0430\u044f localStorage). \u041f\u0440\u043e\u0432\u0435\u0440\u0435\u043d\u043e \u043d\u0430 \u043f\u0440\u0435\u0432\u044c\u044e (375px):\\n  `?category=stocks` \u043f\u0435\u0440\u0435\u043a\u0440\u044b\u043b \u0441\u043e\u0445\u0440\u0430\u043d\u0451\u043d\u043d\u044b\u0439 `bonds`.\\n\\n**\u041e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0435 (\u0447\u0435\u0441\u0442\u043d\u043e):** `all` \u0438 `custom` (\u043f\u0440\u043e\u0438\u0437\u0432\u043e\u043b\u044c\u043d\u044b\u0439 \u043d\u0430\u0431\u043e\u0440 \u0444\u043e\u043d\u0434\u043e\u0432 \u0438\u0437 \u0440\u0430\u0437\u043d\u044b\u0445\\n\u043a\u0430\u0442\u0435\u0433\u043e\u0440\u0438\u0439) \u0432\u0435\u0434\u0443\u0442 \u043d\u0430 `/funds-money` \u0431\u0435\u0437 \u043f\u0440\u0435\u0441\u0435\u043b\u0435\u043a\u0442\u0430 \u2014 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430 \u043a\u0430\u0442\u0435\u0433\u043e\u0440\u0438\u0439\u043d\u0430\u044f (\u043e\u0434\u0438\u043d\\n\u0440\u0430\u0437\u0434\u0435\u043b \u0437\u0430 \u0440\u0430\u0437), \u043a\u0440\u043e\u0441\u0441-\u043a\u0430\u0442\u0435\u0433\u043e\u0440\u0438\u0439\u043d\u044b\u0439 \u043d\u0430\u0431\u043e\u0440 \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u044c \u043d\u0435 \u043c\u043e\u0436\u0435\u0442 \u0431\u0435\u0437 \u0440\u0435\u0434\u0438\u0437\u0430\u0439\u043d\u0430.\\n\\n`tsc -b` + `py_compile` \u0437\u0435\u043b\u0451\u043d\u044b\u0435.\\n\\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>\"\n  }\n]\nChanged files:\n[\n  {\n    \"id\": \"github-pr-file-file-64070fdefdb63957\",\n    \"filename\": \"frontend/src/pages/FundsMoneyPage.tsx\",\n    \"label\": \"ui_or_frontend\",\n    \"status\": \"modified\",\n    \"additions\": 11,\n    \"deletions\": 1,\n    \"changes\": 12,\n    \"blob_url\": \"https://github.com/Va3elina/moex-aggregator/blob/ca29fc208a331bae1f2080110d83b800267a2d14/frontend%2Fsrc%2Fpages%2FFundsMoneyPage.tsx\"\n  },\n  {\n    \"id\": \"github-pr-file-file-39e0d0d3520b8c61\",\n    \"filename\": \"frontend/src/pages/mobile/MobileFundsMoneyPage.tsx\",\n    \"label\": \"ui_or_frontend\",\n    \"status\": \"modified\",\n    \"additions\": 8,\n    \"deletions\": 0,\n    \"changes\": 8,\n    \"blob_url\": \"https://github.com/Va3elina/moex-aggregator/blob/ca29fc208a331bae1f2080110d83b800267a2d14/frontend%2\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/Va3elina/moex-aggregator", "source_id": "comment-chain-pattern-assumption_checks-7ba1032a365fc48c", "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": "Va3elina/moex-aggregator", "source_dataset": "comment_chain_patterns/assumption_checks", "training_usage": "gold_candidate"}}}, {"ruleId": "foundry_assumption_check", "level": "warning", "message": {"text": "Foundry mined assumption checks: Va3elina/moex-aggregator"}, "properties": {"repobilityId": 434442, "scanner": "foundry_dataset", "fingerprint": "58d8e9c052319802908e8b0246d74a5abad4bd622d5d0cd8f0171814e560823a", "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": "Va3elina/moex-aggregator#82", "human_labels": ["agent_instruction_gap", "ui_or_frontend"], "issue_number": "82", "thread_label": "thread_has_human_issue_and_fix_context", "outcome_label": "claimed_resolved_unverified", "source_backed": true, "max_confidence": 0.856, "repo_full_name": "Va3elina/moex-aggregator", "training_usage": "gold_candidate", "confidence_tier": "high_confidence", "source_chain_id": "evidence-chain-issue_chain-20d856958080c0ea", "helicopter_views": {"schemas": 2}, "artifact_families": {"ci": 3, "docs": 5}, "source_chain_kind": "issue_chain", "changed_file_count": 1, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {"ui_or_frontend": 1}, "linked_commit_count": 1, "helicopter_view_count": 2, "source_artifact_count": 8, "classification_reasons": ["source_graph_has_real_artifacts", "source_graph_has_verification_artifacts", "repo_has_isolated_helicopter_views", "link_quality_high_confidence"], "linked_ci_commit_count": 0, "verification_artifact_count": 3, "design_schema_api_artifact_count": 0}, "text": "Comment chain pattern product: assumption_checks\nRepo: Va3elina/moex-aggregator\nThread: Va3elina/moex-aggregator#82\nOutcome: claimed_resolved_unverified\nThread label: thread_has_human_issue_and_fix_context\nSource graph label: source_backed_multi_signal_graph\nReasons: source_graph_has_real_artifacts, source_graph_has_verification_artifacts, repo_has_isolated_helicopter_views, link_quality_high_confidence\nChain evidence:\nIssue/PR evidence chain: Va3elina/moex-aggregator#82\nRepo: Va3elina/moex-aggregator\nThread label: thread_has_human_issue_and_fix_context\nOutcome: claimed_resolved_unverified\nComment count: 1\nLinked commit count: 1\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 1\nLabels: {'agent_instruction_gap': 1}\nPolarities: {'bad': 1}\nChanged file labels: {'ui_or_frontend': 1}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-1c2bb17ce2de7557\",\n    \"kind\": \"pull_request_body\",\n    \"label\": \"agent_instruction_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/Va3elina/moex-aggregator/pull/82\",\n    \"text\": \"GitHub feedback: agent_instruction_gap\\nPolarity: bad\\nKind: pull_request_body\\nRepo: Va3elina/moex-aggregator\\nAuthor: Va3elina (User)\\nURL: https://github.com/Va3elina/moex-aggregator/pull/82\\nTitle: fix(funds): \u043d\u0430 \u0441\u043a\u0440\u0438\u043d\u0448\u043e\u0442\u0435 \u0433\u043b\u0430\u0432\u043d\u044b\u0439 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a \u2014 \u00ab\u0414\u0435\u043d\u044c\u0433\u0438 \u0432 \u0444\u043e\u043d\u0434\u0430\u0445\u00bb\\nBody:\\n## \u0427\u0442\u043e\\n\u041d\u0430 \u044d\u043a\u0441\u043f\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u043c \u0441\u043a\u0440\u0438\u043d\u0448\u043e\u0442\u0435 \u0433\u0440\u0430\u0444\u0438\u043a\u0430 \u0433\u043b\u0430\u0432\u043d\u044b\u0439 (primary) \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a \u0431\u0440\u0430\u043b\u0441\u044f \u0438\u0437 `asset` \u2014 \u0430 \u044d\u0442\u043e \u043a\u0430\u0442\u0435\u0433\u043e\u0440\u0438\u044f \u0444\u043e\u043d\u0434\u0430 (\u0410\u043a\u0446\u0438\u0438 / \u041e\u0431\u043b\u0438\u0433\u0430\u0446\u0438\u0438 / \u2026). \u041f\u043e\u043b\u0443\u0447\u0430\u043b\u043e\u0441\u044c, \u0447\u0442\u043e \u043a\u0440\u0443\u043f\u043d\u044b\u043c \u0442\u0435\u043a\u0441\u0442\u043e\u043c \u0441\u0442\u043e\u0438\u0442 \u00ab\u0410\u043a\u0446\u0438\u0438\u00bb, \u0430 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u0438\u043d\u0434\u0438\u043a\u0430\u0442\u043e\u0440\u0430 \u00ab\u0414\u0435\u043d\u044c\u0433\u0438 \u0432 \u0444\u043e\u043d\u0434\u0430\u0445\u00bb \u0443\u0445\u043e\u0434\u0438\u043b\u043e \u0432 \u043f\u043e\u0434\u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a.\\n\\n\u0422\u0435\u043f\u0435\u0440\u044c `asset` \u043d\u0435 \u0437\u0430\u0434\u0430\u0451\u043c \u2192 primary-\u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a = `title` \u00ab\u0414\u0435\u043d\u044c\u0433\u0438 \u0432 \u0444\u043e\u043d\u0434\u0430\u0445\u00bb, \u0430 \u043a\u0430\u0442\u0435\u0433\u043e\u0440\u0438\u044f \u043f\u0435\u0440\u0435\u0435\u0437\u0436\u0430\u0435\u0442 \u043f\u0435\u0440\u0432\u044b\u043c \u0447\u0438\u043f\u043e\u043c \u0432 subtitle (\u0440\u044f\u0434\u043e\u043c \u0441 \u0440\u0435\u0436\u0438\u043c\u043e\u043c \u0438 \u043f\u0435\u0440\u0438\u043e\u0434\u043e\u043c).\\n\\n\u0421\u043a\u0440\u0438\u043d\u0448\u043e\u0442:\\n- \u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a: **\u0414\u0435\u043d\u044c\u0433\u0438 \u0432 \u0444\u043e\u043d\u0434\u0430\u0445**\\n- \u041f\u043e\u0434\u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a: `\u041e\u0431\u043b\u0438\u0433\u0430\u0446\u0438\u0438 \u00b7 \u041f\u0440\u0438\u0442\u043e\u043a\u0438-\u041e\u0442\u0442\u043e\u043a\u0438 \u00b7 6 \u043c\u0435\u0441\u044f\u0446\u0435\u0432 \u00b7 \u041d\u0435\u0434\u0435\u043b\u044f`\\n\\n## \u0424\u0430\u0439\u043b\\n- `FundsMoneyPage.tsx` \u2014 \u043c\u0435\u0442\u0430\u0434\u0430\u043d\u043d\u044b\u0435 `ChartCaptureButton`: \u0443\u0431\u0440\u0430\u043d `asset`, \u043a\u0430\u0442\u0435\u0433\u043e\u0440\u0438\u044f \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0430 \u0432 \u043d\u0430\u0447\u0430\u043b\u043e `details`.\\n\\n\u0412\u043d\u0435 \u0441\u043a\u043e\u0443\u043f\u0430: \u043c\u043e\u0431\u0438\u043b\u044c\u043d\u0430\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430 \u2014 \u0442\u0430\u043c \u043d\u0435\u0442 `ChartCaptureButton` (\u044d\u0442\u043e\u0433\u043e \u044d\u043a\u0441\u043f\u043e\u0440\u0442\u0430), \u043c\u0435\u043d\u044f\u0442\u044c \u043d\u0435\u0447\u0435\u0433\u043e.\\n\\n## \u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430\\n`tsc -b` \u0447\u0438\u0441\u0442\u043e.\\n\\n\ud83e\udd16 Generated with [Claude Code](https://claude.com/claude-code)\"\n  }\n]\nChanged files:\n[\n  {\n    \"id\": \"github-pr-file-file-510216b3546c43cc\",\n    \"filename\": \"frontend/src/pages/FundsMoneyPage.tsx\",\n    \"label\": \"ui_or_frontend\",\n    \"status\": \"modified\",\n    \"additions\": 4,\n    \"deletions\": 1,\n    \"changes\": 5,\n    \"blob_url\": \"https://github.com/Va3elina/moex-aggregator/blob/6350c077afc3c202bb351c7a43b79a85c0248c2e/frontend%2Fsrc%2Fpages%2FFundsMoneyPage.tsx\"\n  }\n]\nLinked chain ids:\n[\"evidence-chain-comment_to_commit-e76a5dc456211cb0\"]\nSource graph evidence:\nSource evidence repo graph summary\nRepo: Va3elina/moex-aggregator\nGraph label: source_backed_multi_signal_graph\nNodes: 14\nEdges: 22\nNode types: {\"cooccurrence_profile\": 1, \"github_repo_summary\": 1, \"helicopter_repo_view\": 2, \"repo\": 1, \"source_artifact\": 8, \"source_bundle\": 1}\nEdge types: {\"artifac\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/Va3elina/moex-aggregator", "source_id": "comment-chain-pattern-assumption_checks-aa40b3471a5e52fa", "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": "Va3elina/moex-aggregator", "source_dataset": "comment_chain_patterns/assumption_checks", "training_usage": "gold_candidate"}}}, {"ruleId": "foundry_assumption_check", "level": "warning", "message": {"text": "Foundry mined assumption checks: Va3elina/moex-aggregator"}, "properties": {"repobilityId": 434441, "scanner": "foundry_dataset", "fingerprint": "eb44cfad39210d8becb15f632dd6822f4ef55c9f5efdc42eb49c4ded629e29ff", "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": "Va3elina/moex-aggregator#81", "human_labels": ["agent_instruction_gap", "ui_or_frontend"], "issue_number": "81", "thread_label": "thread_has_human_issue_and_fix_context", "outcome_label": "claimed_resolved_unverified", "source_backed": true, "max_confidence": 0.92, "repo_full_name": "Va3elina/moex-aggregator", "training_usage": "gold_candidate", "confidence_tier": "high_confidence", "source_chain_id": "evidence-chain-issue_chain-105c54cfefc7ecca", "helicopter_views": {"schemas": 2}, "artifact_families": {"ci": 3, "docs": 5}, "source_chain_kind": "issue_chain", "changed_file_count": 2, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {"ui_or_frontend": 2}, "linked_commit_count": 1, "helicopter_view_count": 2, "source_artifact_count": 8, "classification_reasons": ["source_graph_has_real_artifacts", "source_graph_has_verification_artifacts", "repo_has_isolated_helicopter_views", "link_quality_high_confidence"], "linked_ci_commit_count": 0, "verification_artifact_count": 3, "design_schema_api_artifact_count": 0}, "text": "Comment chain pattern product: assumption_checks\nRepo: Va3elina/moex-aggregator\nThread: Va3elina/moex-aggregator#81\nOutcome: claimed_resolved_unverified\nThread label: thread_has_human_issue_and_fix_context\nSource graph label: source_backed_multi_signal_graph\nReasons: source_graph_has_real_artifacts, source_graph_has_verification_artifacts, repo_has_isolated_helicopter_views, link_quality_high_confidence\nChain evidence:\nIssue/PR evidence chain: Va3elina/moex-aggregator#81\nRepo: Va3elina/moex-aggregator\nThread label: thread_has_human_issue_and_fix_context\nOutcome: claimed_resolved_unverified\nComment count: 1\nLinked commit count: 1\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 2\nLabels: {'agent_instruction_gap': 1}\nPolarities: {'bad': 1}\nChanged file labels: {'ui_or_frontend': 2}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-a093771d57b5d995\",\n    \"kind\": \"pull_request_body\",\n    \"label\": \"agent_instruction_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/Va3elina/moex-aggregator/pull/81\",\n    \"text\": \"GitHub feedback: agent_instruction_gap\\nPolarity: bad\\nKind: pull_request_body\\nRepo: Va3elina/moex-aggregator\\nAuthor: Va3elina (User)\\nURL: https://github.com/Va3elina/moex-aggregator/pull/81\\nTitle: fix(funds): \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a \u041f\u0440\u0438\u0442\u043e\u043a\u0438-\u041e\u0442\u0442\u043e\u043a\u0438 \u0442\u0435\u043c \u0436\u0435 \u0448\u0440\u0438\u0444\u0442\u043e\u043c, \u0447\u0442\u043e \u043b\u0435\u0433\u0435\u043d\u0434\u0430 \u0421\u0427\u0410\\nBody:\\n## \u0427\u0442\u043e\\n\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a \u0433\u0440\u0430\u0444\u0438\u043a\u0430 \u041f\u0440\u0438\u0442\u043e\u043a\u0438-\u041e\u0442\u0442\u043e\u043a\u0438 \u0440\u0435\u043d\u0434\u0435\u0440\u0438\u043b\u0441\u044f HTML `<span>`, \u0430 \u043b\u0435\u0433\u0435\u043d\u0434\u0430 \u0440\u0435\u0436\u0438\u043c\u0430 \u0421\u0427\u0410 \u2014 \u0447\u0435\u0440\u0435\u0437 `ChartLegend` (SVG `<text>`). \u041f\u0440\u0438 \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u043e\u043c \u0432\u0435\u0441\u0435/\u0440\u0430\u0437\u043c\u0435\u0440\u0435 SVG- \u0438 HTML-\u0442\u0435\u043a\u0441\u0442 \u0432\u044b\u0433\u043b\u044f\u0434\u044f\u0442 \u0447\u0443\u0442\u044c \u043f\u043e-\u0440\u0430\u0437\u043d\u043e\u043c\u0443 \u2192 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u0437\u0430\u043c\u0435\u0442\u0438\u043b \u0440\u0430\u0437\u043d\u044b\u0439 \u0448\u0440\u0438\u0444\u0442. \u0422\u0435\u043f\u0435\u0440\u044c \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a \u0438\u0434\u0451\u0442 \u0447\u0435\u0440\u0435\u0437 \u0442\u043e\u0442 \u0436\u0435 `ChartLegend`, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0448\u0440\u0438\u0444\u0442 \u0438 \u0436\u0438\u0440\u043d\u043e\u0441\u0442\u044c \u0441\u043e\u0432\u043f\u0430\u0434\u0430\u044e\u0442 1-\u0432-1.\\n\\n## \u0424\u0430\u0439\u043b\u044b\\n- `ChartLegend.tsx` \u2014 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d `marker: 'none'` (\u043f\u0443\u043d\u043a\u0442 \u0431\u0435\u0437 \u043a\u0440\u0443\u0436\u043a\u0430/\u0442\u0438\u0440\u0435), \u0442\u0435\u043a\u0441\u0442 \u0431\u0435\u0437 \u043e\u0442\u0441\u0442\u0443\u043f\u0430 \u043f\u043e\u0434 \u043c\u0430\u0440\u043a\u0435\u0440.\\n- `FlowsHistogram.tsx` \u2014 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a = `ChartLegend` \u0441 \u043e\u0434\u043d\u0438\u043c markerless-\u043f\u0443\u043d\u043a\u0442\u043e\u043c; \u0442\u0435 \u0436\u0435 `fontWeight=600` / `itemGap` / `gap` / `color`, \u0447\u0442\u043e \u0443 \u043b\u0435\u0433\u0435\u043d\u0434\u044b \u0421\u0427\u0410. \u0423\u0431\u0440\u0430\u043d\u044b \u043b\u0438\u0448\u043d\u0438\u0435 \u0438\u043c\u043f\u043e\u0440\u0442\u044b (`legendFontSize`, `useViewportWidth`).\\n\\n## \u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430\\n`tsc -b` \u0447\u0438\u0441\u0442\u043e. (\u041e\u0448\u0438\u0431\u043a\u0430 \u0432 `UkAvatar.tsx` \u2014 \u043d\u0435\u0437\u0430\u043a\u043e\u043c\u043c\u0438\u0447\u0435\u043d\u043d\u044b\u0439 WIP \u0434\u0440\u0443\u0433\u043e\u0439 \u0441\u0435\u0441\u0441\u0438\u0438, \u043a PR \u043d\u0435 \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0441\u044f.)\\n\\n\ud83e\udd16 Generated with [Claude Code](https://claude.com/claude-code)\"\n  }\n]\nChanged files:\n[\n  {\n    \"id\": \"github-pr-file-file-fbf921ccd7fad0a9\",\n    \"filename\": \"frontend/src/components/chart/ChartLegend.tsx\",\n    \"label\": \"ui_or_frontend\",\n    \"status\": \"modified\",\n    \"additions\": 10,\n    \"deletions\": 7,\n    \"changes\": 17,\n    \"blob_url\": \"https://github.com/Va3elina/moex-aggregator/blob/c66e786b408ff6cf04a8b5c3fc4b9f7db802be93/frontend%2Fsrc%2Fcomponents%2Fchart%2FChartLegend.tsx\"\n  },\n  {\n    \"id\": \"github-pr-file-file-9dd49fddbe0bef3c\",\n    \"filename\": \"frontend/src/components/funds/FlowsHistogram.tsx\",\n    \"label\": \"ui_or_frontend\",\n    \"status\": \"modified\",\n    \"additions\": 12,\n    \"deletions\": 8,\n    \"changes\": 20,\n    \"blob_url\": \"https://github.com/Va3elina/moex-aggregator/blob/c66e786b408ff6cf04a8b5c3fc4b9f7db802be93/frontend%2Fsrc%2Fcomponents\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/Va3elina/moex-aggregator", "source_id": "comment-chain-pattern-assumption_checks-4a72581b5a90a4b8", "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": "Va3elina/moex-aggregator", "source_dataset": "comment_chain_patterns/assumption_checks", "training_usage": "gold_candidate"}}}, {"ruleId": "foundry_assumption_check", "level": "warning", "message": {"text": "Foundry mined assumption checks: Va3elina/moex-aggregator"}, "properties": {"repobilityId": 434440, "scanner": "foundry_dataset", "fingerprint": "1c5c9a9a99a011ce880f26a72bd39966155944f053474d5273314b5dddf8cd90", "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": "Va3elina/moex-aggregator#80", "human_labels": ["api_integration_gap", "source_or_other", "ui_or_frontend"], "issue_number": "80", "thread_label": "thread_has_human_issue_and_fix_context", "outcome_label": "claimed_resolved_unverified", "source_backed": true, "max_confidence": 0.92, "repo_full_name": "Va3elina/moex-aggregator", "training_usage": "gold_candidate", "confidence_tier": "high_confidence", "source_chain_id": "evidence-chain-issue_chain-e7c73f7b55714421", "helicopter_views": {"schemas": 2}, "artifact_families": {"ci": 3, "docs": 5}, "source_chain_kind": "issue_chain", "changed_file_count": 4, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {"ui_or_frontend": 3, "source_or_other": 1}, "linked_commit_count": 5, "helicopter_view_count": 2, "source_artifact_count": 8, "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": 3, "design_schema_api_artifact_count": 0}, "text": "Comment chain pattern product: assumption_checks\nRepo: Va3elina/moex-aggregator\nThread: Va3elina/moex-aggregator#80\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: Va3elina/moex-aggregator#80\nRepo: Va3elina/moex-aggregator\nThread label: thread_has_human_issue_and_fix_context\nOutcome: claimed_resolved_unverified\nComment count: 1\nLinked commit count: 5\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 4\nLabels: {'api_integration_gap': 1}\nPolarities: {'bad': 1}\nChanged file labels: {'ui_or_frontend': 3, 'source_or_other': 1}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-7d205677765d4413\",\n    \"kind\": \"pull_request_body\",\n    \"label\": \"api_integration_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/Va3elina/moex-aggregator/pull/80\",\n    \"text\": \"GitHub feedback: api_integration_gap\\nPolarity: bad\\nKind: pull_request_body\\nRepo: Va3elina/moex-aggregator\\nAuthor: Va3elina (User)\\nURL: https://github.com/Va3elina/moex-aggregator/pull/80\\nTitle: fix(oi): \u0434\u0438\u043f\u043b\u0438\u043d\u043a \u0441\u0438\u0433\u043d\u0430\u043b\u0430 \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u0435\u0442 \u0430\u043a\u0442\u0438\u0432 + \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442 \u043d\u0430 \u043c\u043e\u0431\u0438\u043b\u043a\u0435\\nBody:\\n## \u0411\u0430\u0433 (\u0440\u0435\u043f\u043e\u0440\u0442 \u0412\u0430\u0434\u0438\u043c\u0430)\\n\u0421\u0441\u044b\u043b\u043a\u0430 \u0438\u0437 Telegram-\u0441\u0438\u0433\u043d\u0430\u043b\u0430 `/oi?instrument=CE` (\u041c\u0435\u0434\u044c) \u043d\u0430 \u0442\u0435\u043b\u0435\u0444\u043e\u043d\u0435 **\u043d\u0435 \u0432\u044b\u0431\u0438\u0440\u0430\u043b\u0430\\n\u0434\u0430\u0436\u0435 \u0430\u043a\u0442\u0438\u0432**, \u043d\u0435 \u0433\u043e\u0432\u043e\u0440\u044f \u043f\u0440\u043e \u0440\u0435\u0436\u0438\u043c/\u0447\u0438\u0441\u0442\u044b\u0435 \u043f\u043e\u0437\u0438\u0446\u0438\u0438/\u0442\u0430\u0439\u043c\u0444\u0440\u0435\u0439\u043c \u0441\u0438\u0433\u043d\u0430\u043b\u0430.\\n\\n## \u041f\u0440\u0438\u0447\u0438\u043d\u0430\\n- `MobileOpenInterestPage` \u0445\u0430\u0440\u0434\u043a\u043e\u0434\u0438\u043b `'SR'` \u0438 URL **\u043d\u0435 \u0447\u0438\u0442\u0430\u043b \u0432\u043e\u0432\u0441\u0435** (\u0431\u044b\u043b \u0434\u0430\u0436\u0435\\n  \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0439 \u00ab\u043d\u0430 \u043c\u043e\u0431\u0438\u043b\u0435 \u043d\u0435\u0442 URL deep-links\u00bb).\\n- \u0414\u0435\u0441\u043a\u0442\u043e\u043f \u0447\u0438\u0442\u0430\u043b \u0442\u043e\u043b\u044c\u043a\u043e `instrument`; `clgroup`/\u0440\u0435\u0436\u0438\u043c/\u0442\u0430\u0439\u043c\u0444\u0440\u0435\u0439\u043c \u043d\u0435 \u0447\u0438\u0442\u0430\u043b \u043d\u0438\u043a\u0442\u043e.\\n- \u0421\u0441\u044b\u043b\u043a\u0430 \u0438\u0437 \u0441\u0438\u0433\u043d\u0430\u043b\u0430 \u043d\u0435\u0441\u043b\u0430 \u0442\u043e\u043b\u044c\u043a\u043e `instrument`, \u0445\u043e\u0442\u044f \u0443 \u0430\u043b\u0435\u0440\u0442\u0430 \u0435\u0441\u0442\u044c `clgroup`,\\n  `timeframe`, `indicator`.\\n\\n## \u0424\u0438\u043a\u0441\\n- **\u0411\u044d\u043a\u0435\u043d\u0434** (`alerts_run._oi_url`): \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0435\u0441\u0451\u0442 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442 \u2014 `instrument` +\\n  `clgroup` + `interval` (\u043f\u043e \u0442\u0430\u0439\u043c\u0444\u0440\u0435\u0439\u043c\u0443) + `mode` (\u043f\u043e\u0437\u0438\u0446\u0438\u0438/\u0443\u0447\u0430\u0441\u0442\u043d\u0438\u043a\u0438/\u0446\u0435\u043d\u0430) +\\n  `variant` (net).\\n- **\u0424\u0440\u043e\u043d\u0442** (`utils/oiDeepLink.parseOiDeepLink` + \u044d\u0444\u0444\u0435\u043a\u0442\u044b \u043d\u0430 \u043c\u0430\u0443\u043d\u0442\u0435 \u0432 \u043e\u0431\u0435\u0438\u0445\\n  \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430\u0445): \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u044e\u0442 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u043f\u0440\u0438 \u043e\u0442\u043a\u0440\u044b\u0442\u0438\u0438. \u041c\u043e\u0431\u0438\u043b\u043a\u0430 \u0442\u0435\u043f\u0435\u0440\u044c \u0447\u0438\u0442\u0430\u0435\u0442\\n  `?instrument=` \u0438 \u0440\u0435\u0437\u043e\u043b\u0432\u0438\u0442 \u0438\u043c\u044f \u0447\u0435\u0440\u0435\u0437 API (\u043a\u0430\u043a \u0434\u0435\u0441\u043a\u0442\u043e\u043f).\\n\\n## \u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430\\n\u041f\u0440\u0435\u0432\u044c\u044e 375px: `/oi?instrument=CE&clgroup=FIZ&in\"\n  }\n]\nChanged files:\n[\n  {\n    \"id\": \"github-pr-file-file-1c826858157f208e\",\n    \"filename\": \"frontend/src/pages/OpenInterestPage.tsx\",\n    \"label\": \"ui_or_frontend\",\n    \"status\": \"modified\",\n    \"additions\": 13,\n    \"deletions\": 0,\n    \"changes\": 13,\n    \"blob_url\": \"https://github.com/Va3elina/moex-aggregator/blob/8a1f6df2b0bbf092cd7414bf3525ba0a37a53cd9/frontend%2Fsrc%2Fpages%2FOpenInterestPage.tsx\"\n  },\n  {\n    \"id\": \"github-pr-file-file-9e08fe160d0f0e96\",\n    \"filename\": \"frontend/src/pages/mobile/MobileOpenInterestPage.tsx\",\n    \"label\": \"ui_or_frontend\",\n    \"status\": \"modified\",\n    \"additions\": 34,\n    \"deletions\": 3,\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/Va3elina/moex-aggregator", "source_id": "comment-chain-pattern-assumption_checks-17c7c7a19123f00b", "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": "Va3elina/moex-aggregator", "source_dataset": "comment_chain_patterns/assumption_checks", "training_usage": "gold_candidate"}}}, {"ruleId": "foundry_assumption_check", "level": "warning", "message": {"text": "Foundry mined assumption checks: Va3elina/moex-aggregator"}, "properties": {"repobilityId": 434439, "scanner": "foundry_dataset", "fingerprint": "10eea23770df945688feb09dad5c9989e2ed283a7a72ab2005f31a49b35737d8", "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": "Va3elina/moex-aggregator#8", "human_labels": ["human_feedback_general"], "issue_number": "8", "thread_label": "thread_needs_classification", "outcome_label": "ambiguous_needs_more_evidence", "source_backed": true, "max_confidence": 0.795, "repo_full_name": "Va3elina/moex-aggregator", "training_usage": "weak_supervision", "confidence_tier": "weak_supervision", "source_chain_id": "evidence-chain-issue_chain-61cfebd66f4382b8", "helicopter_views": {"schemas": 2}, "artifact_families": {"ci": 3, "docs": 5}, "source_chain_kind": "issue_chain", "changed_file_count": 0, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {}, "linked_commit_count": 1, "helicopter_view_count": 2, "source_artifact_count": 8, "classification_reasons": ["source_graph_has_real_artifacts", "source_graph_has_verification_artifacts", "repo_has_isolated_helicopter_views", "link_quality_weak_supervision"], "linked_ci_commit_count": 0, "verification_artifact_count": 3, "design_schema_api_artifact_count": 0}, "text": "Comment chain pattern product: assumption_checks\nRepo: Va3elina/moex-aggregator\nThread: Va3elina/moex-aggregator#8\nOutcome: ambiguous_needs_more_evidence\nThread label: thread_needs_classification\nSource graph label: source_backed_multi_signal_graph\nReasons: source_graph_has_real_artifacts, source_graph_has_verification_artifacts, repo_has_isolated_helicopter_views, link_quality_weak_supervision\nChain evidence:\nIssue/PR evidence chain: Va3elina/moex-aggregator#8\nRepo: Va3elina/moex-aggregator\nThread label: thread_needs_classification\nOutcome: ambiguous_needs_more_evidence\nComment count: 1\nLinked commit count: 1\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 0\nLabels: {'human_feedback_general': 1}\nPolarities: {'neutral': 1}\nChanged file labels: {}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-66979bafa49a9a41\",\n    \"kind\": \"pull_request_body\",\n    \"label\": \"human_feedback_general\",\n    \"polarity\": \"neutral\",\n    \"url\": \"https://github.com/Va3elina/moex-aggregator/pull/8\",\n    \"text\": \"GitHub feedback: human_feedback_general\\nPolarity: neutral\\nKind: pull_request_body\\nRepo: Va3elina/moex-aggregator\\nAuthor: Va3elina (User)\\nURL: https://github.com/Va3elina/moex-aggregator/pull/8\\nTitle: style(funds,cbr): \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u044f \u0442\u0438\u043f\u043e\u0432 \u0444\u043e\u043d\u0434\u043e\u0432 \u0435\u0449\u0451 \u043a\u0440\u0443\u043f\u043d\u0435\u0435\\nBody:\\n\u0423\u0432\u0435\u043b\u0438\u0447\u0438\u043b \u0448\u0440\u0438\u0444\u0442 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0439 \u0442\u0438\u043f\u043e\u0432 \u0444\u043e\u043d\u0434\u043e\u0432 \u0432\u043e \u0432\u043a\u043b\u0430\u0434\u043a\u0430\u0445 \u043d\u0430 \u0448\u0430\u0433 (fs-md \u2192 fs-lg). \u041e\u0431\u0430 \u044d\u043a\u0440\u0430\u043d\u0430 (\u0414\u0435\u043d\u044c\u0433\u0438 \u0432 \u0444\u043e\u043d\u0434\u0430\u0445 \u0438 \u041f\u043e\u0442\u043e\u043a \u043a\u0430\u043f\u0438\u0442\u0430\u043b\u0430) \u0447\u0435\u0440\u0435\u0437 \u043e\u0431\u0449\u0438\u0439 .chart-tab. \u0422\u043e\u043b\u044c\u043a\u043e index.css. \u041c\u0435\u0440\u0434\u0436 \u0430\u0432\u0442\u043e\u0434\u0435\u043f\u043b\u043e\u0438\u0442.\"\n  }\n]\nChanged files:\n[]\nLinked chain ids:\n[\"evidence-chain-comment_to_commit-09f25d37136c5340\"]\nSource graph evidence:\nSource evidence repo graph summary\nRepo: Va3elina/moex-aggregator\nGraph label: source_backed_multi_signal_graph\nNodes: 14\nEdges: 22\nNode types: {\"cooccurrence_profile\": 1, \"github_repo_summary\": 1, \"helicopter_repo_view\": 2, \"repo\": 1, \"source_artifact\": 8, \"source_bundle\": 1}\nEdge types: {\"artifact_needs_claim_verification\": 5, \"artifact_supports_verification\": 3, \"repo_has_cooccurrence_profile\": 1, \"repo_has_github_evidence_summary\": 1, \"repo_has_schemas_helicopter_view\": 2, \"repo_has_source_artifact\": 8, \"repo_has_source_bundle\": 1, \"source_bundle_uses_cooccurrence_profile\": 1}\nArtifact families: {\"ci\": 3, \"docs\": 5}\nHelicopter views: {\"schemas\": 2}\nBundle labels: {\"source_backed_fake_real_verification_bundle\": 1}\nCo-occurrence labels: {\"fake_real_data_plus_verification_gap\": 1}", "source": "foundry_mined_dataset", "repo_url": "https://github.com/Va3elina/moex-aggregator", "source_id": "comment-chain-pattern-assumption_checks-d0f065c67edf156b", "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": "Va3elina/moex-aggregator", "source_dataset": "comment_chain_patterns/assumption_checks", "training_usage": "weak_supervision"}}}, {"ruleId": "foundry_assumption_check", "level": "warning", "message": {"text": "Foundry mined assumption checks: Va3elina/moex-aggregator"}, "properties": {"repobilityId": 434438, "scanner": "foundry_dataset", "fingerprint": "b84bc36134016af864b5992f055e11d0cd823ae440dc4d1ed0566c077c125596", "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": "Va3elina/moex-aggregator#76", "human_labels": ["agent_instruction_gap", "source_or_other"], "issue_number": "76", "thread_label": "thread_has_human_issue_and_fix_context", "outcome_label": "claimed_resolved_unverified", "source_backed": true, "max_confidence": 0.92, "repo_full_name": "Va3elina/moex-aggregator", "training_usage": "gold_candidate", "confidence_tier": "high_confidence", "source_chain_id": "evidence-chain-issue_chain-467572f0d3a4dac9", "helicopter_views": {"schemas": 2}, "artifact_families": {"ci": 3, "docs": 5}, "source_chain_kind": "issue_chain", "changed_file_count": 1, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {"source_or_other": 1}, "linked_commit_count": 5, "helicopter_view_count": 2, "source_artifact_count": 8, "classification_reasons": ["source_graph_has_real_artifacts", "source_graph_has_verification_artifacts", "repo_has_isolated_helicopter_views", "link_quality_high_confidence"], "linked_ci_commit_count": 0, "verification_artifact_count": 3, "design_schema_api_artifact_count": 0}, "text": "Comment chain pattern product: assumption_checks\nRepo: Va3elina/moex-aggregator\nThread: Va3elina/moex-aggregator#76\nOutcome: claimed_resolved_unverified\nThread label: thread_has_human_issue_and_fix_context\nSource graph label: source_backed_multi_signal_graph\nReasons: source_graph_has_real_artifacts, source_graph_has_verification_artifacts, repo_has_isolated_helicopter_views, link_quality_high_confidence\nChain evidence:\nIssue/PR evidence chain: Va3elina/moex-aggregator#76\nRepo: Va3elina/moex-aggregator\nThread label: thread_has_human_issue_and_fix_context\nOutcome: claimed_resolved_unverified\nComment count: 1\nLinked commit count: 5\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 1\nLabels: {'agent_instruction_gap': 1}\nPolarities: {'bad': 1}\nChanged file labels: {'source_or_other': 1}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-5955b24e88020833\",\n    \"kind\": \"pull_request_body\",\n    \"label\": \"agent_instruction_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/Va3elina/moex-aggregator/pull/76\",\n    \"text\": \"GitHub feedback: agent_instruction_gap\\nPolarity: bad\\nKind: pull_request_body\\nRepo: Va3elina/moex-aggregator\\nAuthor: Va3elina (User)\\nURL: https://github.com/Va3elina/moex-aggregator/pull/76\\nTitle: feat(signals): \u0444\u0438\u0440\u043c\u0435\u043d\u043d\u044b\u0435 \u043a\u0430\u0441\u0442\u043e\u043c-\u044d\u043c\u043e\u0434\u0437\u0438 Frame \u0432 \u0442\u0435\u043a\u0441\u0442\u0435 \u0430\u043b\u0435\u0440\u0442\u043e\u0432\\nBody:\\n\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a \u0430\u043b\u0435\u0440\u0442\u043e\u0432 `@framesignalbot` \u0431\u044b\u043b \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u044b\u043c \u043f\u043b\u0435\u0439\u0441\u0445\u043e\u043b\u0434\u0435\u0440\u043e\u043c \u00ab\u0421\u0418\u0413\u041d\u0410\u041b \u0424\u0420\u0415\u0419\u041c\u00bb.\\n\u0414\u043e\u0431\u0430\u0432\u0438\u043b \u043a\u0430\u0441\u0442\u043e\u043c-\u044d\u043c\u043e\u0434\u0437\u0438 \u0438\u0437 \u043f\u0430\u043a\u0430 **Frametool** \u0447\u0435\u0440\u0435\u0437 HTML-\u0442\u0435\u0433 `<tg-emoji emoji-id>`:\\n\\n- \ud83d\udd14 \u2014 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a (\u0441\u0438\u0433\u043d\u0430\u043b)\\n- \ud83d\udd04 \u041e\u0418 \u00b7 \ud83d\udcbc \u0444\u043e\u043d\u0434\u044b \u00b7 \ud83d\udcb5 \u0446\u0435\u043d\u0430 \u2014 \u043f\u043e \u0438\u043d\u0434\u0438\u043a\u0430\u0442\u043e\u0440\u0443\\n- \ud83d\udcc8 \u0440\u043e\u0441\u0442/\u043f\u0440\u0438\u0442\u043e\u043a \u00b7 \u26d4\ufe0f \u043f\u0430\u0434\u0435\u043d\u0438\u0435/\u043e\u0442\u0442\u043e\u043a \u2014 \u043f\u043e \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044e\\n\\n\u041f\u043b\u0435\u0439\u0441\u0445\u043e\u043b\u0434\u0435\u0440-emoji \u0432 \u0442\u0435\u0433\u0435 = \u0444\u043e\u043b\u0431\u044d\u043a \u0434\u043b\u044f \u043d\u0435-Premium \u043f\u043e\u043b\u0443\u0447\u0430\u0442\u0435\u043b\u0435\u0439.\\n\\n**\u041f\u043e\u0447\u0435\u043c\u0443 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442:** `@framesignalbot` \u043f\u0435\u0440\u0435\u0434\u0430\u043d Premium-\u0432\u043b\u0430\u0434\u0435\u043b\u044c\u0446\u0443 \u0447\u0435\u0440\u0435\u0437 @BotFather \u2192\\n\u0431\u043e\u0442 \u0432\u043f\u0440\u0430\u0432\u0435 \u0441\u043b\u0430\u0442\u044c \u043a\u0430\u0441\u0442\u043e\u043c-\u044d\u043c\u043e\u0434\u0437\u0438 (\u043f\u0440\u043e\u0432\u0435\u0440\u0435\u043d\u043e live: entity \u0432\u044b\u0436\u0438\u0432\u0430\u0435\u0442 \u0432 `sendMessage`,\\n3 \u0448\u0442. \u043d\u0430 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435). \u041e\u0442\u043f\u0440\u0430\u0432\u043a\u0430 \u0443\u0436\u0435 \u0441 `parse_mode=HTML` \u2192 \u043f\u0440\u0430\u0432\u043a\u0430 \u0442\u043e\u043b\u044c\u043a\u043e \u0432 `format_msg`,\\n\u0431\u0435\u0437 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0430 \u043d\u0430 `entities`/offset'\u044b.\\n\\n**\u0414\u0435\u043f\u043b\u043e\u0439:** `alerts_run.py` \u0433\u043e\u043d\u044f\u0435\u0442\u0441\u044f host-cron'\u043e\u043c \u043a\u0430\u0436\u0434\u044b\u0435 5 \u043c\u0438\u043d \u2192 \u043f\u043e\u0434\u0445\u0432\u0430\u0442\u0438\u0442\u0441\u044f \u043d\u0430\\n\u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u043c \u043f\u0440\u043e\u0433\u043e\u043d\u0435 \u043f\u043e\u0441\u043b\u0435 `git reset` \u0434\u0435\u043f\u043b\u043e\u044f, \u0440\u0435\u0441\u0442\u0430\u0440\u0442 \u0434\u0435\u043c\u043e\u043d\u0430 \u043d\u0435 \u043d\u0443\u0436\u0435\u043d.\\n\\n\u0414\u0432\u0430 \u0442\u0435\u0441\u0442\u043e\u0432\u044b\u0445 \u043f\u0440\u0438\u043c\u0435\u0440\u0430 \u0443\u0436\u0435 \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u044b \u0432 \u0430\u0434\u043c\u0438\u043d-\u0447\u0430\u0442 (\u041e\u0418-\u0440\u043e\u0441\u0442 + \u0444\u043e\u043d\u0434\u044b-\u043e\u0442\u0442\u043e\u043a), \u043e\u0431\u0430 ok,\\n\u043f\u043e 3 \u043a\u0430\u0441\u0442\u043e\u043c-\u044d\u043c\u043e\u0434\u0437\u0438.\\n\\nCo-Authored-By: Claude Opus 4.8 (1M context) <nor\"\n  }\n]\nChanged files:\n[\n  {\n    \"id\": \"github-pr-file-file-97828a1690798658\",\n    \"filename\": \"signals/alerts_run.py\",\n    \"label\": \"source_or_other\",\n    \"status\": \"modified\",\n    \"additions\": 37,\n    \"deletions\": 17,\n    \"changes\": 54,\n    \"blob_url\": \"https://github.com/Va3elina/moex-aggregator/blob/f7e2901af3333e088c11f2fc97e60c7802c1c470/signals%2Falerts_run.py\"\n  }\n]\nLinked chain ids:\n[\"evidence-chain-comment_to_commit-6257ba8b4410996d\"]\nSource graph evidence:\nSource evidence repo graph summary\nRepo: Va3elina/moex-aggregator\nGraph label: source_backed_multi_signal_graph\nNodes: 14\nEdges: 22\nNode types: {\"cooccurrence_profile\": 1, \"github_repo_summary\": 1, \"helicopter_repo_\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/Va3elina/moex-aggregator", "source_id": "comment-chain-pattern-assumption_checks-3639b4a1fc6ef552", "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": "Va3elina/moex-aggregator", "source_dataset": "comment_chain_patterns/assumption_checks", "training_usage": "gold_candidate"}}}, {"ruleId": "foundry_assumption_check", "level": "warning", "message": {"text": "Foundry mined assumption checks: Va3elina/moex-aggregator"}, "properties": {"repobilityId": 434437, "scanner": "foundry_dataset", "fingerprint": "0cf24e3962603bab187a4ad2b3f7f3e2a476c6302db6a24c7cfd88b3dfa952ef", "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": "Va3elina/moex-aggregator#75", "human_labels": ["source_or_other", "test_ci_gap"], "issue_number": "75", "thread_label": "thread_has_human_issue_and_fix_context", "outcome_label": "claimed_resolved_unverified", "source_backed": true, "max_confidence": 0.92, "repo_full_name": "Va3elina/moex-aggregator", "training_usage": "gold_candidate", "confidence_tier": "high_confidence", "source_chain_id": "evidence-chain-issue_chain-ce7a8323818e2446", "helicopter_views": {"schemas": 2}, "artifact_families": {"ci": 3, "docs": 5}, "source_chain_kind": "issue_chain", "changed_file_count": 1, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {"source_or_other": 1}, "linked_commit_count": 5, "helicopter_view_count": 2, "source_artifact_count": 8, "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": 3, "design_schema_api_artifact_count": 0}, "text": "Comment chain pattern product: assumption_checks\nRepo: Va3elina/moex-aggregator\nThread: Va3elina/moex-aggregator#75\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: Va3elina/moex-aggregator#75\nRepo: Va3elina/moex-aggregator\nThread label: thread_has_human_issue_and_fix_context\nOutcome: claimed_resolved_unverified\nComment count: 1\nLinked commit count: 5\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 1\nLabels: {'test_ci_gap': 1}\nPolarities: {'bad': 1}\nChanged file labels: {'source_or_other': 1}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-3d7256b5b183d830\",\n    \"kind\": \"pull_request_body\",\n    \"label\": \"test_ci_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/Va3elina/moex-aggregator/pull/75\",\n    \"text\": \"GitHub feedback: test_ci_gap\\nPolarity: bad\\nKind: pull_request_body\\nRepo: Va3elina/moex-aggregator\\nAuthor: Va3elina (User)\\nURL: https://github.com/Va3elina/moex-aggregator/pull/75\\nTitle: fix(market_cap): \u0443\u0441\u0442\u043e\u0439\u0447\u0438\u0432\u0430\u044f \u043a\u0430\u043b\u0438\u0431\u0440\u043e\u0432\u043a\u0430 gap-fill + jump-guard (\u0444\u0438\u043a\u0441 \u00ab\u0437\u0430\u0431\u043e\u0440\u0430\u00bb \u043a\u0430\u043f/\u0412\u0412\u041f)\\nBody:\\n## \u0421\u0438\u043c\u043f\u0442\u043e\u043c\\n\u041d\u0430 \u0433\u0440\u0430\u0444\u0438\u043a\u0435 \u0411\u0430\u0444\u0444\u0435\u0442\u0430 (\u043a\u0430\u043f/\u0412\u0412\u041f) \u0443 \u043f\u0440\u0430\u0432\u043e\u0433\u043e \u043a\u0440\u0430\u044f \u2014 \u00ab\u0437\u0430\u0431\u043e\u0440\u00bb: 5 \u043c\u0430\u0439\u0441\u043a\u0438\u0445 \u0434\u043d\u0435\u0439\\n(03,11,17,24,31) \u0442\u043e\u0440\u0447\u0430\u0442 \u043d\u0430 63-66 \u0442\u0440\u043b\u043d \u043f\u0440\u0438 \u0444\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u043c \u0443\u0440\u043e\u0432\u043d\u0435 ~54.\\n\\n## \u041f\u0440\u0438\u0447\u0438\u043d\u0430\\n`compute_total_from_candles` \u043a\u0430\u043b\u0438\u0431\u0440\u043e\u0432\u0430\u043b \u043c\u043d\u043e\u0436\u0438\u0442\u0435\u043b\u044c gap-fill \u043f\u043e **\u043e\u0434\u043d\u043e\u043c\u0443 \u0441\u0430\u043c\u043e\u043c\u0443\\n\u0441\u0432\u0435\u0436\u0435\u043c\u0443** SmartLab-\u044f\u043a\u043e\u0440\u044e. 2026-06-17 SmartLab \u043e\u0442\u0434\u0430\u043b \u0430\u043d\u043e\u043c\u0430\u043b\u044c\u043d\u044b\u0435 60.8 \u0442\u0440\u043b\u043d\\n(\u043f\u0440\u043e\u0442\u0438\u0432 52.9 \u043d\u0430\u043a\u0430\u043d\u0443\u043d\u0435, \u0440\u044b\u043d\u043e\u043a \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u043f\u0430\u0434\u0430\u043b \u043d\u0430 ~2% \u043f\u043e IMOEX/MCFTR). \u042d\u0442\u043e\u0442 \u044f\u043a\u043e\u0440\u044c\\n\u0440\u0430\u0437\u0434\u0443\u043b \u043c\u043d\u043e\u0436\u0438\u0442\u0435\u043b\u044c \u043d\u0430 ~15% \u2192 \u0437\u0430\u043b\u0438\u0442\u044b\u0435 \u00ab\u0434\u044b\u0440\u044f\u0432\u044b\u0435\u00bb \u0434\u043d\u0438 (\u0432\u044b\u0445\u043e\u0434\u043d\u044b\u0435/\u043f\u0440\u0430\u0437\u0434\u043d\u0438\u043a \u0431\u0435\u0437 \u0436\u0438\u0432\u043e\u0433\u043e\\n\u044f\u043a\u043e\u0440\u044f) \u0432\u044b\u0448\u043b\u0438 \u043d\u0430 ~18% \u0432\u044b\u0448\u0435 \u043d\u043e\u0440\u043c\u044b.\\n\\n## \u0424\u0438\u043a\u0441\\n- **\u041a\u0430\u043b\u0438\u0431\u0440\u043e\u0432\u043a\u0430**: \u043c\u0435\u0434\u0438\u0430\u043d\u0430 \u043f\u043e 7 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u043c \u044f\u043a\u043e\u0440\u044f\u043c \u0432\u043c\u0435\u0441\u0442\u043e \u043e\u0434\u043d\u043e\u0433\u043e \u0441\u0432\u0435\u0436\u0435\u0433\u043e \u2014 \u0432\u044b\u0431\u0440\u043e\u0441\\n  \u043e\u0434\u043d\u043e\u0433\u043e \u0434\u043d\u044f \u0431\u043e\u043b\u044c\u0448\u0435 \u043d\u0435 \u043e\u0442\u0440\u0430\u0432\u043b\u044f\u0435\u0442 \u0437\u0430\u043b\u0438\u0432\u043a\u0443.\\n- **Jump-guard** \u0432 \u0434\u043d\u0435\u0432\u043d\u043e\u043c \u043f\u0430\u0440\u0441\u0435 SmartLab: \u0441\u043a\u0430\u0447\u043e\u043a >30% \u0434/\u0434 \u043d\u0435 \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u0442\u0441\u044f\\n  (\u043f\u043e\u0447\u0442\u0438 \u0432\u0441\u0435\u0433\u0434\u0430 \u043e\u0448\u0438\u0431\u043a\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b/\u043f\u0430\u0440\u0441\u0430), >15% \u2014 \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u0442\u0441\u044f \u0441 warning.\\n\\n## \u0414\u0430\u043d\u043d\u044b\u0435\\n5 \u043b\u043e\u0436\u043d\u044b\u0445 `COMPUTED_CANDLES`-\u0441\u0442\u0440\u043e\u043a \u0437\u0430 \u043c\u0430\u0439 \u0443\u0436\u0435 \u0443\u0434\u0430\u043b\u0435\u043d\u044b \u0438\u0437 `macro_data` \u043d\u0430 \u043f\u0440\u043e\u0434\u0435 \u2014\\n\u0433\u0440\u0430\u0444\u0438\u043a \u0443\u0436\u0435 \u0433\u043b\u0430\u0434\u043a\u0438\u0439 (\u043f\u0440\u043e\u0432\u0435\u0440\u0435\u043d\u043e live API). \u041f\u043e\u0434\u043e\u0437\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 0\"\n  }\n]\nChanged files:\n[\n  {\n    \"id\": \"github-pr-file-file-583343e437cf3c81\",\n    \"filename\": \"Macro/fetch_market_cap.py\",\n    \"label\": \"source_or_other\",\n    \"status\": \"modified\",\n    \"additions\": 35,\n    \"deletions\": 7,\n    \"changes\": 42,\n    \"blob_url\": \"https://github.com/Va3elina/moex-aggregator/blob/b4f464339fa3833e340a058090c407d51b0844fb/Macro%2Ffetch_market_cap.py\"\n  }\n]\nLinked chain ids:\n[\"evidence-chain-comment_to_commit-7de48bb9b288ef64\"]\nSource graph evidence:\nSource evidence repo graph summary\nRepo: Va3elina/moex-aggregator\nGraph label: source_backed_multi_signal_graph\nNodes: 14\nEdges: 22\nNode types: {\"cooccurrence_profile\": 1, \"github_repo_summary\": 1,\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/Va3elina/moex-aggregator", "source_id": "comment-chain-pattern-assumption_checks-4e16150ce361b258", "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": "Va3elina/moex-aggregator", "source_dataset": "comment_chain_patterns/assumption_checks", "training_usage": "gold_candidate"}}}, {"ruleId": "foundry_assumption_check", "level": "warning", "message": {"text": "Foundry mined assumption checks: Va3elina/moex-aggregator"}, "properties": {"repobilityId": 434436, "scanner": "foundry_dataset", "fingerprint": "2807adfd30e56771421d41a37d9570d17a301bde3327cca6d396fdafb22ec025", "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": "Va3elina/moex-aggregator#72", "human_labels": ["agent_instruction_gap", "dependency_or_build"], "issue_number": "72", "thread_label": "thread_has_human_issue_and_fix_context", "outcome_label": "claimed_resolved_unverified", "source_backed": true, "max_confidence": 0.92, "repo_full_name": "Va3elina/moex-aggregator", "training_usage": "gold_candidate", "confidence_tier": "high_confidence", "source_chain_id": "evidence-chain-issue_chain-b3ecb7b536440104", "helicopter_views": {"schemas": 2}, "artifact_families": {"ci": 3, "docs": 5}, "source_chain_kind": "issue_chain", "changed_file_count": 1, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {"dependency_or_build": 1}, "linked_commit_count": 5, "helicopter_view_count": 2, "source_artifact_count": 8, "classification_reasons": ["source_graph_has_real_artifacts", "source_graph_has_verification_artifacts", "repo_has_isolated_helicopter_views", "link_quality_high_confidence"], "linked_ci_commit_count": 0, "verification_artifact_count": 3, "design_schema_api_artifact_count": 0}, "text": "Comment chain pattern product: assumption_checks\nRepo: Va3elina/moex-aggregator\nThread: Va3elina/moex-aggregator#72\nOutcome: claimed_resolved_unverified\nThread label: thread_has_human_issue_and_fix_context\nSource graph label: source_backed_multi_signal_graph\nReasons: source_graph_has_real_artifacts, source_graph_has_verification_artifacts, repo_has_isolated_helicopter_views, link_quality_high_confidence\nChain evidence:\nIssue/PR evidence chain: Va3elina/moex-aggregator#72\nRepo: Va3elina/moex-aggregator\nThread label: thread_has_human_issue_and_fix_context\nOutcome: claimed_resolved_unverified\nComment count: 1\nLinked commit count: 5\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 1\nLabels: {'agent_instruction_gap': 1}\nPolarities: {'bad': 1}\nChanged file labels: {'dependency_or_build': 1}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-1a6390dee9ea95c6\",\n    \"kind\": \"pull_request_body\",\n    \"label\": \"agent_instruction_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/Va3elina/moex-aggregator/pull/72\",\n    \"text\": \"GitHub feedback: agent_instruction_gap\\nPolarity: bad\\nKind: pull_request_body\\nRepo: Va3elina/moex-aggregator\\nAuthor: Va3elina (User)\\nURL: https://github.com/Va3elina/moex-aggregator/pull/72\\nTitle: fix(frontend): postbuild \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u0442 per-ticker \u043b\u043e\u0433\u043e \u0432 dist/logos (\u0445\u043e\u0442\u0444\u0438\u043a\u0441)\\nBody:\\n\u0425\u043e\u0442\u0444\u0438\u043a\u0441 \u043a #71. \u0422\u043e\u0442 PR \u043f\u0435\u0440\u0435\u0432\u0451\u043b `TickerLogo` \u043d\u0430 `<img src=/logos/<ticker>.png>`,\\n\u043d\u043e `postbuild` \u0432\u044b\u0440\u0435\u0437\u0430\u043b \u0432\u0441\u0435 PNG \u0438\u0437 `dist/logos` \u043a\u0440\u043e\u043c\u0435 `sprite.png` \u2192 \u043d\u0430 \u043f\u0440\u043e\u0434\u0435\\n\u043b\u043e\u0433\u043e \u043e\u0442\u0434\u0430\u0432\u0430\u043b\u0438\u0441\u044c \u043a\u0430\u043a `index.html`-\u0444\u043e\u043b\u043b\u0431\u044d\u043a \u0438 \u043f\u0430\u0434\u0430\u043b\u0438 \u0432 \u043a\u0440\u0443\u0436\u043a\u0438-\u0438\u043d\u0438\u0446\u0438\u0430\u043b\u044b.\\n\\n\u0423\u0431\u0440\u0430\u043b `find -delete` \u0438\u0437 postbuild. \u041f\u0440\u043e\u0432\u0435\u0440\u0435\u043d\u043e \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u043c \u0431\u0438\u043b\u0434\u043e\u043c: 157 per-ticker\\nPNG \u0432 `dist/logos`, `SBER.png` = PNG 256\u00d7256, `npm run build` \u0437\u0435\u043b\u0451\u043d\u044b\u0439.\\n\\n\u0417\u0430\u043e\u0434\u043d\u043e \u0447\u0438\u043d\u0438\u0442 \u043b\u0430\u0442\u0435\u043d\u0442\u043d\u044b\u0439 \u0431\u0430\u0433 \u2014 \u0442\u043e\u0442 \u0436\u0435 `find` \u0443\u0434\u0430\u043b\u044f\u043b `*.svg`, \u043b\u043e\u043c\u0430\u044f \u0431\u0443\u0434\u0443\u0449\u0438\u0439\\n\u0430\u043f\u0433\u0440\u0435\u0439\u0434 \u043b\u043e\u0433\u043e \u043d\u0430 \u0432\u0435\u043a\u0442\u043e\u0440.\\n\\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>\"\n  }\n]\nChanged files:\n[\n  {\n    \"id\": \"github-pr-file-file-e564c72cc5c075ef\",\n    \"filename\": \"frontend/package.json\",\n    \"label\": \"dependency_or_build\",\n    \"status\": \"modified\",\n    \"additions\": 1,\n    \"deletions\": 1,\n    \"changes\": 2,\n    \"blob_url\": \"https://github.com/Va3elina/moex-aggregator/blob/f5173966c6c80d4f6da1242a1fd3ea61824b804b/frontend%2Fpackage.json\"\n  }\n]\nLinked chain ids:\n[\"evidence-chain-comment_to_commit-6595bb0c9534c974\"]\nSource graph evidence:\nSource evidence repo graph summary\nRepo: Va3elina/moex-aggregator\nGraph label: source_backed_multi_signal_graph\nNodes: 14\nEdges: 22\nNode types: {\"cooccurrence_profile\": 1, \"github_repo_summary\": 1, \"helicopter_repo_view\": 2, \"repo\": 1, \"source_artifact\": 8, \"source_bundle\": 1}\nEdge types: {\"artifact_needs_claim_verification\": 5, \"artifact_supports_verification\": 3, \"repo_has_cooccurrence_profile\": 1, \"repo_has_github_evidence_summary\": 1, \"repo_has_schemas_helicopter_view\": 2, \"repo_has_source_artifact\": 8, \"repo_has_source_bundle\": 1, \"source_bundle_uses_cooccurrence_profile\": 1}\nArtifact famil\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/Va3elina/moex-aggregator", "source_id": "comment-chain-pattern-assumption_checks-1d1d3f6e0cfbb6a8", "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": "Va3elina/moex-aggregator", "source_dataset": "comment_chain_patterns/assumption_checks", "training_usage": "gold_candidate"}}}, {"ruleId": "foundry_assumption_check", "level": "warning", "message": {"text": "Foundry mined assumption checks: Va3elina/moex-aggregator"}, "properties": {"repobilityId": 434435, "scanner": "foundry_dataset", "fingerprint": "c5ed312d23ef681788a8792bacba25168a5774da58e7335bccc66cacf0672301", "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": "Va3elina/moex-aggregator#71", "human_labels": ["agent_instruction_gap", "ui_or_frontend"], "issue_number": "71", "thread_label": "thread_has_human_issue_and_fix_context", "outcome_label": "claimed_resolved_unverified", "source_backed": true, "max_confidence": 0.92, "repo_full_name": "Va3elina/moex-aggregator", "training_usage": "gold_candidate", "confidence_tier": "high_confidence", "source_chain_id": "evidence-chain-issue_chain-07c3eb22437fcfda", "helicopter_views": {"schemas": 2}, "artifact_families": {"ci": 3, "docs": 5}, "source_chain_kind": "issue_chain", "changed_file_count": 1, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {"ui_or_frontend": 1}, "linked_commit_count": 5, "helicopter_view_count": 2, "source_artifact_count": 8, "classification_reasons": ["source_graph_has_real_artifacts", "source_graph_has_verification_artifacts", "repo_has_isolated_helicopter_views", "link_quality_high_confidence"], "linked_ci_commit_count": 0, "verification_artifact_count": 3, "design_schema_api_artifact_count": 0}, "text": "Comment chain pattern product: assumption_checks\nRepo: Va3elina/moex-aggregator\nThread: Va3elina/moex-aggregator#71\nOutcome: claimed_resolved_unverified\nThread label: thread_has_human_issue_and_fix_context\nSource graph label: source_backed_multi_signal_graph\nReasons: source_graph_has_real_artifacts, source_graph_has_verification_artifacts, repo_has_isolated_helicopter_views, link_quality_high_confidence\nChain evidence:\nIssue/PR evidence chain: Va3elina/moex-aggregator#71\nRepo: Va3elina/moex-aggregator\nThread label: thread_has_human_issue_and_fix_context\nOutcome: claimed_resolved_unverified\nComment count: 1\nLinked commit count: 5\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 1\nLabels: {'agent_instruction_gap': 1}\nPolarities: {'bad': 1}\nChanged file labels: {'ui_or_frontend': 1}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-496c1031473011d2\",\n    \"kind\": \"pull_request_body\",\n    \"label\": \"agent_instruction_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/Va3elina/moex-aggregator/pull/71\",\n    \"text\": \"GitHub feedback: agent_instruction_gap\\nPolarity: bad\\nKind: pull_request_body\\nRepo: Va3elina/moex-aggregator\\nAuthor: Va3elina (User)\\nURL: https://github.com/Va3elina/moex-aggregator/pull/71\\nTitle: fix(frontend): TickerLogo \u2014 \u043f\u043e\u043b\u043d\u043e\u0440\u0430\u0437\u043c\u0435\u0440\u043d\u044b\u0439 <img> \u0432\u043c\u0435\u0441\u0442\u043e 80px-\u0441\u043f\u0440\u0430\u0439\u0442\u0430\\nBody:\\n## \u041f\u0440\u043e\u0431\u043b\u0435\u043c\u0430\\n\u041f\u0440\u0438 zoom-out \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0430 (\u043c\u0430\u0441\u0448\u0442\u0430\u0431 <100%) \u043b\u043e\u0433\u043e\u0442\u0438\u043f\u044b \u0442\u0438\u043a\u0435\u0440\u043e\u0432 \u043d\u0430 \u0438\u043d\u0434\u0438\u043a\u0430\u0442\u043e\u0440\u0430\u0445 \u041e\u0418,\\n\u0441\u0435\u0437\u043e\u043d\u043d\u043e\u0441\u0442\u0438, \u00ab\u0434\u0435\u043d\u044c\u0433\u0438 \u0432 \u0444\u043e\u043d\u0434\u0430\u0445\u00bb, \u00ab\u043f\u043e\u043a\u0443\u043f\u043a\u0438 \u0444\u043e\u043d\u0434\u043e\u0432\u00bb \u0442\u0435\u0440\u044f\u043b\u0438 \u0447\u0451\u0442\u043a\u043e\u0441\u0442\u044c \u2014 \u043c\u044f\u0433\u043a\u043e\u0441\u0442\u044c \u0438\\n\u00ab\u0433\u0440\u044f\u0437\u044c\u00bb \u043f\u043e \u043a\u0440\u0430\u044f\u043c. \u041f\u0440\u0438\u0447\u0438\u043d\u0430: \u043b\u043e\u0433\u043e \u0440\u0435\u043d\u0434\u0435\u0440\u0438\u043b\u0438\u0441\u044c \u0438\u0437 PNG-\u0441\u043f\u0440\u0430\u0439\u0442\u0430 (\u044f\u0447\u0435\u0439\u043a\u0430 80px) \u0447\u0435\u0440\u0435\u0437\\n`background-image`; \u0434\u0440\u043e\u0431\u043d\u044b\u0439 `background-size`/`background-position` \u043f\u0440\u0438 zoom\\n\u0437\u0430\u0441\u0442\u0430\u0432\u043b\u044f\u043b \u0431\u0440\u0430\u0443\u0437\u0435\u0440 \u0440\u0435\u0441\u044d\u043c\u043f\u043b\u0438\u0442\u044c \u0443\u043f\u0430\u043a\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u0430\u0442\u043b\u0430\u0441 \u0441 \u0441\u0430\u0431\u043f\u0438\u043a\u0441\u0435\u043b\u044c\u043d\u044b\u043c \u0441\u0434\u0432\u0438\u0433\u043e\u043c \u0438\\n\u043f\u0440\u0438\u0445\u0432\u0430\u0442\u044b\u0432\u0430\u0442\u044c \u0441\u043e\u0441\u0435\u0434\u043d\u0438\u0435 \u044f\u0447\u0435\u0439\u043a\u0438. \u0412\u0434\u043e\u0431\u0430\u0432\u043e\u043a \u0438\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u0438 256\u00d7256 \u0441\u043f\u0440\u0430\u0439\u0442 \u0443\u0436\u0438\u043c\u0430\u043b \u0434\u043e 80px\\n\u0435\u0449\u0451 \u0434\u043e \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0430 \u2014 \u0437\u0430\u043f\u0430\u0441 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u044f \u0442\u0435\u0440\u044f\u043b\u0441\u044f.\\n\\n## \u0420\u0435\u0448\u0435\u043d\u0438\u0435\\n`TickerLogo` \u0442\u0435\u043f\u0435\u0440\u044c \u0440\u0435\u043d\u0434\u0435\u0440\u0438\u0442 `/logos/<ticker>.png` \u043d\u0430\u043f\u0440\u044f\u043c\u0443\u044e \u0447\u0435\u0440\u0435\u0437 `<img>`\\n(`object-fit: contain`, `loading=lazy`, `decoding=async`, `onError` \u2192 fallback).\\n\u0418\u0441\u0442\u043e\u0447\u043d\u0438\u043a 256px \u043c\u0430\u0441\u0448\u0442\u0430\u0431\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u043e\u043c \u043f\u043e\u0434 \u043f\u0440\u043e\u043f `size` \u2014 \u0447\u0451\u0442\u043a\u043e \u043f\u0440\u0438 zoom-out \u0438\\n\u043d\u0430 retina.\\n\\n## \u0413\u0430\u0440\u0430\u043d\u0442\u0438\u0438\\n- **\u0420\u0430\u0437\u043c\u0435\u0440 \u043d\u0430 \u044d\u043a\u0440\u0430\u043d\u0435 \u043d\u0435 \u043c\u0435\u043d\u044f\u0435\u0442\u0441\u044f** \u2014 `width/height = size`, \u043f\u0440\u043e\u043f \u043d\u0435 \u0442\u0440\u043e\u043d\u0443\u0442.\\n- **\u041d\u0430\u0431\u043e\u0440 \u043b\u043e\u0433\u043e \u0442\u043e\u0442 \u0436\u0435** \u2014 \u043c\u0430\u043d\u0438\u0444\u0435\u0441\u0442 \u043e\u0441\u0442\u0430\u0451\u0442\u0441\u044f \u0440\u0435\u0435\u0441\u0442\u0440\u043e\u043c \u00ab\u0443 \u043a\u0430\u043a\u043e\u0433\u043e \u0442\u0438\u043a\u0435\u0440\"\n  }\n]\nChanged files:\n[\n  {\n    \"id\": \"github-pr-file-file-2b7b05dd0695aa7b\",\n    \"filename\": \"frontend/src/components/TickerLogo.tsx\",\n    \"label\": \"ui_or_frontend\",\n    \"status\": \"modified\",\n    \"additions\": 24,\n    \"deletions\": 50,\n    \"changes\": 74,\n    \"blob_url\": \"https://github.com/Va3elina/moex-aggregator/blob/2fdfbbfdd6844baebcaea5b90cbec0b105482bc1/frontend%2Fsrc%2Fcomponents%2FTickerLogo.tsx\"\n  }\n]\nLinked chain ids:\n[\"evidence-chain-comment_to_commit-6e7ed5ffa5a1bbbd\"]\nSource graph evidence:\nSource evidence repo graph summary\nRepo: Va3elina/moex-aggregator\nGraph label: source_backed_multi_signal_graph\nNodes: 14\nEdges: 22\nNode types: {\"cooccurrence_profile\": 1, \"github_re\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/Va3elina/moex-aggregator", "source_id": "comment-chain-pattern-assumption_checks-86d7e9833e1fe707", "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": "Va3elina/moex-aggregator", "source_dataset": "comment_chain_patterns/assumption_checks", "training_usage": "gold_candidate"}}}, {"ruleId": "foundry_assumption_check", "level": "warning", "message": {"text": "Foundry mined assumption checks: Va3elina/moex-aggregator"}, "properties": {"repobilityId": 434434, "scanner": "foundry_dataset", "fingerprint": "ea2654bc134f75d19993295e5cf4a828cee7fb127aef97ca75897506e58b5e35", "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": "Va3elina/moex-aggregator#70", "human_labels": ["api_integration_gap", "api_or_backend", "source_or_other"], "issue_number": "70", "thread_label": "thread_has_human_issue_and_fix_context", "outcome_label": "claimed_resolved_unverified", "source_backed": true, "max_confidence": 0.92, "repo_full_name": "Va3elina/moex-aggregator", "training_usage": "gold_candidate", "confidence_tier": "high_confidence", "source_chain_id": "evidence-chain-issue_chain-5fe64c63f77b92cc", "helicopter_views": {"schemas": 2}, "artifact_families": {"ci": 3, "docs": 5}, "source_chain_kind": "issue_chain", "changed_file_count": 4, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {"api_or_backend": 1, "source_or_other": 3}, "linked_commit_count": 1, "helicopter_view_count": 2, "source_artifact_count": 8, "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": 3, "design_schema_api_artifact_count": 0}, "text": "Comment chain pattern product: assumption_checks\nRepo: Va3elina/moex-aggregator\nThread: Va3elina/moex-aggregator#70\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: Va3elina/moex-aggregator#70\nRepo: Va3elina/moex-aggregator\nThread label: thread_has_human_issue_and_fix_context\nOutcome: claimed_resolved_unverified\nComment count: 1\nLinked commit count: 1\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 4\nLabels: {'api_integration_gap': 1}\nPolarities: {'bad': 1}\nChanged file labels: {'source_or_other': 3, 'api_or_backend': 1}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-8e79ac765febc5fd\",\n    \"kind\": \"pull_request_body\",\n    \"label\": \"api_integration_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/Va3elina/moex-aggregator/pull/70\",\n    \"text\": \"GitHub feedback: api_integration_gap\\nPolarity: bad\\nKind: pull_request_body\\nRepo: Va3elina/moex-aggregator\\nAuthor: Va3elina (User)\\nURL: https://github.com/Va3elina/moex-aggregator/pull/70\\nTitle: feat(monitoring): pipeline_runs heartbeat \u2014 \u043f\u0443\u043b\u044c\u0441 \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0432 (\u0417\u0430\u0445\u043e\u0434 1)\\nBody:\\n## \u0417\u0430\u0445\u043e\u0434 1 \u0430\u0443\u0434\u0438\u0442\u0430: \u0441\u0442\u0430\u0442\u0443\u0441 \u0417\u0410\u041f\u0423\u0421\u041a\u0410 \u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0432\\n\u0415\u0434\u0438\u043d\u044b\u0439 heartbeat \u043f\u043e \u0432\u0441\u0435\u043c \u0441\u043a\u0440\u0438\u043f\u0442\u0430\u043c \u0438\u043d\u0433\u0435\u0441\u0442\u0430 \u2192 /api/health/data, \u0447\u0442\u043e\u0431\u044b \u0440\u0443\u0442\u0438\u043d\u0430 \u0432\u0438\u0434\u0435\u043b\u0430 \u00ab\u043a\u0442\u043e \u043e\u0442\u0440\u0430\u0431\u043e\u0442\u0430\u043b \u0438 \u043d\u0435 \u0443\u043f\u0430\u043b \u043b\u0438\u00bb (\u0430 \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u0441\u0432\u0435\u0436\u0435\u0441\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0445).\\n\\n## \u0427\u0442\u043e\\n- `pipeline_heartbeat.record_pipeline_run()` \u2014 \u0430\u043f\u0441\u0435\u0440\u0442 \u0441\u0442\u0440\u043e\u043a\u0438 \u043d\u0430 \u043f\u0430\u0439\u043f\u043b\u0430\u0439\u043d \u0432 `pipeline_runs` (last_run_at/last_success_at/status/note/duration). \u041e\u0431\u0451\u0440\u043d\u0443\u0442 \u0432 try/except \u2014 **\u043d\u0435 \u043b\u043e\u043c\u0430\u0435\u0442 \u0444\u0435\u0442\u0447**. \u0422\u0430\u0431\u043b\u0438\u0446\u0430 \u0441\u0430\u043c\u043e\u0441\u043e\u0437\u0434\u0430\u0451\u0442\u0441\u044f (CREATE IF NOT EXISTS).\\n- `main_orchestrator.run_script()` \u2014 \u043e\u0431\u0451\u0440\u0442\u043a\u0430 \u043f\u0438\u0448\u0435\u0442 heartbeat \u043f\u043e\u0441\u043b\u0435 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043f\u0440\u043e\u0433\u043e\u043d\u0430 \u2192 \u043f\u043e\u043a\u0440\u044b\u0432\u0430\u0435\u0442 \u0432\u0441\u0435 13 \u043e\u0440\u043a\u0435\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u043d\u044b\u0445 \u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0432 **\u0440\u0430\u0432\u043d\u043e\u043c\u0435\u0440\u043d\u043e** (\u0432\u043a\u043b. breadth/dividends/futures_turnover, \u0443 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043d\u0435 \u0431\u044b\u043b\u043e \u0444\u0430\u0439\u043b-\u043b\u043e\u0433\u043e\u0432).\\n- `/api/health/data` \u2014 \u0441\u0435\u043a\u0446\u0438\u044f `pipelines[]` + `failed_pipelines`.\\n- Dockerfile: COPY pipeline_heartbeat.py (\u0438\u043d\u0430\u0447\u0435 \u043d\u0435 \u043f\u043e\u043f\u0430\u0434\u0451\u0442 \u0432 \u043e\u0431\u0440\u0430\u0437 \u043e\u0440\u043a\u0435\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u0430).\\n\\n## \u0411\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u044c/\u0440\u0438\u0441\u043a\\n\u0422\u043e\u043b\u044c\u043a\u043e \u043d\u043e\u0432\u0430\u044f \u0442\u0430\u0431\u043b\u0438\u0446\u0430 + read-only \u0447\u0442\u0435\u043d\u0438\u0435 \u0432 \u044d\u043d\u0434\u043f\u043e\u0438\u043d\u0442\u0435; \u0437\u0430\u043f\u0438\u0441\u044c heartbeat best-effort. \u0421\u0432\u0435\u0436\u0435\u0441\u0442\u044c-\u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u043d\u0435 \u0442\u0440\u043e\u043d\u0443\u0442\u044b.\\n\\n\"\n  }\n]\nChanged files:\n[\n  {\n    \"id\": \"github-pr-file-file-71fa82b3dc81fd90\",\n    \"filename\": \"Dockerfile\",\n    \"label\": \"source_or_other\",\n    \"status\": \"modified\",\n    \"additions\": 1,\n    \"deletions\": 0,\n    \"changes\": 1,\n    \"blob_url\": \"https://github.com/Va3elina/moex-aggregator/blob/e8429c58efc0906da4223368015ef9a00cd0fcfe/Dockerfile\"\n  },\n  {\n    \"id\": \"github-pr-file-file-1596a140d8aa4712\",\n    \"filename\": \"api/routers/health_monitor.py\",\n    \"label\": \"api_or_backend\",\n    \"status\": \"modified\",\n    \"additions\": 24,\n    \"deletions\": 0,\n    \"changes\": 24,\n    \"blob_url\": \"https://github.com/Va3elina/moex-aggregator/blob/e8429c58efc\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/Va3elina/moex-aggregator", "source_id": "comment-chain-pattern-assumption_checks-dd30f05050bb6d91", "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": "Va3elina/moex-aggregator", "source_dataset": "comment_chain_patterns/assumption_checks", "training_usage": "gold_candidate"}}}, {"ruleId": "foundry_assumption_check", "level": "warning", "message": {"text": "Foundry mined assumption checks: Va3elina/moex-aggregator"}, "properties": {"repobilityId": 434433, "scanner": "foundry_dataset", "fingerprint": "ea5ac54ab52ac9947908f95cdd5048c7656247905410c5cdbcdea052ad5a43fa", "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": "Va3elina/moex-aggregator#7", "human_labels": ["human_feedback_general"], "issue_number": "7", "thread_label": "thread_needs_classification", "outcome_label": "ambiguous_needs_more_evidence", "source_backed": true, "max_confidence": 0.737, "repo_full_name": "Va3elina/moex-aggregator", "training_usage": "weak_supervision", "confidence_tier": "weak_supervision", "source_chain_id": "evidence-chain-issue_chain-6e804ba37cf52d4f", "helicopter_views": {"schemas": 2}, "artifact_families": {"ci": 3, "docs": 5}, "source_chain_kind": "issue_chain", "changed_file_count": 0, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {}, "linked_commit_count": 3, "helicopter_view_count": 2, "source_artifact_count": 8, "classification_reasons": ["source_graph_has_real_artifacts", "source_graph_has_verification_artifacts", "repo_has_isolated_helicopter_views", "link_quality_weak_supervision"], "linked_ci_commit_count": 0, "verification_artifact_count": 3, "design_schema_api_artifact_count": 0}, "text": "Comment chain pattern product: assumption_checks\nRepo: Va3elina/moex-aggregator\nThread: Va3elina/moex-aggregator#7\nOutcome: ambiguous_needs_more_evidence\nThread label: thread_needs_classification\nSource graph label: source_backed_multi_signal_graph\nReasons: source_graph_has_real_artifacts, source_graph_has_verification_artifacts, repo_has_isolated_helicopter_views, link_quality_weak_supervision\nChain evidence:\nIssue/PR evidence chain: Va3elina/moex-aggregator#7\nRepo: Va3elina/moex-aggregator\nThread label: thread_needs_classification\nOutcome: ambiguous_needs_more_evidence\nComment count: 1\nLinked commit count: 3\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 0\nLabels: {'human_feedback_general': 1}\nPolarities: {'neutral': 1}\nChanged file labels: {}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-902965ff79a1a320\",\n    \"kind\": \"pull_request_body\",\n    \"label\": \"human_feedback_general\",\n    \"polarity\": \"neutral\",\n    \"url\": \"https://github.com/Va3elina/moex-aggregator/pull/7\",\n    \"text\": \"GitHub feedback: human_feedback_general\\nPolarity: neutral\\nKind: pull_request_body\\nRepo: Va3elina/moex-aggregator\\nAuthor: Va3elina (User)\\nURL: https://github.com/Va3elina/moex-aggregator/pull/7\\nTitle: feat(funds,cbr): \u043a\u0440\u0443\u043f\u043d\u0435\u0435 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u044f \u0432\u043a\u043b\u0430\u0434\u043e\u043a, \u0431\u0435\u0437 \u0442\u0438\u043a\u0435\u0440\u043e\u0432, \u043a\u043e\u043d\u0442\u0440\u0430\u0441\u0442\u043d\u0435\u0435 \u043d\u0435\u0430\u043a\u0442\u0438\u0432\u043d\u044b\u0435\\nBody:\\n\u041f\u0440\u0430\u0432\u043a\u0438 \u0432\u043a\u043b\u0430\u0434\u043e\u043a \u0432\u044b\u0431\u043e\u0440\u0430 \u0444\u043e\u043d\u0434\u0430 (\u0414\u0435\u043d\u044c\u0433\u0438 \u0432 \u0444\u043e\u043d\u0434\u0430\u0445 \u0438 \u041f\u043e\u0442\u043e\u043a \u043a\u0430\u043f\u0438\u0442\u0430\u043b\u0430): \u0443\u0431\u0440\u0430\u043d\u044b \u0442\u0438\u043a\u0435\u0440\u044b-\u043f\u0440\u0438\u043f\u0438\u0441\u043a\u0438, \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u044f \u0442\u0438\u043f\u043e\u0432 \u0444\u043e\u043d\u0434\u043e\u0432 \u043a\u0440\u0443\u043f\u043d\u0435\u0435, \u043d\u0435\u0430\u043a\u0442\u0438\u0432\u043d\u044b\u0435 \u0437\u0430\u0442\u0435\u043c\u043d\u0451\u043d\u043d\u044b\u0435 \u0432\u043a\u043b\u0430\u0434\u043a\u0438 \u043a\u043e\u043d\u0442\u0440\u0430\u0441\u0442\u043d\u0435\u0435. \u0422\u043e\u043b\u044c\u043a\u043e \u0444\u0440\u043e\u043d\u0442 (index.css + FundsMoneyPage.tsx). \u041c\u0435\u0440\u0434\u0436 \u0430\u0432\u0442\u043e\u0434\u0435\u043f\u043b\u043e\u0438\u0442 \u043f\u0440\u043e\u0434.\"\n  }\n]\nChanged files:\n[]\nLinked chain ids:\n[\"evidence-chain-comment_to_commit-b8f87f89d2f2bc9c\"]\nSource graph evidence:\nSource evidence repo graph summary\nRepo: Va3elina/moex-aggregator\nGraph label: source_backed_multi_signal_graph\nNodes: 14\nEdges: 22\nNode types: {\"cooccurrence_profile\": 1, \"github_repo_summary\": 1, \"helicopter_repo_view\": 2, \"repo\": 1, \"source_artifact\": 8, \"source_bundle\": 1}\nEdge types: {\"artifact_needs_claim_verification\": 5, \"artifact_supports_verification\": 3, \"repo_has_cooccurrence_profile\": 1, \"repo_has_github_evidence_summary\": 1, \"repo_has_schemas_helicopter_view\": 2, \"repo_has_source_artifact\": 8, \"repo_has_source_bundle\": 1, \"source_bundle_uses_cooccurrence_profile\": 1}\nArtifact families: {\"ci\": 3, \"docs\": 5}\nHelicopter views: {\"schemas\": 2}\nBundle labels: {\"source_backed_fake_real_verification_bundle\": 1}\nCo-occurrence labels: {\"fake_real_data_plus_verification_gap\": 1}", "source": "foundry_mined_dataset", "repo_url": "https://github.com/Va3elina/moex-aggregator", "source_id": "comment-chain-pattern-assumption_checks-0902be9a1e77decb", "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": "Va3elina/moex-aggregator", "source_dataset": "comment_chain_patterns/assumption_checks", "training_usage": "weak_supervision"}}}, {"ruleId": "foundry_assumption_check", "level": "warning", "message": {"text": "Foundry mined assumption checks: Va3elina/moex-aggregator"}, "properties": {"repobilityId": 434432, "scanner": "foundry_dataset", "fingerprint": "b1c5d01d8061c13ce19298c1e1c068af087f348ab29e31c8e92e6b1c510b188c", "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": "Va3elina/moex-aggregator#69", "human_labels": ["agent_instruction_gap"], "issue_number": "69", "thread_label": "thread_has_human_issue_and_fix_context", "outcome_label": "claimed_resolved_unverified", "source_backed": true, "max_confidence": 0.837, "repo_full_name": "Va3elina/moex-aggregator", "training_usage": "gold_candidate", "confidence_tier": "high_confidence", "source_chain_id": "evidence-chain-issue_chain-4cd454c96a3017df", "helicopter_views": {"schemas": 2}, "artifact_families": {"ci": 3, "docs": 5}, "source_chain_kind": "issue_chain", "changed_file_count": 0, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {}, "linked_commit_count": 2, "helicopter_view_count": 2, "source_artifact_count": 8, "classification_reasons": ["source_graph_has_real_artifacts", "source_graph_has_verification_artifacts", "repo_has_isolated_helicopter_views", "link_quality_high_confidence"], "linked_ci_commit_count": 0, "verification_artifact_count": 3, "design_schema_api_artifact_count": 0}, "text": "Comment chain pattern product: assumption_checks\nRepo: Va3elina/moex-aggregator\nThread: Va3elina/moex-aggregator#69\nOutcome: claimed_resolved_unverified\nThread label: thread_has_human_issue_and_fix_context\nSource graph label: source_backed_multi_signal_graph\nReasons: source_graph_has_real_artifacts, source_graph_has_verification_artifacts, repo_has_isolated_helicopter_views, link_quality_high_confidence\nChain evidence:\nIssue/PR evidence chain: Va3elina/moex-aggregator#69\nRepo: Va3elina/moex-aggregator\nThread label: thread_has_human_issue_and_fix_context\nOutcome: claimed_resolved_unverified\nComment count: 1\nLinked commit count: 2\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 0\nLabels: {'agent_instruction_gap': 1}\nPolarities: {'bad': 1}\nChanged file labels: {}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-0afab5d865beeb7b\",\n    \"kind\": \"pull_request_body\",\n    \"label\": \"agent_instruction_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/Va3elina/moex-aggregator/pull/69\",\n    \"text\": \"GitHub feedback: agent_instruction_gap\\nPolarity: bad\\nKind: pull_request_body\\nRepo: Va3elina/moex-aggregator\\nAuthor: Va3elina (User)\\nURL: https://github.com/Va3elina/moex-aggregator/pull/69\\nTitle: copy(\u0441\u0435\u0437\u043e\u043d\u043d\u043e\u0441\u0442\u044c): \u043f\u043e\u043d\u044f\u0442\u043d\u0435\u0435 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u0442\u0443\u043c\u0431\u043b\u0435\u0440\u043e\u0432 \u0432 \u043f\u043e\u043f\u0430\u043f\u0435 \u043f\u0435\u0440\u0438\u043e\u0434\u0430\\nBody:\\n\u0427\u0443\u0442\u044c \u0431\u043e\u043b\u0435\u0435 \u0440\u0430\u0437\u0432\u0451\u0440\u043d\u0443\u0442\u044b\u0435 \u0438 \u043f\u043e\u043d\u044f\u0442\u043d\u044b\u0435 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u044f (hint) \u0443 \u0442\u0443\u043c\u0431\u043b\u0435\u0440\u043e\u0432 \u0432 \u043f\u043e\u043f\u0430\u043f\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043a \u043f\u0435\u0440\u0438\u043e\u0434\u0430. \u0411\u0435\u0437 \u0434\u043b\u0438\u043d\u043d\u044b\u0445 \u0442\u0438\u0440\u0435 \u0438 \u043a\u0430\u0432\u044b\u0447\u0435\u043a.\\n\\n- **\u0411\u0435\u0437 \u0432\u044b\u0431\u0440\u043e\u0441\u043e\u0432:** \u00ab\u0421\u0447\u0438\u0442\u0430\u0435\u0442 \u043f\u043e \u043c\u0435\u0434\u0438\u0430\u043d\u0435, \u0430 \u043d\u0435 \u043f\u043e \u0441\u0440\u0435\u0434\u043d\u0435\u043c\u0443. \u041a\u0440\u0438\u0437\u0438\u0441\u043d\u044b\u0435 \u0433\u043e\u0434\u044b \u043d\u0435 \u043f\u0435\u0440\u0435\u0442\u044f\u0433\u0438\u0432\u0430\u044e\u0442 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435, \u0432\u0438\u0434\u043d\u043e \u0442\u0438\u043f\u0438\u0447\u043d\u0443\u044e \u0441\u0435\u0437\u043e\u043d\u043d\u043e\u0441\u0442\u044c.\u00bb\\n- **\u0411\u0435\u0437 \u0434\u0438\u0432\u0438\u0434\u0435\u043d\u0434\u043d\u044b\u0445 \u0433\u044d\u043f\u043e\u0432:** \u00ab\u0426\u0435\u043d\u044b \u043f\u0435\u0440\u0435\u0441\u0447\u0438\u0442\u0430\u043d\u044b \u0441 \u0443\u0447\u0451\u0442\u043e\u043c \u0434\u0438\u0432\u0438\u0434\u0435\u043d\u0434\u043e\u0432. \u041f\u0440\u043e\u0432\u0430\u043b\u044b \u0432 \u0434\u043d\u0438 \u043e\u0442\u0441\u0435\u0447\u043a\u0438 \u043d\u0435 \u0441\u0447\u0438\u0442\u0430\u044e\u0442\u0441\u044f \u043f\u0430\u0434\u0435\u043d\u0438\u0435\u043c \u0438 \u043d\u0435 \u0438\u0441\u043a\u0430\u0436\u0430\u044e\u0442 \u0441\u0435\u0437\u043e\u043d\u043d\u043e\u0441\u0442\u044c.\u00bb\\n\\n\u0417\u0430\u043e\u0434\u043d\u043e \u0443\u0431\u0440\u0430\u043d\u043e \u0434\u043b\u0438\u043d\u043d\u043e\u0435 \u0442\u0438\u0440\u0435 \u0438\u0437 \u0441\u0442\u0430\u0440\u043e\u0433\u043e \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u00ab\u0411\u0435\u0437 \u0432\u044b\u0431\u0440\u043e\u0441\u043e\u0432\u00bb. \u041f\u0440\u0430\u0432\u043a\u0430 \u0447\u0438\u0441\u0442\u043e \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u0430\u044f (\u0441\u0442\u0440\u043e\u043a\u0438 hint), \u043b\u043e\u0433\u0438\u043a\u0430 \u043d\u0435 \u043c\u0435\u043d\u044f\u043b\u0430\u0441\u044c.\\n\\n\ud83e\udd16 Generated with [Claude Code](https://claude.com/claude-code)\"\n  }\n]\nChanged files:\n[]\nLinked chain ids:\n[\"evidence-chain-comment_to_commit-202fd952412effc5\"]\nSource graph evidence:\nSource evidence repo graph summary\nRepo: Va3elina/moex-aggregator\nGraph label: source_backed_multi_signal_graph\nNodes: 14\nEdges: 22\nNode types: {\"cooccurrence_profile\": 1, \"github_repo_summary\": 1, \"helicopter_repo_view\": 2, \"repo\": 1, \"source_artifact\": 8, \"source_bundle\": 1}\nEdge types: {\"artifact_needs_claim_verification\": 5, \"artifact_supports_verification\": 3, \"repo_has_cooccurrence_profile\": 1, \"repo_has_github_evidence_summary\": 1, \"repo_has_schemas_helicopter_view\": 2, \"repo_has_source_artifact\": 8, \"repo_has_source_bundle\": 1, \"source_bundle_uses_cooccurrence_profile\": 1}\nArtifact families: {\"ci\": 3, \"docs\": 5}\nHelicopter views: {\"schemas\": 2}\nBundle labels: {\"source_backed_fake_real_verification_bundle\": 1}\nCo-occurrence labels: {\"fake_real_data_plus_verification_gap\": 1}", "source": "foundry_mined_dataset", "repo_url": "https://github.com/Va3elina/moex-aggregator", "source_id": "comment-chain-pattern-assumption_checks-93082ebd041b388c", "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": "Va3elina/moex-aggregator", "source_dataset": "comment_chain_patterns/assumption_checks", "training_usage": "gold_candidate"}}}, {"ruleId": "foundry_assumption_check", "level": "warning", "message": {"text": "Foundry mined assumption checks: Va3elina/moex-aggregator"}, "properties": {"repobilityId": 434431, "scanner": "foundry_dataset", "fingerprint": "3fb6432247792eecfc67946e72197f5145b65311fe9729bfee688251873b750d", "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": "Va3elina/moex-aggregator#68", "human_labels": ["agent_instruction_gap"], "issue_number": "68", "thread_label": "thread_has_human_issue_and_fix_context", "outcome_label": "claimed_resolved_unverified", "source_backed": true, "max_confidence": 0.877, "repo_full_name": "Va3elina/moex-aggregator", "training_usage": "gold_candidate", "confidence_tier": "high_confidence", "source_chain_id": "evidence-chain-issue_chain-64564c6a86b7e1bb", "helicopter_views": {"schemas": 2}, "artifact_families": {"ci": 3, "docs": 5}, "source_chain_kind": "issue_chain", "changed_file_count": 0, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {}, "linked_commit_count": 2, "helicopter_view_count": 2, "source_artifact_count": 8, "classification_reasons": ["source_graph_has_real_artifacts", "source_graph_has_verification_artifacts", "repo_has_isolated_helicopter_views", "link_quality_high_confidence"], "linked_ci_commit_count": 0, "verification_artifact_count": 3, "design_schema_api_artifact_count": 0}, "text": "Comment chain pattern product: assumption_checks\nRepo: Va3elina/moex-aggregator\nThread: Va3elina/moex-aggregator#68\nOutcome: claimed_resolved_unverified\nThread label: thread_has_human_issue_and_fix_context\nSource graph label: source_backed_multi_signal_graph\nReasons: source_graph_has_real_artifacts, source_graph_has_verification_artifacts, repo_has_isolated_helicopter_views, link_quality_high_confidence\nChain evidence:\nIssue/PR evidence chain: Va3elina/moex-aggregator#68\nRepo: Va3elina/moex-aggregator\nThread label: thread_has_human_issue_and_fix_context\nOutcome: claimed_resolved_unverified\nComment count: 1\nLinked commit count: 2\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 0\nLabels: {'agent_instruction_gap': 1}\nPolarities: {'bad': 1}\nChanged file labels: {}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-8e1cbc24c55f5764\",\n    \"kind\": \"pull_request_body\",\n    \"label\": \"agent_instruction_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/Va3elina/moex-aggregator/pull/68\",\n    \"text\": \"GitHub feedback: agent_instruction_gap\\nPolarity: bad\\nKind: pull_request_body\\nRepo: Va3elina/moex-aggregator\\nAuthor: Va3elina (User)\\nURL: https://github.com/Va3elina/moex-aggregator/pull/68\\nTitle: fix(\u0441\u0435\u0437\u043e\u043d\u043d\u043e\u0441\u0442\u044c): \u043f\u043e\u043f\u0430\u043f \u043f\u0435\u0440\u0438\u043e\u0434\u0430 \u0432\u044b\u043a\u0430\u0442\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0432\u043d\u0438\u0437 \u0438\u0437-\u043f\u043e\u0434 \u0447\u0438\u043f\u0430 + \u0430\u043d\u0438\u043c\u0430\u0446\u0438\u044f\\nBody:\\n## \u041a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\\n\u041f\u0440\u043e\u0434\u043e\u043b\u0436\u0435\u043d\u0438\u0435 \u0444\u0438\u043a\u0441\u043e\u0432 \u043f\u043e\u043f\u0430\u043f\u0430 \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043a \u043f\u0435\u0440\u0438\u043e\u0434\u0430. \u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c: \u043f\u043e\u043f\u0430\u043f \u00ab\u0443\u0445\u043e\u0434\u0438\u0442 \u043d\u0430 \u0437\u0430\u0434\u043d\u0438\u0439 \u0444\u043e\u043d\u00bb \u043f\u0440\u0438 \u0445\u043e\u0432\u0435\u0440\u0435 \u043d\u0430 \u043a\u043d\u043e\u043f\u043a\u0443 \u043f\u0435\u0440\u0438\u043e\u0434\u0430 \u0438 \u0432\u0438\u0437\u0443\u0430\u043b\u044c\u043d\u043e \u00ab\u0443\u0435\u0437\u0436\u0430\u0435\u0442 \u043f\u043e \u0434\u0438\u0430\u0433\u043e\u043d\u0430\u043b\u0438 \u0432\u043f\u0440\u0430\u0432\u043e\u00bb \u2014 \u0445\u043e\u0447\u0435\u0442\u0441\u044f, \u0447\u0442\u043e\u0431\u044b \u0432\u044b\u043a\u0430\u0442\u044b\u0432\u0430\u043b\u0441\u044f \u0441\u0442\u0440\u043e\u0433\u043e \u0432\u043d\u0438\u0437.\\n\\n## \u0418\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f\\n- **\u042f\u043a\u043e\u0440\u044c \u043f\u043e\u0434 \u0447\u0438\u043f, \u0430 \u043d\u0435 \u043f\u043e\u0434 \u0448\u0435\u0441\u0442\u0435\u0440\u0451\u043d\u043a\u0443.** \u0420\u0430\u043d\u044c\u0448\u0435 \u043f\u043e\u043f\u0430\u043f \u043f\u043e\u0437\u0438\u0446\u0438\u043e\u043d\u0438\u0440\u043e\u0432\u0430\u043b\u0441\u044f \u043f\u043e \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u0430\u043c \u0448\u0435\u0441\u0442\u0435\u0440\u0451\u043d\u043a\u0438 (\u043f\u0440\u0430\u0432\u044b\u0439 \u043a\u0440\u0430\u0439 \u0447\u0438\u043f\u0430), \u0438\u0437-\u0437\u0430 \u0447\u0435\u0433\u043e \u043a\u0430\u0437\u0430\u043b\u043e\u0441\u044c, \u0447\u0442\u043e \u043e\u043d \u0441\u043c\u0435\u0449\u0451\u043d \u0432\u043f\u0440\u0430\u0432\u043e-\u0432\u043d\u0438\u0437. \u0422\u0435\u043f\u0435\u0440\u044c \u044f\u043a\u043e\u0440\u0438\u0442\u0441\u044f \u043a \u0441\u0430\u043c\u043e\u043c\u0443 \u0447\u0438\u043f\u0443 \u00ab\u041f\u0435\u0440\u0438\u043e\u0434 \u0441\u00bb (`.editorial-press` \u0447\u0435\u0440\u0435\u0437 `closest`) \u2014 \u0432\u044b\u043a\u0430\u0442\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0441\u0442\u0440\u043e\u0433\u043e \u0432\u043d\u0438\u0437, \u043b\u0435\u0432\u044b\u043c \u043a\u0440\u0430\u0435\u043c \u043f\u043e\u0434 \u043a\u043d\u043e\u043f\u043a\u0443.\\n- **\u0410\u043d\u0438\u043c\u0430\u0446\u0438\u044f \u0432\u044b\u0435\u0437\u0434\u0430.** \u0414\u043e\u0431\u0430\u0432\u043b\u0435\u043d keyframe `period-popover-in` (fade + translateY \u22126px\u21920, `transform-origin: top left`) \u2014 \u043b\u0451\u0433\u043a\u0438\u0439 drop-down.\\n- **Z-index \u0441\u043e\u0445\u0440\u0430\u043d\u0451\u043d.** \u041f\u043e\u043f\u0430\u043f \u043f\u043e-\u043f\u0440\u0435\u0436\u043d\u0435\u043c\u0443 \u0440\u0435\u043d\u0434\u0435\u0440\u0438\u0442\u0441\u044f \u0447\u0435\u0440\u0435\u0437 \u043f\u043e\u0440\u0442\u0430\u043b \u0432 `document.body` (`z-index: 1000`), \u0447\u0442\u043e\u0431\u044b `transform` \u0447\u0438\u043f\u0430 \u043d\u0430 `:hover` \u043d\u0435 \u0437\u0430\u043f\u0438\u0440\u0430\u043b \u0435\u0433\u043e \u043f\u043e\u0434 \u0433\u0440\u0430\u0444\u0438\u043a\u043e\u043c.\\n\\n## \u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 (\u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e, \u043c\u043e\u043a-\u0431\u044d\u043a\u0435\u043d\u0434, headless-\u0431\u0440\u0430\u0443\u0437\u0435\u0440)\\n- `popLeft == chipLeft` (56), \u043d\u0435 `gearLeft` (\"\n  }\n]\nChanged files:\n[]\nLinked chain ids:\n[\"evidence-chain-comment_to_commit-4b32ec5f313fc46b\"]\nSource graph evidence:\nSource evidence repo graph summary\nRepo: Va3elina/moex-aggregator\nGraph label: source_backed_multi_signal_graph\nNodes: 14\nEdges: 22\nNode types: {\"cooccurrence_profile\": 1, \"github_repo_summary\": 1, \"helicopter_repo_view\": 2, \"repo\": 1, \"source_artifact\": 8, \"source_bundle\": 1}\nEdge types: {\"artifact_needs_claim_verification\": 5, \"artifact_supports_verification\": 3, \"repo_has_cooccurrence_profile\": 1, \"repo_has_github_evidence_summary\": 1, \"repo_has_schemas_helicopter_view\": 2, \"repo_has_source_artifact\": 8, \"repo_has_source_bundle\": 1, \"source_bundle_uses_cooccurrence_profile\": 1}\nArtifact\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/Va3elina/moex-aggregator", "source_id": "comment-chain-pattern-assumption_checks-694079183704990c", "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": "Va3elina/moex-aggregator", "source_dataset": "comment_chain_patterns/assumption_checks", "training_usage": "gold_candidate"}}}, {"ruleId": "foundry_assumption_check", "level": "warning", "message": {"text": "Foundry mined assumption checks: Va3elina/moex-aggregator"}, "properties": {"repobilityId": 434430, "scanner": "foundry_dataset", "fingerprint": "dbf4d7c85de1ecdab44173ada2e76193ed9345d5ab137e9c407de854d37ffa0a", "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": "Va3elina/moex-aggregator#67", "human_labels": ["ui_workflow_gap"], "issue_number": "67", "thread_label": "thread_has_human_issue_and_fix_context", "outcome_label": "claimed_resolved_unverified", "source_backed": true, "max_confidence": 0.92, "repo_full_name": "Va3elina/moex-aggregator", "training_usage": "gold_candidate", "confidence_tier": "high_confidence", "source_chain_id": "evidence-chain-issue_chain-3a63772c115f9423", "helicopter_views": {"schemas": 2}, "artifact_families": {"ci": 3, "docs": 5}, "source_chain_kind": "issue_chain", "changed_file_count": 0, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {}, "linked_commit_count": 2, "helicopter_view_count": 2, "source_artifact_count": 8, "classification_reasons": ["source_graph_has_real_artifacts", "source_graph_has_verification_artifacts", "repo_has_isolated_helicopter_views", "link_quality_high_confidence"], "linked_ci_commit_count": 0, "verification_artifact_count": 3, "design_schema_api_artifact_count": 0}, "text": "Comment chain pattern product: assumption_checks\nRepo: Va3elina/moex-aggregator\nThread: Va3elina/moex-aggregator#67\nOutcome: claimed_resolved_unverified\nThread label: thread_has_human_issue_and_fix_context\nSource graph label: source_backed_multi_signal_graph\nReasons: source_graph_has_real_artifacts, source_graph_has_verification_artifacts, repo_has_isolated_helicopter_views, link_quality_high_confidence\nChain evidence:\nIssue/PR evidence chain: Va3elina/moex-aggregator#67\nRepo: Va3elina/moex-aggregator\nThread label: thread_has_human_issue_and_fix_context\nOutcome: claimed_resolved_unverified\nComment count: 1\nLinked commit count: 2\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 0\nLabels: {'ui_workflow_gap': 1}\nPolarities: {'bad': 1}\nChanged file labels: {}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-c3af7316cec7175f\",\n    \"kind\": \"pull_request_body\",\n    \"label\": \"ui_workflow_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/Va3elina/moex-aggregator/pull/67\",\n    \"text\": \"GitHub feedback: ui_workflow_gap\\nPolarity: bad\\nKind: pull_request_body\\nRepo: Va3elina/moex-aggregator\\nAuthor: Va3elina (User)\\nURL: https://github.com/Va3elina/moex-aggregator/pull/67\\nTitle: fix(\u0441\u0435\u0437\u043e\u043d\u043d\u043e\u0441\u0442\u044c): \u043f\u043e\u043f\u0430\u043f \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043a \u043f\u0435\u0440\u0438\u043e\u0434\u0430 \u043d\u0435 \u0443\u0445\u043e\u0434\u0438\u0442 \u043f\u043e\u0434 \u0433\u0440\u0430\u0444\u0438\u043a (\u043f\u043e\u0440\u0442\u0430\u043b)\\nBody:\\n## \u0411\u0430\u0433\\n\u041f\u043e\u043f\u0430\u043f \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043a \u043f\u0435\u0440\u0438\u043e\u0434\u0430 (\u00ab\u0411\u0435\u0437 \u0432\u044b\u0431\u0440\u043e\u0441\u043e\u0432\u00bb / \u00ab\u0411\u0435\u0437 \u0434\u0438\u0432\u0438\u0434\u0435\u043d\u0434\u043d\u044b\u0445 \u0433\u044d\u043f\u043e\u0432\u00bb), \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u0435\u043c\u044b\u0439 \u0448\u0435\u0441\u0442\u0435\u0440\u0451\u043d\u043a\u043e\u0439 \u043d\u0430 \u0447\u0438\u043f\u0435 \u00ab\u041f\u0435\u0440\u0438\u043e\u0434 \u0441\u00bb, \u0443\u0445\u043e\u0434\u0438\u043b **\u043f\u043e\u0434 \u043a\u0430\u0440\u0442\u043e\u0447\u043a\u0443 \u0433\u0440\u0430\u0444\u0438\u043a\u0430** \u2014 \u0431\u044b\u043b \u0432\u0438\u0434\u0435\u043d \u0442\u043e\u043d\u043a\u043e\u0439 \u043f\u043e\u043b\u043e\u0441\u043a\u043e\u0439 \u0438 \u043f\u0435\u0440\u0435\u043a\u0440\u044b\u0442 (\u0441\u043c. \u0441\u043a\u0440\u0438\u043d \u0432 \u0437\u0430\u0434\u0430\u0447\u0435).\\n\\n## \u041f\u0440\u0438\u0447\u0438\u043d\u0430\\n\u0427\u0438\u043f \u0438\u043c\u0435\u0435\u0442 \u043a\u043b\u0430\u0441\u0441 `editorial-press`, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043d\u0430 `:hover`/`:active` \u0441\u0442\u0430\u0432\u0438\u0442 `transform: translate(...)` (`index.css:905,913`). \u041b\u044e\u0431\u043e\u0439 `transform \u2260 none` \u0441\u043e\u0437\u0434\u0430\u0451\u0442 \u043d\u043e\u0432\u044b\u0439 **stacking context**, \u0438 `z-index` absolute-\u043f\u043e\u043f\u0430\u043f\u0430 \u043e\u043a\u0430\u0437\u044b\u0432\u0430\u043b\u0441\u044f \u0437\u0430\u043f\u0435\u0440\u0442 \u0432\u043d\u0443\u0442\u0440\u0438 \u0447\u0438\u043f\u0430. \u041a\u0430\u0440\u0442\u043e\u0447\u043a\u0430 \u0433\u0440\u0430\u0444\u0438\u043a\u0430 (\u043d\u0438\u0436\u0435 \u043f\u043e DOM, \u043f\u043e\u0437\u0438\u0446\u0438\u043e\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u0430\u044f) \u0440\u0438\u0441\u043e\u0432\u0430\u043b\u0430\u0441\u044c \u043f\u043e\u0432\u0435\u0440\u0445.\\n\\n## \u0424\u0438\u043a\u0441\\n\u0420\u0435\u043d\u0434\u0435\u0440\u0438\u043c \u043f\u043e\u043f\u0430\u043f \u0447\u0435\u0440\u0435\u0437 `createPortal` \u0432 `document.body` \u0441 `position: fixed` \u043f\u043e \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u0430\u043c \u0448\u0435\u0441\u0442\u0435\u0440\u0451\u043d\u043a\u0438 (\u043a\u043b\u0430\u043c\u043f \u043f\u043e \u043f\u0440\u0430\u0432\u043e\u043c\u0443 \u043a\u0440\u0430\u044e \u043e\u043a\u043d\u0430, \u043f\u0435\u0440\u0435\u0441\u0447\u0451\u0442 \u043d\u0430 scroll/resize). \u042d\u0442\u043e \u0432\u044b\u043d\u043e\u0441\u0438\u0442 \u043f\u043e\u043f\u0430\u043f \u0438\u0437 stacking-context \u0447\u0438\u043f\u0430. Outside-click \u0438 ESC \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u044b; \u043f\u043e\u0437\u0438\u0446\u0438\u044f \u0441\u0447\u0438\u0442\u0430\u0435\u0442\u0441\u044f \u0432 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0435 \u043a\u043b\u0438\u043a\u0430, \u0430 \u043d\u0435 \u0432 \u044d\u0444\u0444\u0435\u043a\u0442\u0435 (\u0447\u0442\u043e\u0431\u044b \u043d\u0435 \u0442\u0440\u0438\u0433\u0433\u0435\u0440\u0438\u0442\u044c `set-state-in-effect`).\\n\\n## \u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 (\u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e, \u043c\u043e\u043a-\u0431\u044d\u043a\u0435\u043d\u0434, headless-\u0431\u0440\u0430\u0443\u0437\u0435\u0440)\\n- \u041f\u043e\u043f\"\n  }\n]\nChanged files:\n[]\nLinked chain ids:\n[\"evidence-chain-comment_to_commit-1b1a4d95bce40dc2\"]\nSource graph evidence:\nSource evidence repo graph summary\nRepo: Va3elina/moex-aggregator\nGraph label: source_backed_multi_signal_graph\nNodes: 14\nEdges: 22\nNode types: {\"cooccurrence_profile\": 1, \"github_repo_summary\": 1, \"helicopter_repo_view\": 2, \"repo\": 1, \"source_artifact\": 8, \"source_bundle\": 1}\nEdge types: {\"artifact_needs_claim_verification\": 5, \"artifact_supports_verification\": 3, \"repo_has_cooccurrence_profile\": 1, \"repo_has_github_evidence_summary\": 1, \"repo_has_schemas_helicopter_view\": 2, \"repo_has_source_artifact\": 8, \"repo_has_source_bundle\": 1, \"source_bundle_uses_cooccurrence_profile\": 1}\nArtifact families: {\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/Va3elina/moex-aggregator", "source_id": "comment-chain-pattern-assumption_checks-7d3f483d0df372a5", "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": "Va3elina/moex-aggregator", "source_dataset": "comment_chain_patterns/assumption_checks", "training_usage": "gold_candidate"}}}, {"ruleId": "foundry_assumption_check", "level": "warning", "message": {"text": "Foundry mined assumption checks: Va3elina/moex-aggregator"}, "properties": {"repobilityId": 434429, "scanner": "foundry_dataset", "fingerprint": "2232178239692a39edd88f13a4d431ffcd9783cbcb632e1c1cea0e2a2cdf321d", "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": "Va3elina/moex-aggregator#66", "human_labels": ["api_integration_gap"], "issue_number": "66", "thread_label": "thread_has_human_issue_and_fix_context", "outcome_label": "claimed_resolved_unverified", "source_backed": true, "max_confidence": 0.92, "repo_full_name": "Va3elina/moex-aggregator", "training_usage": "gold_candidate", "confidence_tier": "high_confidence", "source_chain_id": "evidence-chain-issue_chain-20f8f42ee6f682e1", "helicopter_views": {"schemas": 2}, "artifact_families": {"ci": 3, "docs": 5}, "source_chain_kind": "issue_chain", "changed_file_count": 0, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {}, "linked_commit_count": 1, "helicopter_view_count": 2, "source_artifact_count": 8, "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": 3, "design_schema_api_artifact_count": 0}, "text": "Comment chain pattern product: assumption_checks\nRepo: Va3elina/moex-aggregator\nThread: Va3elina/moex-aggregator#66\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: Va3elina/moex-aggregator#66\nRepo: Va3elina/moex-aggregator\nThread label: thread_has_human_issue_and_fix_context\nOutcome: claimed_resolved_unverified\nComment count: 1\nLinked commit count: 1\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 0\nLabels: {'api_integration_gap': 1}\nPolarities: {'bad': 1}\nChanged file labels: {}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-3a67ad052d9a59ee\",\n    \"kind\": \"pull_request_body\",\n    \"label\": \"api_integration_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/Va3elina/moex-aggregator/pull/66\",\n    \"text\": \"GitHub feedback: api_integration_gap\\nPolarity: bad\\nKind: pull_request_body\\nRepo: Va3elina/moex-aggregator\\nAuthor: Va3elina (User)\\nURL: https://github.com/Va3elina/moex-aggregator/pull/66\\nTitle: fix(api): /api/health/data \u2014 \u0443\u0441\u0442\u0440\u0430\u043d\u0438\u0442\u044c \u0442\u0430\u0439\u043c\u0430\u0443\u0442 (\u043f\u043e\u043b\u043d\u044b\u0439 \u0441\u043a\u0430\u043d candles)\\nBody:\\n\u042d\u043d\u0434\u043f\u043e\u0438\u043d\u0442 \u0442\u0430\u0439\u043c\u0430\u0443\u0442\u0438\u043b: `COUNT(DISTINCT secid) FROM candles` = 29\u0441 (\u043d\u0435\u0442 \u0438\u043d\u0434\u0435\u043a\u0441\u0430 \u043f\u043e\u0434 begin_time-only \u0441\u043a\u0430\u043d\u044b).\\n\\n**\u0424\u0438\u043a\u0441 \u2014 \u0432\u0441\u0435 \u0437\u0430\u043f\u0440\u043e\u0441\u044b \u043d\u0430 \u0438\u043d\u0434\u0435\u043a\u0441\u0430\u0445:**\\n- \u043a\u0430\u043b\u0435\u043d\u0434\u0430\u0440\u044c \u0442\u043e\u0440\u0433.\u0434\u043d\u0435\u0439 \u2192 `index_data` IMOEX (0.12\u0441) \u0432\u043c\u0435\u0441\u0442\u043e \u0441\u043a\u0430\u043d\u0430 candles\\n- \u0441\u0432\u0435\u0436\u0435\u0441\u0442\u044c \u0441\u0432\u0435\u0447\u0435\u0439 \u2192 `MAX(begin_time) WHERE secid='SBER'` (19\u043c\u0441) \u0447\u0435\u0440\u0435\u0437 \u0438\u043d\u0434\u0435\u043a\u0441 (secid,begin_time)\\n- open_interest \u2192 \u0442\u043e\u043b\u044c\u043a\u043e max (\u0443\u0431\u0440\u0430\u043d COUNT(*) ~2\u0441)\\n\\n\u0418\u0442\u043e\u0433: ~30\u0441 \u2192 ~3\u0441. \u0422\u043e\u043b\u044c\u043a\u043e \u0447\u0442\u0435\u043d\u0438\u0435, \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435/\u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u044c \u043d\u0435 \u043c\u0435\u043d\u044f\u044e\u0442\u0441\u044f.\\n\\n\ud83e\udd16 Generated with [Claude Code](https://claude.com/claude-code)\"\n  }\n]\nChanged files:\n[]\nLinked chain ids:\n[\"evidence-chain-comment_to_commit-41dff6876a765155\"]\nSource graph evidence:\nSource evidence repo graph summary\nRepo: Va3elina/moex-aggregator\nGraph label: source_backed_multi_signal_graph\nNodes: 14\nEdges: 22\nNode types: {\"cooccurrence_profile\": 1, \"github_repo_summary\": 1, \"helicopter_repo_view\": 2, \"repo\": 1, \"source_artifact\": 8, \"source_bundle\": 1}\nEdge types: {\"artifact_needs_claim_verification\": 5, \"artifact_supports_verification\": 3, \"repo_has_cooccurrence_profile\": 1, \"repo_has_github_evidence_summary\": 1, \"repo_has_schemas_helicopter_view\": 2, \"repo_has_source_artifact\": 8, \"repo_has_source_bundle\": 1, \"source_bundle_uses_cooccurrence_profile\": 1}\nArtifact families: {\"ci\": 3, \"docs\": 5}\nHelicopter views: {\"schemas\": 2}\nBundle labels: {\"source_backed_fake_real_verification_bundle\": 1}\nCo-occurrence labels: {\"fake_real_data_plus_verification_gap\": 1}", "source": "foundry_mined_dataset", "repo_url": "https://github.com/Va3elina/moex-aggregator", "source_id": "comment-chain-pattern-assumption_checks-4ea5eb47752aee1f", "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": "Va3elina/moex-aggregator", "source_dataset": "comment_chain_patterns/assumption_checks", "training_usage": "gold_candidate"}}}, {"ruleId": "foundry_assumption_check", "level": "warning", "message": {"text": "Foundry mined assumption checks: Va3elina/moex-aggregator"}, "properties": {"repobilityId": 434428, "scanner": "foundry_dataset", "fingerprint": "92994bae337f22499a3bc2e6052827bb836efece1f7622f757c88e7d62f023ca", "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": "Va3elina/moex-aggregator#65", "human_labels": ["security_auth_secret"], "issue_number": "65", "thread_label": "thread_has_human_issue_and_fix_context", "outcome_label": "claimed_resolved_unverified", "source_backed": true, "max_confidence": 0.92, "repo_full_name": "Va3elina/moex-aggregator", "training_usage": "gold_candidate", "confidence_tier": "high_confidence", "source_chain_id": "evidence-chain-issue_chain-4df7c095ca13cca1", "helicopter_views": {"schemas": 2}, "artifact_families": {"ci": 3, "docs": 5}, "source_chain_kind": "issue_chain", "changed_file_count": 0, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {}, "linked_commit_count": 1, "helicopter_view_count": 2, "source_artifact_count": 8, "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": 3, "design_schema_api_artifact_count": 0}, "text": "Comment chain pattern product: assumption_checks\nRepo: Va3elina/moex-aggregator\nThread: Va3elina/moex-aggregator#65\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: Va3elina/moex-aggregator#65\nRepo: Va3elina/moex-aggregator\nThread label: thread_has_human_issue_and_fix_context\nOutcome: claimed_resolved_unverified\nComment count: 1\nLinked commit count: 1\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 0\nLabels: {'security_auth_secret': 1}\nPolarities: {'bad': 1}\nChanged file labels: {}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-cb5ca5a164d49ee2\",\n    \"kind\": \"pull_request_body\",\n    \"label\": \"security_auth_secret\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/Va3elina/moex-aggregator/pull/65\",\n    \"text\": \"GitHub feedback: security_auth_secret\\nPolarity: bad\\nKind: pull_request_body\\nRepo: Va3elina/moex-aggregator\\nAuthor: Va3elina (User)\\nURL: https://github.com/Va3elina/moex-aggregator/pull/65\\nTitle: feat(api): /api/health/data \u2014 \u0431\u0430\u0440\u043e\u043c\u0435\u0442\u0440 \u0441\u0432\u0435\u0436\u0435\u0441\u0442\u0438 \u0434\u0430\u043d\u043d\u044b\u0445 \u0434\u043b\u044f \u0430\u0432\u0442\u043e\u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u043d\u0433\u0430\\nBody:\\n## \u0427\u0442\u043e\\nAlways-on \u044d\u043d\u0434\u043f\u043e\u0438\u043d\u0442 `GET /api/health/data` \u0434\u043b\u044f \u043e\u0431\u043b\u0430\u0447\u043d\u043e\u0439 Routine (\u0430\u0432\u0442\u043e\u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u043d\u0433 \u0446\u0435\u043b\u043e\u0441\u0442\u043d\u043e\u0441\u0442\u0438 \u0438\u043d\u0433\u0435\u0441\u0442\u0430 \u0431\u0435\u0437 SSH).\\n\\n## \u041f\u043e\u0447\u0435\u043c\u0443 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 \u0440\u043e\u0443\u0442\u0435\u0440\\n\u041f\u0443\u0431\u043b\u0438\u0447\u043d\u044b\u0439 API (`/api/v1/public/*`) \u043f\u043e\u0434 kill-switch'\u043e\u043c `PUBLIC_API_CSV_ENABLED` (404 \u043d\u0430 \u043f\u0440\u043e\u0434\u0435 \u0434\u043e \u0437\u0430\u043f\u0443\u0441\u043a\u0430). \u042d\u0442\u043e\u0442 \u0440\u043e\u0443\u0442\u0435\u0440 \u043c\u043e\u043d\u0442\u0438\u0440\u0443\u0435\u0442\u0441\u044f **\u0431\u0435\u0437\u0443\u0441\u043b\u043e\u0432\u043d\u043e** \u2014 \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u043d\u0433 \u043d\u0435 \u0437\u0430\u0432\u0438\u0441\u0438\u0442 \u043e\u0442 \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u043f\u0443\u0431\u043b\u0438\u0447\u043d\u043e\u0433\u043e API.\\n\\n## \u0411\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u044c (by construction)\\n- **READ-ONLY**: \u0442\u043e\u043b\u044c\u043a\u043e `SELECT MAX/COUNT/DISTINCT` \u043f\u043e \u0442\u0430\u0431\u043b\u0438\u0446\u0430\u043c-\u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u0430\u043c.\\n- **0 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439**: \u043e\u0442\u0434\u0430\u0451\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u0430\u0442\u044b \u0441\u0432\u0435\u0436\u0435\u0441\u0442\u0438 + \u0446\u0435\u043b\u044b\u0435 \u0441\u0447\u0451\u0442\u0447\u0438\u043a\u0438 (\u043d\u0438 \u0446\u0435\u043d/NAV/\u0432\u0435\u0441\u043e\u0432/\u0441\u0443\u043c\u043c).\\n- **0 \u0437\u0430\u043f\u0440\u0435\u0449\u0451\u043d\u043d\u044b\u0445 \u0442\u0430\u0431\u043b\u0438\u0446**: \u043d\u0435 \u043a\u0430\u0441\u0430\u0435\u0442\u0441\u044f user/billing/auth/token/alert \u0442\u0430\u0431\u043b\u0438\u0446 (\u0441\u043f\u0438\u0441\u043e\u043a \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u043e\u0432 \u0437\u0430\u0445\u0430\u0440\u0434\u043a\u043e\u0436\u0435\u043d).\\n- **0 \u043c\u0443\u0442\u0430\u0446\u0438\u0439**, **0 \u0432\u0445\u043e\u0434\u043d\u044b\u0445 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432** (\u043d\u0435\u0442 \u0438\u043d\u044a\u0435\u043a\u0446\u0438\u0439).\\n- \u0413\u0435\u0439\u0442: `role != admin \u2192 403` + X-API-Key + nginx rate-limit.\\n\\n## \u0427\u0442\u043e \u043e\u0442\u0434\u0430\u0451\u0442\\n\u0421\u0432\u0435\u0436\u0435\u0441\u0442\u044c (max_date + \u043b\u0430\u0433 \u0432 \u0442\u043e\u0440\u0433\u043e\u0432\u044b\u0445 \u0434\u043d\u044f\u0445, holiday-proof), \u043f\u043e\u043b\u043d\u043e\u0442\u0443 \u0434\u043d\u044f (entities_on_max vs prev), \u043e\u0445\u0432\u0430\u0442, \u043a\u0430\u0434\u0435\u043d\u0441 \u2014 \u043f\u043e candles/OI/fund_data/ind\"\n  }\n]\nChanged files:\n[]\nLinked chain ids:\n[\"evidence-chain-comment_to_commit-8fe345d2a937e4de\"]\nSource graph evidence:\nSource evidence repo graph summary\nRepo: Va3elina/moex-aggregator\nGraph label: source_backed_multi_signal_graph\nNodes: 14\nEdges: 22\nNode types: {\"cooccurrence_profile\": 1, \"github_repo_summary\": 1, \"helicopter_repo_view\": 2, \"repo\": 1, \"source_artifact\": 8, \"source_bundle\": 1}\nEdge types: {\"artifact_needs_claim_verification\": 5, \"artifact_supports_verification\": 3, \"repo_has_cooccurrence_profile\": 1, \"repo_has_github_evidence_summary\": 1, \"repo_has_schemas_helicopter_view\": 2, \"repo_has_source_artifact\": 8, \"repo_has_source_bundle\": 1, \"source_bundle_uses_\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/Va3elina/moex-aggregator", "source_id": "comment-chain-pattern-assumption_checks-ee66b0a65f48e42b", "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": "Va3elina/moex-aggregator", "source_dataset": "comment_chain_patterns/assumption_checks", "training_usage": "gold_candidate"}}}, {"ruleId": "foundry_assumption_check", "level": "warning", "message": {"text": "Foundry mined assumption checks: Va3elina/moex-aggregator"}, "properties": {"repobilityId": 434427, "scanner": "foundry_dataset", "fingerprint": "41ae5170f9ca589c88b67ae9d8eb8d38639c016e4ef977d63b9576d611b1d263", "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": "Va3elina/moex-aggregator#62", "human_labels": ["agent_instruction_gap"], "issue_number": "62", "thread_label": "thread_has_human_issue_and_fix_context", "outcome_label": "claimed_resolved_unverified", "source_backed": true, "max_confidence": 0.837, "repo_full_name": "Va3elina/moex-aggregator", "training_usage": "gold_candidate", "confidence_tier": "high_confidence", "source_chain_id": "evidence-chain-issue_chain-0f32cbbef346c133", "helicopter_views": {"schemas": 2}, "artifact_families": {"ci": 3, "docs": 5}, "source_chain_kind": "issue_chain", "changed_file_count": 0, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {}, "linked_commit_count": 5, "helicopter_view_count": 2, "source_artifact_count": 8, "classification_reasons": ["source_graph_has_real_artifacts", "source_graph_has_verification_artifacts", "repo_has_isolated_helicopter_views", "link_quality_high_confidence"], "linked_ci_commit_count": 0, "verification_artifact_count": 3, "design_schema_api_artifact_count": 0}, "text": "Comment chain pattern product: assumption_checks\nRepo: Va3elina/moex-aggregator\nThread: Va3elina/moex-aggregator#62\nOutcome: claimed_resolved_unverified\nThread label: thread_has_human_issue_and_fix_context\nSource graph label: source_backed_multi_signal_graph\nReasons: source_graph_has_real_artifacts, source_graph_has_verification_artifacts, repo_has_isolated_helicopter_views, link_quality_high_confidence\nChain evidence:\nIssue/PR evidence chain: Va3elina/moex-aggregator#62\nRepo: Va3elina/moex-aggregator\nThread label: thread_has_human_issue_and_fix_context\nOutcome: claimed_resolved_unverified\nComment count: 1\nLinked commit count: 5\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 0\nLabels: {'agent_instruction_gap': 1}\nPolarities: {'bad': 1}\nChanged file labels: {}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-7c11031185953311\",\n    \"kind\": \"pull_request_body\",\n    \"label\": \"agent_instruction_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/Va3elina/moex-aggregator/pull/62\",\n    \"text\": \"GitHub feedback: agent_instruction_gap\\nPolarity: bad\\nKind: pull_request_body\\nRepo: Va3elina/moex-aggregator\\nAuthor: Va3elina (User)\\nURL: https://github.com/Va3elina/moex-aggregator/pull/62\\nTitle: fix(funds): \u0437\u043d\u0430\u0447\u043e\u043a \u043e\u0442\u0441\u0442\u0430\u0432\u0430\u043d\u0438\u044f \u0421\u0427\u0410 \u043f\u0435\u0440\u0435\u043d\u0435\u0441\u0451\u043d \u043a \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u044e \u0444\u043e\u043d\u0434\u0430 \u0438 \u0443\u0432\u0435\u043b\u0438\u0447\u0435\u043d\\nBody:\\n\u0414\u043e\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u043f\u043e\u0441\u043b\u0435 #61.\\n\\n- \u0417\u043d\u0430\u0447\u043e\u043a \u043e\u0442\u0441\u0442\u0430\u0432\u0430\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445 \u0421\u0427\u0410 \u043f\u0435\u0440\u0435\u043d\u0435\u0441\u0451\u043d \u0438\u0437 \u043a\u043e\u043b\u043e\u043d\u043a\u0438 \u0421\u0427\u0410 \u043a \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u044e \u0444\u043e\u043d\u0434\u0430 (\u0441\u0442\u043e\u0438\u0442 \u0441\u0440\u0430\u0437\u0443 \u043f\u043e\u0441\u043b\u0435 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u044f).\\n- \u0420\u0430\u0437\u043c\u0435\u0440 \u0443\u0432\u0435\u043b\u0438\u0447\u0435\u043d \u0441 15 \u0434\u043e 17px, \u043f\u0440\u0438\u0433\u043b\u0443\u0448\u0451\u043d\u043d\u043e\u0441\u0442\u044c \u043f\u0440\u0435\u0436\u043d\u044f\u044f (opacity 0.6).\\n- \u041a\u043e\u043b\u043e\u043d\u043a\u0430 \u0421\u0427\u0410 \u0432\u0435\u0440\u043d\u0443\u043b\u0430\u0441\u044c \u043a \u043f\u0440\u043e\u0441\u0442\u043e\u043c\u0443 \u0447\u0438\u0441\u043b\u0443 \u0431\u0435\u0437 \u0437\u0430\u0440\u0435\u0437\u0435\u0440\u0432\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0433\u043e \u0441\u043b\u043e\u0442\u0430 \u0432\u044b\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u043d\u0438\u044f.\\n- \u041f\u043e\u0434\u0441\u043a\u0430\u0437\u043a\u0430 \u0441 \u0434\u0430\u0442\u043e\u0439 \u0430\u043a\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u043f\u0440\u0438 \u043d\u0430\u0432\u0435\u0434\u0435\u043d\u0438\u0438 \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0430.\\n\\n\ud83e\udd16 Generated with [Claude Code](https://claude.com/claude-code)\"\n  }\n]\nChanged files:\n[]\nLinked chain ids:\n[\"evidence-chain-comment_to_commit-784045728e0b4fd5\"]\nSource graph evidence:\nSource evidence repo graph summary\nRepo: Va3elina/moex-aggregator\nGraph label: source_backed_multi_signal_graph\nNodes: 14\nEdges: 22\nNode types: {\"cooccurrence_profile\": 1, \"github_repo_summary\": 1, \"helicopter_repo_view\": 2, \"repo\": 1, \"source_artifact\": 8, \"source_bundle\": 1}\nEdge types: {\"artifact_needs_claim_verification\": 5, \"artifact_supports_verification\": 3, \"repo_has_cooccurrence_profile\": 1, \"repo_has_github_evidence_summary\": 1, \"repo_has_schemas_helicopter_view\": 2, \"repo_has_source_artifact\": 8, \"repo_has_source_bundle\": 1, \"source_bundle_uses_cooccurrence_profile\": 1}\nArtifact families: {\"ci\": 3, \"docs\": 5}\nHelicopter views: {\"schemas\": 2}\nBundle labels: {\"source_backed_fake_real_verification_bundle\": 1}\nCo-occurrence labels: {\"fake_real_data_plus_verification_gap\": 1}", "source": "foundry_mined_dataset", "repo_url": "https://github.com/Va3elina/moex-aggregator", "source_id": "comment-chain-pattern-assumption_checks-fca5afd0b8c300f1", "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": "Va3elina/moex-aggregator", "source_dataset": "comment_chain_patterns/assumption_checks", "training_usage": "gold_candidate"}}}, {"ruleId": "foundry_assumption_check", "level": "warning", "message": {"text": "Foundry mined assumption checks: Va3elina/moex-aggregator"}, "properties": {"repobilityId": 434426, "scanner": "foundry_dataset", "fingerprint": "1de72f0588e5fd17265d277ca1f6bad9c92e6d59fb73ef0fa70735143f4a5621", "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": "Va3elina/moex-aggregator#61", "human_labels": ["agent_instruction_gap"], "issue_number": "61", "thread_label": "thread_has_human_issue_and_fix_context", "outcome_label": "claimed_resolved_unverified", "source_backed": true, "max_confidence": 0.837, "repo_full_name": "Va3elina/moex-aggregator", "training_usage": "gold_candidate", "confidence_tier": "high_confidence", "source_chain_id": "evidence-chain-issue_chain-d4e46f7fcae1caab", "helicopter_views": {"schemas": 2}, "artifact_families": {"ci": 3, "docs": 5}, "source_chain_kind": "issue_chain", "changed_file_count": 0, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {}, "linked_commit_count": 5, "helicopter_view_count": 2, "source_artifact_count": 8, "classification_reasons": ["source_graph_has_real_artifacts", "source_graph_has_verification_artifacts", "repo_has_isolated_helicopter_views", "link_quality_high_confidence"], "linked_ci_commit_count": 0, "verification_artifact_count": 3, "design_schema_api_artifact_count": 0}, "text": "Comment chain pattern product: assumption_checks\nRepo: Va3elina/moex-aggregator\nThread: Va3elina/moex-aggregator#61\nOutcome: claimed_resolved_unverified\nThread label: thread_has_human_issue_and_fix_context\nSource graph label: source_backed_multi_signal_graph\nReasons: source_graph_has_real_artifacts, source_graph_has_verification_artifacts, repo_has_isolated_helicopter_views, link_quality_high_confidence\nChain evidence:\nIssue/PR evidence chain: Va3elina/moex-aggregator#61\nRepo: Va3elina/moex-aggregator\nThread label: thread_has_human_issue_and_fix_context\nOutcome: claimed_resolved_unverified\nComment count: 1\nLinked commit count: 5\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 0\nLabels: {'agent_instruction_gap': 1}\nPolarities: {'bad': 1}\nChanged file labels: {}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-09849b0a1a297ed2\",\n    \"kind\": \"pull_request_body\",\n    \"label\": \"agent_instruction_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/Va3elina/moex-aggregator/pull/61\",\n    \"text\": \"GitHub feedback: agent_instruction_gap\\nPolarity: bad\\nKind: pull_request_body\\nRepo: Va3elina/moex-aggregator\\nAuthor: Va3elina (User)\\nURL: https://github.com/Va3elina/moex-aggregator/pull/61\\nTitle: fix(funds): \u0432\u044b\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u043d\u0438\u0435 \u0447\u0438\u0441\u0435\u043b \u0421\u0427\u0410 \u0438 \u0437\u043d\u0430\u0447\u043e\u043a \u043e\u0442\u0441\u0442\u0430\u0432\u0430\u043d\u0438\u044f \u0447\u0443\u0442\u044c \u043a\u0440\u0443\u043f\u043d\u0435\u0435\\nBody:\\n\u0414\u043e\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u043f\u043e\u0441\u043b\u0435 #58.\\n\\n- \u041f\u043e\u0434 \u0437\u043d\u0430\u0447\u043e\u043a \u043e\u0442\u0441\u0442\u0430\u0432\u0430\u043d\u0438\u044f \u0421\u0427\u0410 \u0440\u0435\u0437\u0435\u0440\u0432\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0441\u043b\u043e\u0442 \u0444\u0438\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0439 \u0448\u0438\u0440\u0438\u043d\u044b (16px) \u043d\u0430 \u0432\u0441\u0435\u0445 \u0441\u0442\u0440\u043e\u043a\u0430\u0445 \u0442\u0430\u0431\u043b\u0438\u0446\u044b. \u0427\u0438\u0441\u043b\u0430 \u0421\u0427\u0410 \u0432\u044b\u0441\u0442\u0440\u043e\u0435\u043d\u044b \u0432 \u0440\u043e\u0432\u043d\u0443\u044e \u043a\u043e\u043b\u043e\u043d\u043a\u0443 \u043f\u043e \u043f\u0440\u0430\u0432\u043e\u043c\u0443 \u043a\u0440\u0430\u044e \u043d\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e \u043e\u0442 \u043d\u0430\u043b\u0438\u0447\u0438\u044f \u0437\u043d\u0430\u0447\u043a\u0430 \u0432 \u0441\u0442\u0440\u043e\u043a\u0435.\\n- \u0417\u043d\u0430\u0447\u043e\u043a \u0443\u0432\u0435\u043b\u0438\u0447\u0435\u043d \u0441 13 \u0434\u043e 15px, \u043e\u0441\u0442\u0430\u0451\u0442\u0441\u044f \u043f\u0440\u0438\u0433\u043b\u0443\u0448\u0451\u043d\u043d\u044b\u043c (opacity 0.6).\\n\\n\ud83e\udd16 Generated with [Claude Code](https://claude.com/claude-code)\"\n  }\n]\nChanged files:\n[]\nLinked chain ids:\n[\"evidence-chain-comment_to_commit-e83242fabbf7c322\"]\nSource graph evidence:\nSource evidence repo graph summary\nRepo: Va3elina/moex-aggregator\nGraph label: source_backed_multi_signal_graph\nNodes: 14\nEdges: 22\nNode types: {\"cooccurrence_profile\": 1, \"github_repo_summary\": 1, \"helicopter_repo_view\": 2, \"repo\": 1, \"source_artifact\": 8, \"source_bundle\": 1}\nEdge types: {\"artifact_needs_claim_verification\": 5, \"artifact_supports_verification\": 3, \"repo_has_cooccurrence_profile\": 1, \"repo_has_github_evidence_summary\": 1, \"repo_has_schemas_helicopter_view\": 2, \"repo_has_source_artifact\": 8, \"repo_has_source_bundle\": 1, \"source_bundle_uses_cooccurrence_profile\": 1}\nArtifact families: {\"ci\": 3, \"docs\": 5}\nHelicopter views: {\"schemas\": 2}\nBundle labels: {\"source_backed_fake_real_verification_bundle\": 1}\nCo-occurrence labels: {\"fake_real_data_plus_verification_gap\": 1}", "source": "foundry_mined_dataset", "repo_url": "https://github.com/Va3elina/moex-aggregator", "source_id": "comment-chain-pattern-assumption_checks-be64e627ffdaa0dc", "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": "Va3elina/moex-aggregator", "source_dataset": "comment_chain_patterns/assumption_checks", "training_usage": "gold_candidate"}}}, {"ruleId": "foundry_assumption_check", "level": "warning", "message": {"text": "Foundry mined assumption checks: Va3elina/moex-aggregator"}, "properties": {"repobilityId": 434425, "scanner": "foundry_dataset", "fingerprint": "b9c61cef25ef5d8dabdf3ea7f5c70ecece847f69a7cfe10fdb782a513188a951", "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": "Va3elina/moex-aggregator#60", "human_labels": ["test_ci_gap"], "issue_number": "60", "thread_label": "thread_has_human_issue_and_fix_context", "outcome_label": "ambiguous_needs_more_evidence", "source_backed": true, "max_confidence": 0.737, "repo_full_name": "Va3elina/moex-aggregator", "training_usage": "weak_supervision", "confidence_tier": "weak_supervision", "source_chain_id": "evidence-chain-issue_chain-c865fa4019773bb9", "helicopter_views": {"schemas": 2}, "artifact_families": {"ci": 3, "docs": 5}, "source_chain_kind": "issue_chain", "changed_file_count": 0, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {}, "linked_commit_count": 1, "helicopter_view_count": 2, "source_artifact_count": 8, "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": 3, "design_schema_api_artifact_count": 0}, "text": "Comment chain pattern product: assumption_checks\nRepo: Va3elina/moex-aggregator\nThread: Va3elina/moex-aggregator#60\nOutcome: ambiguous_needs_more_evidence\nThread label: thread_has_human_issue_and_fix_context\nSource graph label: source_backed_multi_signal_graph\nReasons: source_graph_has_real_artifacts, source_graph_has_verification_artifacts, repo_has_isolated_helicopter_views, link_quality_weak_supervision, high_risk_human_feedback_label\nChain evidence:\nIssue/PR evidence chain: Va3elina/moex-aggregator#60\nRepo: Va3elina/moex-aggregator\nThread label: thread_has_human_issue_and_fix_context\nOutcome: ambiguous_needs_more_evidence\nComment count: 1\nLinked commit count: 1\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 0\nLabels: {'test_ci_gap': 1}\nPolarities: {'bad': 1}\nChanged file labels: {}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-c9efeb6395e2f128\",\n    \"kind\": \"pull_request_body\",\n    \"label\": \"test_ci_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/Va3elina/moex-aggregator/pull/60\",\n    \"text\": \"GitHub feedback: test_ci_gap\\nPolarity: bad\\nKind: pull_request_body\\nRepo: Va3elina/moex-aggregator\\nAuthor: Va3elina (User)\\nURL: https://github.com/Va3elina/moex-aggregator/pull/60\\nTitle: feat(oi): \u00ab?\u00bb \u0441 \u043f\u043e\u044f\u0441\u043d\u0435\u043d\u0438\u0435\u043c \u043d\u0430 \u043c\u043e\u0431\u0438\u043b\u044c\u043d\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 OI + \u0435\u0434\u0438\u043d\u044b\u0439 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a \u043a\u043e\u043f\u0438\u0440\u0430\u0439\u0442\u0430\\nBody:\\n\u041f\u0440\u043e\u0434\u043e\u043b\u0436\u0435\u043d\u0438\u0435 [#56](https://github.com/Va3elina/moex-aggregator/pull/56): \u0442\u043e\u0442 \u00ab?\u00bb \u0431\u044b\u043b \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0430 desktop-\u0434\u0440\u043e\u043f\u0434\u0430\u0443\u043d\u0435. \u0422\u0435\u043f\u0435\u0440\u044c \u043f\u0430\u0440\u0438\u0442\u0435\u0442 \u043d\u0430 \u043c\u043e\u0431\u0438\u043b\u0435.\\n\\n## \u0427\u0442\u043e\\n\\n- \u041d\u0430 \u043c\u043e\u0431\u0438\u043b\u044c\u043d\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435 OI \u0440\u044f\u0434\u043e\u043c \u0441 \u0447\u0438\u043f\u0430\u043c\u0438 **\u041e\u0442\u043a\u0440\u044b\u0442\u044b\u0439 \u0438\u043d\u0442\u0435\u0440\u0435\u0441** \u0438 **\u0427\u0438\u0441\u0442\u0430\u044f \u043f\u043e\u0437\u0438\u0446\u0438\u044f** (\u0432 \u043d\u0438\u0436\u043d\u0435\u043c \u0448\u0438\u0442\u0435 \u00ab\u0427\u0442\u043e \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u044c \u043d\u0430 \u0433\u0440\u0430\u0444\u0438\u043a\u0435\u00bb) \u043f\u043e\u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u00ab?\u00bb. \u0422\u0430\u043f \u2192 \u043f\u043e\u043f\u043e\u0432\u0435\u0440 \u0441 \u043f\u043e\u044f\u0441\u043d\u0435\u043d\u0438\u0435\u043c (\u0447\u0442\u043e \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 + \u043a\u0430\u043a \u0441\u0447\u0438\u0442\u0430\u0435\u0442\u0441\u044f OI).\\n- \u0422\u043e\u0442 \u0436\u0435 \u0442\u0435\u043a\u0441\u0442, \u0447\u0442\u043e \u043d\u0430 desktop.\\n\\n## \u041a\u0430\u043a\\n\\n- `OptionHelp` \u0432\u044b\u043d\u0435\u0441\u0435\u043d \u0438\u0437 `Dropdown.tsx` \u0432 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 `components/OptionHelp.tsx` \u2014 \u0442\u0435\u043f\u0435\u0440\u044c \u043e\u0431\u0449\u0438\u0439 \u0434\u043b\u044f desktop-\u0434\u0440\u043e\u043f\u0434\u0430\u0443\u043d\u0430 \u0438 \u043c\u043e\u0431\u0438\u043b\u044c\u043d\u044b\u0445 \u0447\u0438\u043f\u043e\u0432.\\n- \u0414\u043e\u0431\u0430\u0432\u043b\u0435\u043d **\u043f\u0435\u0440\u0435\u0432\u043e\u0440\u043e\u0442 \u043f\u043e\u043f\u043e\u0432\u0435\u0440\u0430 \u0432\u0432\u0435\u0440\u0445**, \u0435\u0441\u043b\u0438 \u0441\u043d\u0438\u0437\u0443 \u043d\u0435 \u043f\u043e\u043c\u0435\u0449\u0430\u0435\u0442\u0441\u044f (\u0437\u0430\u043c\u0435\u0440 \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u0439 \u0432\u044b\u0441\u043e\u0442\u044b \u0432 `useLayoutEffect`) \u2014 \u0432\u0430\u0436\u043d\u043e \u0434\u043b\u044f \u0447\u0438\u043f\u0430 \u0443 \u043d\u0438\u0436\u043d\u0435\u0439 \u043a\u0440\u043e\u043c\u043a\u0438 \u043c\u043e\u0431\u0438\u043b\u044c\u043d\u043e\u0433\u043e \u0448\u0438\u0442\u0430. `z-index` \u043f\u043e\u043f\u043e\u0432\u0435\u0440\u0430 \u043f\u043e\u0434\u043d\u044f\u0442 \u0432\u044b\u0448\u0435 \u0448\u0438\u0442\u0430 (`.fm-sheet` = 101).\\n- \u041a\u043e\u043f\u0438\u0440\u0430\u0439\u0442 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u043e\u0432 \u0432\u044b\u043d\u0435\u0441\u0435\u043d \u0432 `data/oiVariantHelp.ts` \u2014 \u0435\u0434\u0438\u043d\u044b\u0439 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a \u0434\u043b\u044f desktop \u0438 mobile, \u043f\u0440\u0430\u0432\u0438\u0442\u0441\u044f \u0432 \u043e\u0434\u043d\u043e\u043c \u043c\u0435\u0441\u0442\u0435.\\n\\n## \u041e\u0431\u043b\u0430\u0441\u0442\u044c\\n\\nDesktop \u0442\u0435\u043f\u0435\u0440\u044c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u043e\u0431\u0449\u0438\u0439 `OptionHelp` (\u043f\u043e\u0432\"\n  }\n]\nChanged files:\n[]\nLinked chain ids:\n[\"evidence-chain-comment_to_commit-769af6ed450c9d2c\"]\nSource graph evidence:\nSource evidence repo graph summary\nRepo: Va3elina/moex-aggregator\nGraph label: source_backed_multi_signal_graph\nNodes: 14\nEdges: 22\nNode types: {\"cooccurrence_profile\": 1, \"github_repo_summary\": 1, \"helicopter_repo_view\": 2, \"repo\": 1, \"source_artifact\": 8, \"source_bundle\": 1}\nEdge types: {\"artifact_needs_claim_verification\": 5, \"artifact_supports_verification\": 3, \"repo_has_cooccurrence_profile\": 1, \"repo_has_github_evidence_summary\": 1, \"repo_has_schemas_helicopter_view\": 2, \"repo_has_source_artifact\": 8, \"repo_has_source_bundle\": 1, \"source_bundle_uses_cooccurrence\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/Va3elina/moex-aggregator", "source_id": "comment-chain-pattern-assumption_checks-fe7d87b6ae7f5984", "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": "Va3elina/moex-aggregator", "source_dataset": "comment_chain_patterns/assumption_checks", "training_usage": "weak_supervision"}}}, {"ruleId": "foundry_assumption_check", "level": "warning", "message": {"text": "Foundry mined assumption checks: Va3elina/moex-aggregator"}, "properties": {"repobilityId": 434424, "scanner": "foundry_dataset", "fingerprint": "97694d6bbd19e37edf96a421be26ea10d603569aa61fb9d85af8275ad122cd5a", "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": "Va3elina/moex-aggregator#6", "human_labels": ["agent_instruction_gap"], "issue_number": "6", "thread_label": "thread_has_human_issue_and_fix_context", "outcome_label": "claimed_resolved_unverified", "source_backed": true, "max_confidence": 0.92, "repo_full_name": "Va3elina/moex-aggregator", "training_usage": "gold_candidate", "confidence_tier": "high_confidence", "source_chain_id": "evidence-chain-issue_chain-a3f4b25f2f18704b", "helicopter_views": {"schemas": 2}, "artifact_families": {"ci": 3, "docs": 5}, "source_chain_kind": "issue_chain", "changed_file_count": 0, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {}, "linked_commit_count": 5, "helicopter_view_count": 2, "source_artifact_count": 8, "classification_reasons": ["source_graph_has_real_artifacts", "source_graph_has_verification_artifacts", "repo_has_isolated_helicopter_views", "link_quality_high_confidence"], "linked_ci_commit_count": 0, "verification_artifact_count": 3, "design_schema_api_artifact_count": 0}, "text": "Comment chain pattern product: assumption_checks\nRepo: Va3elina/moex-aggregator\nThread: Va3elina/moex-aggregator#6\nOutcome: claimed_resolved_unverified\nThread label: thread_has_human_issue_and_fix_context\nSource graph label: source_backed_multi_signal_graph\nReasons: source_graph_has_real_artifacts, source_graph_has_verification_artifacts, repo_has_isolated_helicopter_views, link_quality_high_confidence\nChain evidence:\nIssue/PR evidence chain: Va3elina/moex-aggregator#6\nRepo: Va3elina/moex-aggregator\nThread label: thread_has_human_issue_and_fix_context\nOutcome: claimed_resolved_unverified\nComment count: 1\nLinked commit count: 5\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 0\nLabels: {'agent_instruction_gap': 1}\nPolarities: {'bad': 1}\nChanged file labels: {}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-364cc1ac73d13dd5\",\n    \"kind\": \"pull_request_body\",\n    \"label\": \"agent_instruction_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/Va3elina/moex-aggregator/pull/6\",\n    \"text\": \"GitHub feedback: agent_instruction_gap\\nPolarity: bad\\nKind: pull_request_body\\nRepo: Va3elina/moex-aggregator\\nAuthor: Va3elina (User)\\nURL: https://github.com/Va3elina/moex-aggregator/pull/6\\nTitle: fix(buffett): \u043e\u0441\u044c/\u043f\u0438\u043b\u044e\u043b\u044f \u043a\u0430\u043f\u0438\u0442\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u2014 \u0446\u0435\u043b\u043e\u0435 \u0447\u0438\u0441\u043b\u043e \u0431\u0435\u0437 \u0434\u0440\u043e\u0431\u043d\u043e\u0439 \u0447\u0430\u0441\u0442\u0438\\nBody:\\nformatPrimaryAxis: String(v) \u2192 String(Math.round(v)). \u041f\u0438\u043b\u044e\u043b\u044f \u0442\u0435\u043a\u0443\u0449\u0435\u0433\u043e\\n\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043f\u0435\u0447\u0430\u0442\u0430\u043b\u0430 \u0432\u0441\u0435 \u0437\u043d\u0430\u043a\u0438 \u043f\u043e\u0441\u043b\u0435 \u0442\u043e\u0447\u043a\u0438 (53.277) \u2014 \u0442\u0435\u043f\u0435\u0440\u044c \u0446\u0435\u043b\u043e\u0435 (53).\\n\u0414\u0435\u043b\u0435\u043d\u0438\u044f \u043e\u0441\u0438 \u043d\u0435 \u0437\u0430\u0442\u0440\u043e\u043d\u0443\u0442\u044b (\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0438 \u0442\u0430\u043a \u043a\u0440\u0443\u0433\u043b\u044b\u0435). \u0414\u0435\u0441\u043a\u0442\u043e\u043f/embed/\u043c\u043e\u0431\u0438\u043b\u043a\u0430.\\n\\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>\\n\"\n  }\n]\nChanged files:\n[]\nLinked chain ids:\n[\"evidence-chain-comment_to_commit-56595809bc5f2549\"]\nSource graph evidence:\nSource evidence repo graph summary\nRepo: Va3elina/moex-aggregator\nGraph label: source_backed_multi_signal_graph\nNodes: 14\nEdges: 22\nNode types: {\"cooccurrence_profile\": 1, \"github_repo_summary\": 1, \"helicopter_repo_view\": 2, \"repo\": 1, \"source_artifact\": 8, \"source_bundle\": 1}\nEdge types: {\"artifact_needs_claim_verification\": 5, \"artifact_supports_verification\": 3, \"repo_has_cooccurrence_profile\": 1, \"repo_has_github_evidence_summary\": 1, \"repo_has_schemas_helicopter_view\": 2, \"repo_has_source_artifact\": 8, \"repo_has_source_bundle\": 1, \"source_bundle_uses_cooccurrence_profile\": 1}\nArtifact families: {\"ci\": 3, \"docs\": 5}\nHelicopter views: {\"schemas\": 2}\nBundle labels: {\"source_backed_fake_real_verification_bundle\": 1}\nCo-occurrence labels: {\"fake_real_data_plus_verification_gap\": 1}", "source": "foundry_mined_dataset", "repo_url": "https://github.com/Va3elina/moex-aggregator", "source_id": "comment-chain-pattern-assumption_checks-b9ca15dfa0701a56", "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": "Va3elina/moex-aggregator", "source_dataset": "comment_chain_patterns/assumption_checks", "training_usage": "gold_candidate"}}}, {"ruleId": "foundry_assumption_check", "level": "warning", "message": {"text": "Foundry mined assumption checks: Va3elina/moex-aggregator"}, "properties": {"repobilityId": 434423, "scanner": "foundry_dataset", "fingerprint": "ec477527455e763c6ee8b7437a5ae29802bb0c1c6218bc90f24bbcc1f18672cd", "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": "Va3elina/moex-aggregator#59", "human_labels": ["agent_instruction_gap"], "issue_number": "59", "thread_label": "thread_has_human_issue_and_fix_context", "outcome_label": "claimed_resolved_unverified", "source_backed": true, "max_confidence": 0.795, "repo_full_name": "Va3elina/moex-aggregator", "training_usage": "weak_supervision", "confidence_tier": "weak_supervision", "source_chain_id": "evidence-chain-issue_chain-f6df07345003f2cd", "helicopter_views": {"schemas": 2}, "artifact_families": {"ci": 3, "docs": 5}, "source_chain_kind": "issue_chain", "changed_file_count": 0, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {}, "linked_commit_count": 4, "helicopter_view_count": 2, "source_artifact_count": 8, "classification_reasons": ["source_graph_has_real_artifacts", "source_graph_has_verification_artifacts", "repo_has_isolated_helicopter_views", "link_quality_weak_supervision"], "linked_ci_commit_count": 0, "verification_artifact_count": 3, "design_schema_api_artifact_count": 0}, "text": "Comment chain pattern product: assumption_checks\nRepo: Va3elina/moex-aggregator\nThread: Va3elina/moex-aggregator#59\nOutcome: claimed_resolved_unverified\nThread label: thread_has_human_issue_and_fix_context\nSource graph label: source_backed_multi_signal_graph\nReasons: source_graph_has_real_artifacts, source_graph_has_verification_artifacts, repo_has_isolated_helicopter_views, link_quality_weak_supervision\nChain evidence:\nIssue/PR evidence chain: Va3elina/moex-aggregator#59\nRepo: Va3elina/moex-aggregator\nThread label: thread_has_human_issue_and_fix_context\nOutcome: claimed_resolved_unverified\nComment count: 1\nLinked commit count: 4\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 0\nLabels: {'agent_instruction_gap': 1}\nPolarities: {'bad': 1}\nChanged file labels: {}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-96e2056616f5c790\",\n    \"kind\": \"pull_request_body\",\n    \"label\": \"agent_instruction_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/Va3elina/moex-aggregator/pull/59\",\n    \"text\": \"GitHub feedback: agent_instruction_gap\\nPolarity: bad\\nKind: pull_request_body\\nRepo: Va3elina/moex-aggregator\\nAuthor: Va3elina (User)\\nURL: https://github.com/Va3elina/moex-aggregator/pull/59\\nTitle: feat(funds): \u0441\u0435\u0442\u043a\u0430 \u0433\u0440\u0430\u0444\u0438\u043a\u0430 \u043f\u043e \u043f\u0440\u0430\u0432\u043e\u0439 \u043e\u0441\u0438 (\u0421\u0427\u0410)\\nBody:\\n\u0413\u043e\u0440\u0438\u0437\u043e\u043d\u0442\u0430\u043b\u044c\u043d\u044b\u0435 \u043b\u0438\u043d\u0438\u0438 \u0433\u0440\u0430\u0444\u0438\u043a\u0430 \u00ab\u0414\u0435\u043d\u044c\u0433\u0438 \u0432 \u0444\u043e\u043d\u0434\u0430\u0445\u00bb \u0441\u0442\u0440\u043e\u044f\u0442\u0441\u044f \u043e\u0442 \u043f\u0440\u0430\u0432\u043e\u0439 \u043e\u0441\u0438 (\u0421\u0427\u0410), \u0430 \u043d\u0435 \u043e\u0442 \u043b\u0435\u0432\u043e\u0439 (\u0438\u043d\u0434\u0435\u043a\u0441).\\n\\n- `gridAxis=\\\"secondary\\\"` \u043d\u0430 SimpleChart (\u0434\u0435\u0441\u043a\u0442\u043e\u043f + \u044d\u043c\u0431\u0435\u0434)\\n- `gridAxis=\\\"right\\\"` \u043d\u0430 MobileChart (\u043c\u043e\u0431\u0430\u0439\u043b)\\n\\n\u041f\u0440\u043e\u0434\u043e\u043b\u0436\u0435\u043d\u0438\u0435 \u0441\u0432\u043e\u043f\u0430 \u043e\u0441\u0435\u0439 \u0438\u0437 #55. \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u0443\u0436\u0435 \u0441\u043c\u0435\u0440\u0436\u0435\u043d\u043d\u044b\u0439 \u0432 main \u043f\u0440\u043e\u043f `gridAxis`.\\n\\n\ud83e\udd16 Generated with [Claude Code](https://claude.com/claude-code)\"\n  }\n]\nChanged files:\n[]\nLinked chain ids:\n[\"evidence-chain-comment_to_commit-7cd5705dfa3982ed\"]\nSource graph evidence:\nSource evidence repo graph summary\nRepo: Va3elina/moex-aggregator\nGraph label: source_backed_multi_signal_graph\nNodes: 14\nEdges: 22\nNode types: {\"cooccurrence_profile\": 1, \"github_repo_summary\": 1, \"helicopter_repo_view\": 2, \"repo\": 1, \"source_artifact\": 8, \"source_bundle\": 1}\nEdge types: {\"artifact_needs_claim_verification\": 5, \"artifact_supports_verification\": 3, \"repo_has_cooccurrence_profile\": 1, \"repo_has_github_evidence_summary\": 1, \"repo_has_schemas_helicopter_view\": 2, \"repo_has_source_artifact\": 8, \"repo_has_source_bundle\": 1, \"source_bundle_uses_cooccurrence_profile\": 1}\nArtifact families: {\"ci\": 3, \"docs\": 5}\nHelicopter views: {\"schemas\": 2}\nBundle labels: {\"source_backed_fake_real_verification_bundle\": 1}\nCo-occurrence labels: {\"fake_real_data_plus_verification_gap\": 1}", "source": "foundry_mined_dataset", "repo_url": "https://github.com/Va3elina/moex-aggregator", "source_id": "comment-chain-pattern-assumption_checks-40991e36bc8a5b0e", "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": "Va3elina/moex-aggregator", "source_dataset": "comment_chain_patterns/assumption_checks", "training_usage": "weak_supervision"}}}, {"ruleId": "foundry_assumption_check", "level": "warning", "message": {"text": "Foundry mined assumption checks: Va3elina/moex-aggregator"}, "properties": {"repobilityId": 434422, "scanner": "foundry_dataset", "fingerprint": "8d899b4285599363f5e01797999a2ea4f981d7741c9bd09779ca916025101767", "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": "Va3elina/moex-aggregator#58", "human_labels": ["agent_instruction_gap"], "issue_number": "58", "thread_label": "thread_has_human_issue_and_fix_context", "outcome_label": "claimed_resolved_unverified", "source_backed": true, "max_confidence": 0.837, "repo_full_name": "Va3elina/moex-aggregator", "training_usage": "gold_candidate", "confidence_tier": "high_confidence", "source_chain_id": "evidence-chain-issue_chain-09d63ba999ecc958", "helicopter_views": {"schemas": 2}, "artifact_families": {"ci": 3, "docs": 5}, "source_chain_kind": "issue_chain", "changed_file_count": 0, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {}, "linked_commit_count": 5, "helicopter_view_count": 2, "source_artifact_count": 8, "classification_reasons": ["source_graph_has_real_artifacts", "source_graph_has_verification_artifacts", "repo_has_isolated_helicopter_views", "link_quality_high_confidence"], "linked_ci_commit_count": 0, "verification_artifact_count": 3, "design_schema_api_artifact_count": 0}, "text": "Comment chain pattern product: assumption_checks\nRepo: Va3elina/moex-aggregator\nThread: Va3elina/moex-aggregator#58\nOutcome: claimed_resolved_unverified\nThread label: thread_has_human_issue_and_fix_context\nSource graph label: source_backed_multi_signal_graph\nReasons: source_graph_has_real_artifacts, source_graph_has_verification_artifacts, repo_has_isolated_helicopter_views, link_quality_high_confidence\nChain evidence:\nIssue/PR evidence chain: Va3elina/moex-aggregator#58\nRepo: Va3elina/moex-aggregator\nThread label: thread_has_human_issue_and_fix_context\nOutcome: claimed_resolved_unverified\nComment count: 1\nLinked commit count: 5\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 0\nLabels: {'agent_instruction_gap': 1}\nPolarities: {'bad': 1}\nChanged file labels: {}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-152dc5dfb7d5a626\",\n    \"kind\": \"pull_request_body\",\n    \"label\": \"agent_instruction_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/Va3elina/moex-aggregator/pull/58\",\n    \"text\": \"GitHub feedback: agent_instruction_gap\\nPolarity: bad\\nKind: pull_request_body\\nRepo: Va3elina/moex-aggregator\\nAuthor: Va3elina (User)\\nURL: https://github.com/Va3elina/moex-aggregator/pull/58\\nTitle: feat(funds): \u0437\u043d\u0430\u0447\u043e\u043a-\u0438\u043d\u0434\u0438\u043a\u0430\u0442\u043e\u0440 \u0432\u043c\u0435\u0441\u0442\u043e \u043f\u043e\u0434\u043f\u0438\u0441\u0438 \u0441 \u0434\u0430\u0442\u043e\u0439 \u0443 \u0444\u043e\u043d\u0434\u043e\u0432 \u0441 \u043e\u0442\u0441\u0442\u0430\u044e\u0449\u0435\u0439 \u0421\u0427\u0410\\nBody:\\n## \u0427\u0442\u043e \u043c\u0435\u043d\u044f\u0435\u0442\u0441\u044f\\n\\n\u0412 \u0434\u0435\u0441\u043a\u0442\u043e\u043f\u043d\u043e\u0439 \u0442\u0430\u0431\u043b\u0438\u0446\u0435 \u0444\u043e\u043d\u0434\u043e\u0432 (`FundsTable.tsx`) \u0443 \u0441\u0442\u0440\u043e\u043a, \u0447\u044c\u044f \u0421\u0427\u0410 \u043e\u0442\u0441\u0442\u0430\u0451\u0442 \u043e\u0442 \u043e\u0431\u0449\u0435\u0439 \u0434\u0430\u0442\u044b \u0434\u0430\u043d\u043d\u044b\u0445, \u0440\u0430\u043d\u044c\u0448\u0435 \u043f\u043e\u0434 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435\u043c \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u043b\u0441\u044f \u0442\u0435\u043a\u0441\u0442 `\u043d\u0430 \u0414\u0414.\u041c\u041c.\u0413\u0413\u0413\u0413`. \u0422\u0435\u043f\u0435\u0440\u044c \u0432\u043c\u0435\u0441\u0442\u043e \u0442\u0435\u043a\u0441\u0442\u0430 \u0440\u044f\u0434\u043e\u043c \u0441\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435\u043c \u0432\u044b\u0432\u043e\u0434\u0438\u0442\u0441\u044f \u043a\u043e\u043c\u043f\u0430\u043a\u0442\u043d\u044b\u0439 \u0437\u043d\u0430\u0447\u043e\u043a \u0441 \u0432\u043e\u0441\u043a\u043b\u0438\u0446\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u043c \u0437\u043d\u0430\u043a\u043e\u043c \u0432 \u043a\u0440\u0443\u0436\u043a\u0435 (`AlertCircle`, 13px, \u043f\u0440\u0438\u0433\u043b\u0443\u0448\u0451\u043d\u043d\u044b\u0439, opacity 0.6). \u0414\u0430\u0442\u0430 \u0430\u043a\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0440\u0430\u0441\u043a\u0440\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0432 \u043f\u043e\u0434\u0441\u043a\u0430\u0437\u043a\u0435 \u043f\u0440\u0438 \u043d\u0430\u0432\u0435\u0434\u0435\u043d\u0438\u0438.\\n\\n\u042f\u0447\u0435\u0439\u043a\u0430 \u043e\u0441\u0442\u0430\u0451\u0442\u0441\u044f \u0447\u0438\u0441\u0442\u043e\u0439, \u0437\u043d\u0430\u0447\u043e\u043a \u043d\u0435 \u0431\u0440\u043e\u0441\u0430\u0435\u0442\u0441\u044f \u0432 \u0433\u043b\u0430\u0437\u0430.\\n\\n## \u0413\u0434\u0435 \u043d\u0435 \u0442\u0440\u043e\u0433\u0430\u043b\\n- \u041c\u043e\u0431\u0438\u043b\u044c\u043d\u0430\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430 \u0444\u043e\u043d\u0434\u043e\u0432 \u0442\u0430\u043a\u0443\u044e \u043f\u043e\u0434\u043f\u0438\u0441\u044c \u043d\u0435 \u0440\u0435\u043d\u0434\u0435\u0440\u0438\u0442.\\n\\n\ud83e\udd16 Generated with [Claude Code](https://claude.com/claude-code)\"\n  }\n]\nChanged files:\n[]\nLinked chain ids:\n[\"evidence-chain-comment_to_commit-9a6dcf2ab4c1f7ed\"]\nSource graph evidence:\nSource evidence repo graph summary\nRepo: Va3elina/moex-aggregator\nGraph label: source_backed_multi_signal_graph\nNodes: 14\nEdges: 22\nNode types: {\"cooccurrence_profile\": 1, \"github_repo_summary\": 1, \"helicopter_repo_view\": 2, \"repo\": 1, \"source_artifact\": 8, \"source_bundle\": 1}\nEdge types: {\"artifact_needs_claim_verification\": 5, \"artifact_supports_verification\": 3, \"repo_has_cooccurrence_profile\": 1, \"repo_has_github_evidence_summary\": 1, \"repo_has_schemas_helicopter_view\": 2, \"repo_has_source_artifact\": 8, \"repo_has_source_bundle\": 1, \"source_bundle_uses_cooccurrence_profile\": 1}\nArtifact families: {\"ci\": 3, \"docs\": 5}\nHelicopter views: {\"schemas\": 2}\nBundle labels: {\"source_backed_fake_real_verification_bundle\": 1}\nCo-occurrence labels: {\"fake_real_data_plus_verification_gap\": 1}", "source": "foundry_mined_dataset", "repo_url": "https://github.com/Va3elina/moex-aggregator", "source_id": "comment-chain-pattern-assumption_checks-2615bff7937002f3", "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": "Va3elina/moex-aggregator", "source_dataset": "comment_chain_patterns/assumption_checks", "training_usage": "gold_candidate"}}}, {"ruleId": "foundry_assumption_check", "level": "warning", "message": {"text": "Foundry mined assumption checks: Va3elina/moex-aggregator"}, "properties": {"repobilityId": 434421, "scanner": "foundry_dataset", "fingerprint": "515fcda4caba123c60175b23902c8f38dbfcd5b8940aaa9390bd9e2a170bfb62", "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": "Va3elina/moex-aggregator#57", "human_labels": ["ui_workflow_gap"], "issue_number": "57", "thread_label": "thread_has_human_issue_and_fix_context", "outcome_label": "claimed_resolved_unverified", "source_backed": true, "max_confidence": 0.92, "repo_full_name": "Va3elina/moex-aggregator", "training_usage": "gold_candidate", "confidence_tier": "high_confidence", "source_chain_id": "evidence-chain-issue_chain-fa486936b97ae484", "helicopter_views": {"schemas": 2}, "artifact_families": {"ci": 3, "docs": 5}, "source_chain_kind": "issue_chain", "changed_file_count": 0, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {}, "linked_commit_count": 2, "helicopter_view_count": 2, "source_artifact_count": 8, "classification_reasons": ["source_graph_has_real_artifacts", "source_graph_has_verification_artifacts", "repo_has_isolated_helicopter_views", "link_quality_high_confidence"], "linked_ci_commit_count": 0, "verification_artifact_count": 3, "design_schema_api_artifact_count": 0}, "text": "Comment chain pattern product: assumption_checks\nRepo: Va3elina/moex-aggregator\nThread: Va3elina/moex-aggregator#57\nOutcome: claimed_resolved_unverified\nThread label: thread_has_human_issue_and_fix_context\nSource graph label: source_backed_multi_signal_graph\nReasons: source_graph_has_real_artifacts, source_graph_has_verification_artifacts, repo_has_isolated_helicopter_views, link_quality_high_confidence\nChain evidence:\nIssue/PR evidence chain: Va3elina/moex-aggregator#57\nRepo: Va3elina/moex-aggregator\nThread label: thread_has_human_issue_and_fix_context\nOutcome: claimed_resolved_unverified\nComment count: 1\nLinked commit count: 2\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 0\nLabels: {'ui_workflow_gap': 1}\nPolarities: {'bad': 1}\nChanged file labels: {}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-02bf6e9fcb3b026d\",\n    \"kind\": \"pull_request_body\",\n    \"label\": \"ui_workflow_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/Va3elina/moex-aggregator/pull/57\",\n    \"text\": \"GitHub feedback: ui_workflow_gap\\nPolarity: bad\\nKind: pull_request_body\\nRepo: Va3elina/moex-aggregator\\nAuthor: Va3elina (User)\\nURL: https://github.com/Va3elina/moex-aggregator/pull/57\\nTitle: fix(oi): \u0441\u0435\u0442\u043a\u0430 \u0433\u0440\u0430\u0444\u0438\u043a\u0430 \u043f\u043e \u0434\u0435\u043b\u0435\u043d\u0438\u044f\u043c \u043f\u0440\u0430\u0432\u043e\u0439 \u043e\u0441\u0438 (OI), \u0430 \u043d\u0435 \u0446\u0435\u043d\u044b\\nBody:\\n## \u041f\u0440\u043e\u0431\u043b\u0435\u043c\u0430\\n\u041d\u0430 \u0438\u043d\u0434\u0438\u043a\u0430\u0442\u043e\u0440\u0435 \u00ab\u041e\u0442\u043a\u0440\u044b\u0442\u044b\u0435 \u043f\u043e\u0437\u0438\u0446\u0438\u0438\u00bb \u0433\u043e\u0440\u0438\u0437\u043e\u043d\u0442\u0430\u043b\u044c\u043d\u044b\u0435 \u043b\u0438\u043d\u0438\u0438 \u0441\u0435\u0442\u043a\u0438 \u0441\u0442\u0440\u043e\u0438\u043b\u0438\u0441\u044c \u043f\u043e \u0434\u0435\u043b\u0435\u043d\u0438\u044f\u043c \u041b\u0415\u0412\u041e\u0419 (\u0446\u0435\u043d\u0430 \u0444\u044c\u044e\u0447\u0435\u0440\u0441\u0430) \u043e\u0441\u0438, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043d\u0435 \u0441\u043e\u0432\u043f\u0430\u0434\u0430\u043b\u0438 \u0441 \u043a\u0440\u0443\u0433\u043b\u044b\u043c\u0438 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f\u043c\u0438 \u041e\u0418 \u043d\u0430 \u043f\u0440\u0430\u0432\u043e\u0439 \u043e\u0441\u0438 \u2014 \u0430 \u041e\u0418 \u0442\u0443\u0442 \u0433\u043b\u0430\u0432\u043d\u0430\u044f \u0441\u0435\u0440\u0438\u044f. \u0421\u0435\u0442\u043a\u0430 \u0432\u0438\u0437\u0443\u0430\u043b\u044c\u043d\u043e \u043f\u0440\u0438\u0432\u044f\u0437\u044b\u0432\u0430\u043b\u0430\u0441\u044c \u043a \u0432\u0442\u043e\u0440\u043e\u0441\u0442\u0435\u043f\u0435\u043d\u043d\u044b\u043c \u0447\u0438\u0441\u043b\u0430\u043c.\\n\\n## \u0420\u0435\u0448\u0435\u043d\u0438\u0435\\n\u0414\u043e\u0431\u0430\u0432\u043b\u0435\u043d prop, \u0437\u0430\u0434\u0430\u044e\u0449\u0438\u0439, \u043a \u043a\u0430\u043a\u043e\u0439 \u043e\u0441\u0438 \u043f\u0440\u0438\u0432\u044f\u0437\u0430\u043d\u0430 \u0433\u043e\u0440\u0438\u0437\u043e\u043d\u0442\u0430\u043b\u044c\u043d\u0430\u044f \u0441\u0435\u0442\u043a\u0430, \u0438 \u0432\u043a\u043b\u044e\u0447\u0451\u043d \u043d\u0430 OI-\u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430\u0445 (desktop + mobile):\\n\\n- `SimpleChart`: \u043d\u043e\u0432\u044b\u0439 `gridAxis?: 'primary' | 'secondary'` (default `primary`). \u041f\u0440\u0438 `secondary` \u043b\u0438\u043d\u0438\u0438 \u0441\u0435\u0442\u043a\u0438 \u043b\u043e\u0436\u0430\u0442\u0441\u044f \u043d\u0430 \u0434\u0435\u043b\u0435\u043d\u0438\u044f \u043f\u0440\u0430\u0432\u043e\u0439 (\u041e\u0418) \u043e\u0441\u0438. \u041f\u043e\u0434\u043f\u0438\u0441\u0438 \u043b\u0435\u0432\u043e\u0439 \u043e\u0441\u0438 (\u0446\u0435\u043d\u0430) \u043e\u0442\u0432\u044f\u0437\u0430\u043d\u044b \u043e\u0442 \u0446\u0438\u043a\u043b\u0430 \u0441\u0435\u0442\u043a\u0438 \u0438 \u043e\u0441\u0442\u0430\u044e\u0442\u0441\u044f \u043d\u0430 \u0441\u0432\u043e\u0438\u0445 \u043f\u043e\u0437\u0438\u0446\u0438\u044f\u0445 \u043a\u0430\u043a visual reference.\\n- `MobileChart`: \u0441\u0438\u043c\u043c\u0435\u0442\u0440\u0438\u0447\u043d\u044b\u0439 `gridAxis?: 'left' | 'right'`.\\n- `OpenInterestPage` \u2192 `gridAxis=secondary`, `MobileOpenInterestPage` \u2192 `gridAxis=right`.\\n\\nDefault \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u0442 \u043f\u0440\u0435\u0436\u043d\u0435\u0435 \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435, \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0435 \u0433\u0440\u0430\u0444\u0438\u043a\u0438 (\u0411\u0430\u0444\u0444\u0435\u0442\u0442/\u0421\u0438\u043b\u0430/\u0424\u043e\u043d\u0434\u044b \u0438 \u043f\u0440.) \u043d\u0435 \u0437\u0430\u0434\u0435\u0442\u044b.\\n\\n## \u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430\\n\u041b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u0439 `tsc -b` \u0437\u0435\u043b\u0451\u043d\u044b\u0439.\\n\\n\ud83e\udd16 Generated with [Cl\"\n  }\n]\nChanged files:\n[]\nLinked chain ids:\n[\"evidence-chain-comment_to_commit-34718bf37a4cb324\"]\nSource graph evidence:\nSource evidence repo graph summary\nRepo: Va3elina/moex-aggregator\nGraph label: source_backed_multi_signal_graph\nNodes: 14\nEdges: 22\nNode types: {\"cooccurrence_profile\": 1, \"github_repo_summary\": 1, \"helicopter_repo_view\": 2, \"repo\": 1, \"source_artifact\": 8, \"source_bundle\": 1}\nEdge types: {\"artifact_needs_claim_verification\": 5, \"artifact_supports_verification\": 3, \"repo_has_cooccurrence_profile\": 1, \"repo_has_github_evidence_summary\": 1, \"repo_has_schemas_helicopter_view\": 2, \"repo_has_source_artifact\": 8, \"repo_has_source_bundle\": 1, \"source_bundle_uses_cooccurrence_profile\": 1}\nArtifact famili\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/Va3elina/moex-aggregator", "source_id": "comment-chain-pattern-assumption_checks-ae2a8ec0d0f1756a", "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": "Va3elina/moex-aggregator", "source_dataset": "comment_chain_patterns/assumption_checks", "training_usage": "gold_candidate"}}}, {"ruleId": "foundry_assumption_check", "level": "warning", "message": {"text": "Foundry mined assumption checks: Va3elina/moex-aggregator"}, "properties": {"repobilityId": 434420, "scanner": "foundry_dataset", "fingerprint": "1a76c1f56a74aaf12b03e474b985fdf267164caf9c922edd00986709445cbf2b", "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": "Va3elina/moex-aggregator#56", "human_labels": ["test_ci_gap"], "issue_number": "56", "thread_label": "thread_has_human_issue_and_fix_context", "outcome_label": "claimed_resolved_unverified", "source_backed": true, "max_confidence": 0.698, "repo_full_name": "Va3elina/moex-aggregator", "training_usage": "weak_supervision", "confidence_tier": "weak_supervision", "source_chain_id": "evidence-chain-issue_chain-9e3def2bf7b0b33d", "helicopter_views": {"schemas": 2}, "artifact_families": {"ci": 3, "docs": 5}, "source_chain_kind": "issue_chain", "changed_file_count": 0, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {}, "linked_commit_count": 3, "helicopter_view_count": 2, "source_artifact_count": 8, "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": 3, "design_schema_api_artifact_count": 0}, "text": "Comment chain pattern product: assumption_checks\nRepo: Va3elina/moex-aggregator\nThread: Va3elina/moex-aggregator#56\nOutcome: claimed_resolved_unverified\nThread label: thread_has_human_issue_and_fix_context\nSource graph label: source_backed_multi_signal_graph\nReasons: source_graph_has_real_artifacts, source_graph_has_verification_artifacts, repo_has_isolated_helicopter_views, link_quality_weak_supervision, high_risk_human_feedback_label\nChain evidence:\nIssue/PR evidence chain: Va3elina/moex-aggregator#56\nRepo: Va3elina/moex-aggregator\nThread label: thread_has_human_issue_and_fix_context\nOutcome: claimed_resolved_unverified\nComment count: 1\nLinked commit count: 3\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 0\nLabels: {'test_ci_gap': 1}\nPolarities: {'bad': 1}\nChanged file labels: {}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-e1e9374022fbad79\",\n    \"kind\": \"pull_request_body\",\n    \"label\": \"test_ci_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/Va3elina/moex-aggregator/pull/56\",\n    \"text\": \"GitHub feedback: test_ci_gap\\nPolarity: bad\\nKind: pull_request_body\\nRepo: Va3elina/moex-aggregator\\nAuthor: Va3elina (User)\\nURL: https://github.com/Va3elina/moex-aggregator/pull/56\\nTitle: feat(oi): \u043f\u043e\u0434\u0441\u043a\u0430\u0437\u043a\u0430 \u00ab?\u00bb \u0434\u043b\u044f \u041e\u0442\u043a\u0440\u044b\u0442\u043e\u0433\u043e \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u0430 \u0438 \u0427\u0438\u0441\u0442\u043e\u0439 \u043f\u043e\u0437\u0438\u0446\u0438\u0438 \u0432 \u0434\u0440\u043e\u043f\u0434\u0430\u0443\u043d\u0435\\nBody:\\n## \u0427\u0442\u043e\\n\\n\u0420\u044f\u0434\u043e\u043c \u0441 \u043f\u0443\u043d\u043a\u0442\u0430\u043c\u0438 **\u041e\u0442\u043a\u0440\u044b\u0442\u044b\u0439 \u0438\u043d\u0442\u0435\u0440\u0435\u0441** \u0438 **\u0427\u0438\u0441\u0442\u0430\u044f \u043f\u043e\u0437\u0438\u0446\u0438\u044f** \u0432 \u0432\u044b\u043f\u0430\u0434\u0430\u044e\u0449\u0435\u043c \u0441\u043f\u0438\u0441\u043a\u0435 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u043e\u0432 \u043d\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435 \u043e\u0442\u043a\u0440\u044b\u0442\u044b\u0445 \u043f\u043e\u0437\u0438\u0446\u0438\u0439 \u043f\u043e\u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0438\u043a\u043e\u043d\u043a\u0430 \u00ab?\u00bb. \u041f\u043e \u043d\u0430\u0432\u0435\u0434\u0435\u043d\u0438\u044e (desktop) \u0438\u043b\u0438 \u0442\u0430\u043f\u0443 (mobile) \u0432\u0441\u043f\u043b\u044b\u0432\u0430\u0435\u0442 \u043f\u043e\u043f\u043e\u0432\u0435\u0440 \u0441 \u043f\u043e\u044f\u0441\u043d\u0435\u043d\u0438\u0435\u043c: \u0447\u0442\u043e \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u0438 \u043a\u0430\u043a \u0441\u0447\u0438\u0442\u0430\u0435\u0442\u0441\u044f \u043e\u0442\u043a\u0440\u044b\u0442\u044b\u0439 \u0438\u043d\u0442\u0435\u0440\u0435\u0441.\\n\\n## \u041a\u0430\u043a\\n\\n- `Dropdown`: \u0443 \u043e\u043f\u0446\u0438\u0438 \u043f\u043e\u044f\u0432\u0438\u043b\u043e\u0441\u044c \u043d\u0435\u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0435 \u043f\u043e\u043b\u0435 `help={ title, content }`. \u0415\u0441\u043b\u0438 \u0437\u0430\u0434\u0430\u043d\u043e \u2014 \u0441\u043f\u0440\u0430\u0432\u0430 \u043e\u0442 \u043b\u0435\u0439\u0431\u043b\u0430 \u0440\u0438\u0441\u0443\u0435\u0442\u0441\u044f \u00ab?\u00bb (`OptionHelp`).\\n- \u041f\u043e\u043f\u043e\u0432\u0435\u0440 \u043c\u043e\u043d\u0442\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0447\u0435\u0440\u0435\u0437 `createPortal` \u0432 `document.body` \u0441 `position: fixed`, \u0447\u0442\u043e\u0431\u044b \u0435\u0433\u043e \u043d\u0435 \u043e\u0431\u0440\u0435\u0437\u0430\u043b `overflow: auto` \u0443 \u043c\u0435\u043d\u044e \u0434\u0440\u043e\u043f\u0434\u0430\u0443\u043d\u0430.\\n- \u041a\u043b\u0438\u043a \u043f\u043e \u00ab?\u00bb \u043d\u0435 \u0432\u044b\u0431\u0438\u0440\u0430\u0435\u0442 \u043e\u043f\u0446\u0438\u044e (`stopPropagation`), \u0430 \u043a\u043b\u0438\u043a/`mousedown` \u043f\u043e \u043f\u043e\u043f\u043e\u0432\u0435\u0440\u0443 \u043d\u0435 \u0437\u0430\u043a\u0440\u044b\u0432\u0430\u0435\u0442 \u0441\u0430\u043c \u0434\u0440\u043e\u043f\u0434\u0430\u0443\u043d. \u0417\u0430\u043a\u0440\u044b\u0442\u0438\u0435 \u2014 \u043a\u043b\u0438\u043a \u0432\u043d\u0435, `Esc`, \u0441\u043a\u0440\u043e\u043b\u043b; \u0440\u0435\u043f\u043e\u0437\u0438\u0446\u0438\u044f \u043f\u0440\u0438 resize.\\n- `OpenInterestPage`: \u0442\u0435\u043a\u0441\u0442\u044b \u0434\u043b\u044f \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u043e\u0432 `oi` \u0438 `net`, \u0444\u043e\u0440\u043c\u0443\u043b\u0438\u0440\u043e\u0432\u043a\u0438 \u0441\u0432\u0435\u0440\u0435\u043d\u044b \u0441 \u043c\u0435\u0442\u043e\u0434\u043e\u043b\u043e\u0433\u0438\u0435\u0439 \u0438\u043d\u0434\u0438\u043a\u0430\u0442\u043e\u0440\u0430.\\n\\n## \u041e\u0431\u043b\u0430\u0441\u0442\u044c\\n\\n\u0422\u043e\u043b\u044c\u043a\u043e desktop-\u0434\u0440\u043e\u043f\u0434\u0430\u0443\u043d (\u043a\u0430\u043a \u043d\u0430 \u0441\u043a\u0440\u0438\u043d\u0448\u043e\u0442\u0435). \u041c\u043e\u0431\u0438\u043b\u044c\u043d\u0430\u044f \u0432\u0435\u0440\u0441\u0438\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u0447\u0438\u043f\u044b `fm\"\n  }\n]\nChanged files:\n[]\nLinked chain ids:\n[\"evidence-chain-comment_to_commit-e38b1f5a904e4917\"]\nSource graph evidence:\nSource evidence repo graph summary\nRepo: Va3elina/moex-aggregator\nGraph label: source_backed_multi_signal_graph\nNodes: 14\nEdges: 22\nNode types: {\"cooccurrence_profile\": 1, \"github_repo_summary\": 1, \"helicopter_repo_view\": 2, \"repo\": 1, \"source_artifact\": 8, \"source_bundle\": 1}\nEdge types: {\"artifact_needs_claim_verification\": 5, \"artifact_supports_verification\": 3, \"repo_has_cooccurrence_profile\": 1, \"repo_has_github_evidence_summary\": 1, \"repo_has_schemas_helicopter_view\": 2, \"repo_has_source_artifact\": 8, \"repo_has_source_bundle\": 1, \"source_bundle_uses_cooccurrence_profi\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/Va3elina/moex-aggregator", "source_id": "comment-chain-pattern-assumption_checks-0641a4a778d8090a", "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": "Va3elina/moex-aggregator", "source_dataset": "comment_chain_patterns/assumption_checks", "training_usage": "weak_supervision"}}}, {"ruleId": "foundry_assumption_check", "level": "warning", "message": {"text": "Foundry mined assumption checks: Va3elina/moex-aggregator"}, "properties": {"repobilityId": 434419, "scanner": "foundry_dataset", "fingerprint": "421a25de17c104daf8b536540998702a0dcd5f3d1e9385a8ea7ecf4f50ca7e2d", "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": "Va3elina/moex-aggregator#55", "human_labels": ["api_integration_gap"], "issue_number": "55", "thread_label": "thread_has_human_issue_and_fix_context", "outcome_label": "claimed_resolved_unverified", "source_backed": true, "max_confidence": 0.708, "repo_full_name": "Va3elina/moex-aggregator", "training_usage": "weak_supervision", "confidence_tier": "weak_supervision", "source_chain_id": "evidence-chain-issue_chain-f3a67c0f26d61e39", "helicopter_views": {"schemas": 2}, "artifact_families": {"ci": 3, "docs": 5}, "source_chain_kind": "issue_chain", "changed_file_count": 0, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {}, "linked_commit_count": 2, "helicopter_view_count": 2, "source_artifact_count": 8, "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": 3, "design_schema_api_artifact_count": 0}, "text": "Comment chain pattern product: assumption_checks\nRepo: Va3elina/moex-aggregator\nThread: Va3elina/moex-aggregator#55\nOutcome: claimed_resolved_unverified\nThread label: thread_has_human_issue_and_fix_context\nSource graph label: source_backed_multi_signal_graph\nReasons: source_graph_has_real_artifacts, source_graph_has_verification_artifacts, repo_has_isolated_helicopter_views, link_quality_weak_supervision, high_risk_human_feedback_label\nChain evidence:\nIssue/PR evidence chain: Va3elina/moex-aggregator#55\nRepo: Va3elina/moex-aggregator\nThread label: thread_has_human_issue_and_fix_context\nOutcome: claimed_resolved_unverified\nComment count: 1\nLinked commit count: 2\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 0\nLabels: {'api_integration_gap': 1}\nPolarities: {'bad': 1}\nChanged file labels: {}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-710621d6f96811e5\",\n    \"kind\": \"pull_request_body\",\n    \"label\": \"api_integration_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/Va3elina/moex-aggregator/pull/55\",\n    \"text\": \"GitHub feedback: api_integration_gap\\nPolarity: bad\\nKind: pull_request_body\\nRepo: Va3elina/moex-aggregator\\nAuthor: Va3elina (User)\\nURL: https://github.com/Va3elina/moex-aggregator/pull/55\\nTitle: feat(funds): \u0421\u0427\u0410 \u043d\u0430 \u043f\u0440\u0430\u0432\u043e\u0439 \u043e\u0441\u0438, \u0438\u043d\u0434\u0435\u043a\u0441 \u043d\u0430 \u043b\u0435\u0432\u043e\u0439\\nBody:\\n## \u0427\u0442\u043e\\n\u0421\u0432\u043e\u043f\u043d\u0443\u043b \u043e\u0441\u0438 \u043d\u0430 \u0433\u0440\u0430\u0444\u0438\u043a\u0435 \u00ab\u0414\u0435\u043d\u044c\u0433\u0438 \u0432 \u0444\u043e\u043d\u0434\u0430\u0445\u00bb: \u0441\u0443\u043c\u043c\u0430\u0440\u043d\u0430\u044f \u0421\u0427\u0410 \u0442\u0435\u043f\u0435\u0440\u044c \u043d\u0430 \u043f\u0440\u0430\u0432\u043e\u0439 \u043e\u0441\u0438, \u0438\u043d\u0434\u0435\u043a\u0441-\u044d\u0442\u0430\u043b\u043e\u043d \u043d\u0430 \u043b\u0435\u0432\u043e\u0439. \u0420\u0430\u043d\u044c\u0448\u0435 \u0431\u044b\u043b\u043e \u043d\u0430\u043e\u0431\u043e\u0440\u043e\u0442 (\u0441\u043c. \u0441\u043a\u0440\u0438\u043d\u0448\u043e\u0442 \u0432 \u0437\u0430\u0434\u0430\u0447\u0435).\\n\\n## \u041a\u0430\u043a\\n\u041f\u0430\u0442\u0442\u0435\u0440\u043d \u043a\u0430\u043a \u0432 BuffettPage (\u0433\u043b\u0430\u0432\u043d\u0430\u044f \u0441\u0435\u0440\u0438\u044f \u0443\u0445\u043e\u0434\u0438\u0442 \u043d\u0430 \u043f\u0440\u0430\u0432\u0443\u044e \u043e\u0441\u044c):\\n- **SimpleChart** (\u0434\u0435\u0441\u043a\u0442\u043e\u043f + \u044d\u043c\u0431\u0435\u0434): swap `data`/`secondaryData`, `primaryColor`/`secondaryColor` \u0438 \u0444\u043e\u0440\u043c\u0430\u0442\u0442\u0435\u0440\u043e\u0432; `reverseLegend` \u0434\u0435\u0440\u0436\u0438\u0442 \u0421\u0427\u0410 \u043f\u0435\u0440\u0432\u043e\u0439 \u0432 \u043b\u0435\u0433\u0435\u043d\u0434\u0435; `showPrimary={showIndex}` \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442 \u0432\u0438\u0434\u0438\u043c\u043e\u0441\u0442\u044c\u044e \u043b\u0438\u043d\u0438\u0438 \u0438\u043d\u0434\u0435\u043a\u0441\u0430. \u041f\u0438\u043b\u043b\u044b \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439, \u0442\u0443\u043b\u0442\u0438\u043f, \u0442\u043e\u0447\u043a\u0438 \u0438 \u043f\u043e\u0434\u043f\u0438\u0441\u0438 \u043e\u0441\u0435\u0439 \u0441\u043b\u0435\u0434\u0443\u044e\u0442 \u0437\u0430 \u0440\u043e\u043b\u044c\u044e primary/secondary \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438.\\n- **MobileChart** (\u043c\u043e\u0431\u0430\u0439\u043b): \u0443 \u0441\u0435\u0440\u0438\u0439 \u043f\u0440\u043e\u0441\u0442\u043e \u043c\u0435\u043d\u044f\u0435\u0442\u0441\u044f `axis: 'left' | 'right'` (\u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442 \u0441\u0430\u043c \u0444\u0438\u043b\u044c\u0442\u0440\u0443\u0435\u0442 \u0441\u0435\u0440\u0438\u0438 \u043f\u043e \u043e\u0441\u0438).\\n\\n## \u0424\u0430\u0439\u043b\u044b\\n- `frontend/src/pages/FundsMoneyPage.tsx` \u2014 \u0434\u0435\u0441\u043a\u0442\u043e\u043f; \u043e\u0431\u043d\u043e\u0432\u043b\u0451\u043d \u0445\u0438\u043d\u0442 \u0442\u043e\u0433\u043b\u0430 \u00ab\u0418\u043d\u0434\u0435\u043a\u0441\u00bb (\u0442\u0435\u043f\u0435\u0440\u044c \u043b\u0435\u0432\u0430\u044f \u043e\u0441\u044c)\\n- `frontend/src/pages/embed/EmbedFundsMoney.tsx` \u2014 \u044d\u043c\u0431\u0435\u0434-\u0432\u0438\u0434\u0436\u0435\u0442\\n- `frontend/src/pages/mobile/MobileFundsMoneyPage.tsx` \u2014 \u043c\u043e\u0431\u0430\u0439\u043b\\n\\n## \u0417\u0430\u043c\u0435\u0442\u043a\u0438\\n- `indexData ?? []` \u043d\u0430 \u0434\u0435\u0441\u043a\u0442\u043e\u043f\u0435/\u044d\u043c\u0431\u0435\u0434\u0435: \u043d\u0430\"\n  }\n]\nChanged files:\n[]\nLinked chain ids:\n[\"evidence-chain-comment_to_commit-ce7dcaf44f996946\"]\nSource graph evidence:\nSource evidence repo graph summary\nRepo: Va3elina/moex-aggregator\nGraph label: source_backed_multi_signal_graph\nNodes: 14\nEdges: 22\nNode types: {\"cooccurrence_profile\": 1, \"github_repo_summary\": 1, \"helicopter_repo_view\": 2, \"repo\": 1, \"source_artifact\": 8, \"source_bundle\": 1}\nEdge types: {\"artifact_needs_claim_verification\": 5, \"artifact_supports_verification\": 3, \"repo_has_cooccurrence_profile\": 1, \"repo_has_github_evidence_summary\": 1, \"repo_has_schemas_helicopter_view\": 2, \"repo_has_source_artifact\": 8, \"repo_has_source_bundle\": 1, \"source_bundle_uses_c\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/Va3elina/moex-aggregator", "source_id": "comment-chain-pattern-assumption_checks-9d8029639d785815", "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": "Va3elina/moex-aggregator", "source_dataset": "comment_chain_patterns/assumption_checks", "training_usage": "weak_supervision"}}}, {"ruleId": "foundry_assumption_check", "level": "warning", "message": {"text": "Foundry mined assumption checks: Va3elina/moex-aggregator"}, "properties": {"repobilityId": 434418, "scanner": "foundry_dataset", "fingerprint": "69cd72ee701ea01c7bf231546f95817700de591f051fa99905ccfd46a12a7562", "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": "Va3elina/moex-aggregator#53", "human_labels": ["agent_instruction_gap"], "issue_number": "53", "thread_label": "thread_has_human_issue_and_fix_context", "outcome_label": "claimed_resolved_unverified", "source_backed": true, "max_confidence": 0.82, "repo_full_name": "Va3elina/moex-aggregator", "training_usage": "gold_candidate", "confidence_tier": "high_confidence", "source_chain_id": "evidence-chain-issue_chain-c6a9eea50f393081", "helicopter_views": {"schemas": 2}, "artifact_families": {"ci": 3, "docs": 5}, "source_chain_kind": "issue_chain", "changed_file_count": 0, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {}, "linked_commit_count": 5, "helicopter_view_count": 2, "source_artifact_count": 8, "classification_reasons": ["source_graph_has_real_artifacts", "source_graph_has_verification_artifacts", "repo_has_isolated_helicopter_views", "link_quality_high_confidence"], "linked_ci_commit_count": 0, "verification_artifact_count": 3, "design_schema_api_artifact_count": 0}, "text": "Comment chain pattern product: assumption_checks\nRepo: Va3elina/moex-aggregator\nThread: Va3elina/moex-aggregator#53\nOutcome: claimed_resolved_unverified\nThread label: thread_has_human_issue_and_fix_context\nSource graph label: source_backed_multi_signal_graph\nReasons: source_graph_has_real_artifacts, source_graph_has_verification_artifacts, repo_has_isolated_helicopter_views, link_quality_high_confidence\nChain evidence:\nIssue/PR evidence chain: Va3elina/moex-aggregator#53\nRepo: Va3elina/moex-aggregator\nThread label: thread_has_human_issue_and_fix_context\nOutcome: claimed_resolved_unverified\nComment count: 1\nLinked commit count: 5\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 0\nLabels: {'agent_instruction_gap': 1}\nPolarities: {'bad': 1}\nChanged file labels: {}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-fcca2f1ab176f69d\",\n    \"kind\": \"pull_request_body\",\n    \"label\": \"agent_instruction_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/Va3elina/moex-aggregator/pull/53\",\n    \"text\": \"GitHub feedback: agent_instruction_gap\\nPolarity: bad\\nKind: pull_request_body\\nRepo: Va3elina/moex-aggregator\\nAuthor: Va3elina (User)\\nURL: https://github.com/Va3elina/moex-aggregator/pull/53\\nTitle: feat(signals): \u0433\u0438\u0431\u043a\u0438\u0439 \u0442\u0430\u0440\u0433\u0435\u0442\u0438\u043d\u0433 \u0444\u043e\u043d\u0434-\u0441\u0438\u0433\u043d\u0430\u043b\u0430 \u2014 \u043d\u0430\u0431\u043e\u0440 \u0444\u043e\u043d\u0434\u043e\u0432 (\u043a\u0430\u0442\u0435\u0433\u043e\u0440\u0438\u0438+\u0423\u041a+\u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0435)\\nBody:\\n## \u0427\u0442\u043e\\n\u0424\u043e\u043d\u0434-\u0430\u043b\u0435\u0440\u0442 \u00ab\u0430\u043d\u043e\u043c\u0430\u043b\u044c\u043d\u044b\u0439 \u043f\u043e\u0442\u043e\u043a\u00bb \u0431\u043e\u043b\u044c\u0448\u0435 \u043d\u0435 \u043f\u0440\u0438\u0432\u044f\u0437\u0430\u043d \u043a \u043a\u0430\u0442\u0435\u0433\u043e\u0440\u0438\u0438 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b. \u0412 \u043c\u043e\u0434\u0430\u043b\u043a\u0435 \u2014 \u043f\u043e\u043b\u043d\u043e\u0446\u0435\u043d\u043d\u044b\u0439 **\u043f\u0438\u043a\u0435\u0440 \u0444\u043e\u043d\u0434\u043e\u0432**: \u0447\u0438\u043f\u044b \u043a\u0430\u0442\u0435\u0433\u043e\u0440\u0438\u0439 (\u043c\u0443\u043b\u044c\u0442\u0438\u0432\u044b\u0431\u043e\u0440 + \u00ab\u0412\u0441\u0435 \u043a\u0430\u0442\u0435\u0433\u043e\u0440\u0438\u0438\u00bb) + `FundPicker` \u043f\u043e \u0423\u041a (\u0442\u043e\u0433\u0433\u043b \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0445). **\u0414\u0435\u0444\u043e\u043b\u0442 \u2014 \u0432\u0441\u0435 \u0444\u043e\u043d\u0434\u044b.** \u041f\u043e\u043a\u0440\u044b\u0432\u0430\u0435\u0442 \u043b\u044e\u0431\u0443\u044e \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0443 \u00ab\u043f\u043e\u0434 \u0441\u0435\u0431\u044f\u00bb.\\n\\n## \u041a\u043e\u043d\u0442\u0440\u0430\u043a\u0442 (\u0440\u0435\u0437\u043e\u043b\u0432 \u0432\u044b\u0431\u043e\u0440\u0430 \u2192 payload)\\n| \u0412\u044b\u0431\u043e\u0440 | asset | fund_ids |\\n|---|---|---|\\n| \u0412\u0441\u0435 \u0444\u043e\u043d\u0434\u044b | `all` | \u2014 (\u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u0438) |\\n| \u0420\u043e\u0432\u043d\u043e \u043e\u0434\u043d\u0430 \u043a\u0430\u0442\u0435\u0433\u043e\u0440\u0438\u044f \u0446\u0435\u043b\u0438\u043a\u043e\u043c | `<category>` | \u2014 (backward-compat) |\\n| \u041f\u0440\u043e\u0438\u0437\u0432\u043e\u043b\u044c\u043d\u044b\u0439 \u043d\u0430\u0431\u043e\u0440 | `custom` | `[...]` (\u0437\u0430\u043c\u043e\u0440\u043e\u0436\u0451\u043d) |\\n\\n`asset_name` \u2014 \u043c\u0435\u0442\u043a\u0430 \u0432\u044b\u0431\u043e\u0440\u0430 (\u00ab\u0412\u0441\u0435 \u0444\u043e\u043d\u0434\u044b\u00bb/\u00ab\u0410\u043a\u0446\u0438\u0438, \u041e\u0431\u043b\u0438\u0433\u0430\u0446\u0438\u0438\u00bb/\u00abN \u0444\u043e\u043d\u0434\u043e\u0432\u00bb) \u0434\u043b\u044f \u0442\u0435\u043a\u0441\u0442\u0430 \u0441\u0438\u0433\u043d\u0430\u043b\u0430 \u0438 \u043a\u0430\u0431\u0438\u043d\u0435\u0442\u0430.\\n\\n## \u0411\u0414\\n\u041c\u0438\u0433\u0440\u0430\u0446\u0438\u044f `011_alert_fund_ids.sql` \u2014 `alerts.fund_ids TEXT` nullable (CSV; NULL = \u0442\u0430\u0440\u0433\u0435\u0442 \u043f\u043e `asset`). **\u0423\u0436\u0435 \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0430 \u043d\u0430 \u043f\u0440\u043e\u0434\u0435 \u0432\u0440\u0443\u0447\u043d\u0443\u044e** (\u0430\u0434\u0434\u0438\u0442\u0438\u0432\u043d\u043e, \u0438\u0434\u0435\u043c\u043f\u043e\u0442\u0435\u043d\u0442\u043d\u043e, \u043e\u0431\u0440\u0430\u0442\u043d\u043e\u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u043e \u2014 \u0441\u0442\u0430\u0440\u044b\u0435 \u0444\u043e\u043d\u0434-\u0430\u043b\u0435\u0440\u0442\u044b \u043f\u043e \u043a\u0430\u0442\u0435\u0433\u043e\u0440\u0438\u0438 \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0430\u044e\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c).\\n\\n## \u0411\u044d\u043a\u0435\u043d\u0434\\n- `signals/db.get_fund_flow_series(fun\"\n  }\n]\nChanged files:\n[]\nLinked chain ids:\n[\"evidence-chain-comment_to_commit-ff25a264a14952d6\"]\nSource graph evidence:\nSource evidence repo graph summary\nRepo: Va3elina/moex-aggregator\nGraph label: source_backed_multi_signal_graph\nNodes: 14\nEdges: 22\nNode types: {\"cooccurrence_profile\": 1, \"github_repo_summary\": 1, \"helicopter_repo_view\": 2, \"repo\": 1, \"source_artifact\": 8, \"source_bundle\": 1}\nEdge types: {\"artifact_needs_claim_verification\": 5, \"artifact_supports_verification\": 3, \"repo_has_cooccurrence_profile\": 1, \"repo_has_github_evidence_summary\": 1, \"repo_has_schemas_helicopter_view\": 2, \"repo_has_source_artifact\": 8, \"repo_has_source_bundle\": 1, \"source_bundle_uses_cooccurrence_profile\": 1}\nAr\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/Va3elina/moex-aggregator", "source_id": "comment-chain-pattern-assumption_checks-ddde192b12836cf2", "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": "Va3elina/moex-aggregator", "source_dataset": "comment_chain_patterns/assumption_checks", "training_usage": "gold_candidate"}}}, {"ruleId": "foundry_assumption_check", "level": "warning", "message": {"text": "Foundry mined assumption checks: Va3elina/moex-aggregator"}, "properties": {"repobilityId": 434417, "scanner": "foundry_dataset", "fingerprint": "28874ae8ca1e0c970e8d9adad050ef812358d02f646907a0916887fe88a0ac66", "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": "Va3elina/moex-aggregator#52", "human_labels": ["human_feedback_general"], "issue_number": "52", "thread_label": "thread_needs_classification", "outcome_label": "ambiguous_needs_more_evidence", "source_backed": true, "max_confidence": 0.728, "repo_full_name": "Va3elina/moex-aggregator", "training_usage": "weak_supervision", "confidence_tier": "weak_supervision", "source_chain_id": "evidence-chain-issue_chain-70af42015f3704cf", "helicopter_views": {"schemas": 2}, "artifact_families": {"ci": 3, "docs": 5}, "source_chain_kind": "issue_chain", "changed_file_count": 0, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {}, "linked_commit_count": 2, "helicopter_view_count": 2, "source_artifact_count": 8, "classification_reasons": ["source_graph_has_real_artifacts", "source_graph_has_verification_artifacts", "repo_has_isolated_helicopter_views", "link_quality_weak_supervision"], "linked_ci_commit_count": 0, "verification_artifact_count": 3, "design_schema_api_artifact_count": 0}, "text": "Comment chain pattern product: assumption_checks\nRepo: Va3elina/moex-aggregator\nThread: Va3elina/moex-aggregator#52\nOutcome: ambiguous_needs_more_evidence\nThread label: thread_needs_classification\nSource graph label: source_backed_multi_signal_graph\nReasons: source_graph_has_real_artifacts, source_graph_has_verification_artifacts, repo_has_isolated_helicopter_views, link_quality_weak_supervision\nChain evidence:\nIssue/PR evidence chain: Va3elina/moex-aggregator#52\nRepo: Va3elina/moex-aggregator\nThread label: thread_needs_classification\nOutcome: ambiguous_needs_more_evidence\nComment count: 2\nLinked commit count: 2\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 0\nLabels: {'human_feedback_general': 2}\nPolarities: {'neutral': 2}\nChanged file labels: {}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-63ebe559d1f20cfb\",\n    \"kind\": \"pull_request_body\",\n    \"label\": \"human_feedback_general\",\n    \"polarity\": \"neutral\",\n    \"url\": \"https://github.com/Va3elina/moex-aggregator/pull/52\",\n    \"text\": \"GitHub feedback: human_feedback_general\\nPolarity: neutral\\nKind: pull_request_body\\nRepo: Va3elina/moex-aggregator\\nAuthor: Va3elina (User)\\nURL: https://github.com/Va3elina/moex-aggregator/pull/52\\nTitle: fix(funds): \u043a\u043d\u043e\u043f\u043a\u0430 \u0441\u0438\u0433\u043d\u0430\u043b\u0430 \u2014 \u0442\u043e\u043b\u044c\u043a\u043e \u043a\u043e\u043b\u043e\u043a\u043e\u043b\u044c\u0447\u0438\u043a (\u0431\u0435\u0437 \u0441\u043b\u043e\u0432\u0430 \u00ab\u0421\u0438\u0433\u043d\u0430\u043b\u00bb)\\nBody:\\n\u041f\u043e \u0444\u0438\u0434\u0431\u044d\u043a\u0443 \u0412\u0430\u0434\u0438\u043c\u0430: \u043a\u043d\u043e\u043f\u043a\u0430 fund-\u0441\u0438\u0433\u043d\u0430\u043b\u0430 \u0431\u044b\u043b\u0430 pill \u0441 \u0442\u0435\u043a\u0441\u0442\u043e\u043c, \u0430 \u0441\u043e\u0441\u0435\u0434\u043d\u0438\u0435 (\u0441\u043b\u043e\u0438/\\n\u043a\u0430\u043c\u0435\u0440\u0430) \u2014 \u043a\u0440\u0443\u0433\u043b\u044b\u0435 icon-only. \u0423\u0431\u0440\u0430\u043d \u0442\u0435\u043a\u0441\u0442 \u00ab\u0421\u0438\u0433\u043d\u0430\u043b\u00bb, \u043a\u043d\u043e\u043f\u043a\u0430 \u0441\u0442\u0430\u043b\u0430 \u043a\u0440\u0443\u0433\u043b\u043e\u0439 44px\\nicon-only \u0441 \u043a\u043e\u043b\u043e\u043a\u043e\u043b\u044c\u0447\u0438\u043a\u043e\u043c \u2014 \u0435\u0434\u0438\u043d\u044b\u0439 \u0432\u0438\u0434 \u0441 ChartActionsMenu.\\n\\ntsc -b \u0437\u0435\u043b\u0451\u043d\u044b\u0439.\\n\"\n  },\n  {\n    \"id\": \"github-feedback-comment-ecc86a0b55316e88\",\n    \"kind\": \"issue_comment\",\n    \"label\": \"human_feedback_general\",\n    \"polarity\": \"neutral\",\n    \"url\": \"https://github.com/Va3elina/moex-aggregator/pull/52#issuecomment-4721376060\",\n    \"text\": \"GitHub feedback: human_feedback_general\\nPolarity: neutral\\nKind: issue_comment\\nRepo: Va3elina/moex-aggregator\\nAuthor: Va3elina (User)\\nURL: https://github.com/Va3elina/moex-aggregator/pull/52#issuecomment-4721376060\\nTitle: \\nBody:\\n\u0421\u043b\u043e\u0436\u0435\u043d\u043e \u0432 #53 (\u0433\u0438\u0431\u043a\u0438\u0439 \u0442\u0430\u0440\u0433\u0435\u0442\u0438\u043d\u0433 \u0444\u043e\u043d\u0434-\u0441\u0438\u0433\u043d\u0430\u043b\u0430) \u2014 icon-only \u043a\u043d\u043e\u043f\u043a\u0430 \u0432\u043e\u0448\u043b\u0430 \u0442\u0443\u0434\u0430 \u0436\u0435. \u0412\u0435\u0442\u043a\u0443 \u0443\u0434\u0430\u043b\u044f\u044e.\"\n  }\n]\nChanged files:\n[]\nLinked chain ids:\n[\"evidence-chain-comment_to_commit-795e0719f6f7d2f4\", \"evidence-chain-comment_to_commit-6b44d22f38da1180\"]\nSource graph evidence:\nSource evidence repo graph summary\nRepo: Va3elina/moex-aggregator\nGraph label: source_backed_multi_signal_graph\nNodes: 14\nEdges: 22\nNode types: {\"cooccurrence_profile\": 1, \"github_repo_summary\": 1, \"helicopter_repo_view\": 2, \"repo\": 1, \"source_artifact\": 8, \"source_bundle\": 1}\nEdge types: {\"artifact_needs_claim_verification\": 5, \"artifact_supports_verification\": 3, \"repo_has_cooccurrence_profile\": 1, \"repo_has_github_evidence_summary\": 1, \"repo_has_schemas_helicopter_view\": 2, \"repo_has_source_artifact\": 8, \"repo_has_source_bundle\": 1, \"source_bundle_uses_cooccurrence_profile\": 1}\nArtifact families: {\"ci\": 3, \"docs\": 5}\nHelicopter views: {\"schemas\"\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/Va3elina/moex-aggregator", "source_id": "comment-chain-pattern-assumption_checks-efe30863e630c7cf", "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": "Va3elina/moex-aggregator", "source_dataset": "comment_chain_patterns/assumption_checks", "training_usage": "weak_supervision"}}}, {"ruleId": "foundry_assumption_check", "level": "warning", "message": {"text": "Foundry mined assumption checks: Va3elina/moex-aggregator"}, "properties": {"repobilityId": 434416, "scanner": "foundry_dataset", "fingerprint": "86391c9859ff321e5390a15ee00d3e62260882aa703df97ebe91a1d1c542aecb", "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": "Va3elina/moex-aggregator#50", "human_labels": ["agent_instruction_gap"], "issue_number": "50", "thread_label": "thread_has_human_issue_and_fix_context", "outcome_label": "claimed_resolved_unverified", "source_backed": true, "max_confidence": 0.92, "repo_full_name": "Va3elina/moex-aggregator", "training_usage": "gold_candidate", "confidence_tier": "high_confidence", "source_chain_id": "evidence-chain-issue_chain-2570d3c1bd382800", "helicopter_views": {"schemas": 2}, "artifact_families": {"ci": 3, "docs": 5}, "source_chain_kind": "issue_chain", "changed_file_count": 0, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {}, "linked_commit_count": 5, "helicopter_view_count": 2, "source_artifact_count": 8, "classification_reasons": ["source_graph_has_real_artifacts", "source_graph_has_verification_artifacts", "repo_has_isolated_helicopter_views", "link_quality_high_confidence"], "linked_ci_commit_count": 0, "verification_artifact_count": 3, "design_schema_api_artifact_count": 0}, "text": "Comment chain pattern product: assumption_checks\nRepo: Va3elina/moex-aggregator\nThread: Va3elina/moex-aggregator#50\nOutcome: claimed_resolved_unverified\nThread label: thread_has_human_issue_and_fix_context\nSource graph label: source_backed_multi_signal_graph\nReasons: source_graph_has_real_artifacts, source_graph_has_verification_artifacts, repo_has_isolated_helicopter_views, link_quality_high_confidence\nChain evidence:\nIssue/PR evidence chain: Va3elina/moex-aggregator#50\nRepo: Va3elina/moex-aggregator\nThread label: thread_has_human_issue_and_fix_context\nOutcome: claimed_resolved_unverified\nComment count: 1\nLinked commit count: 5\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 0\nLabels: {'agent_instruction_gap': 1}\nPolarities: {'bad': 1}\nChanged file labels: {}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-dfc8269a17bf5eac\",\n    \"kind\": \"pull_request_body\",\n    \"label\": \"agent_instruction_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/Va3elina/moex-aggregator/pull/50\",\n    \"text\": \"GitHub feedback: agent_instruction_gap\\nPolarity: bad\\nKind: pull_request_body\\nRepo: Va3elina/moex-aggregator\\nAuthor: Va3elina (User)\\nURL: https://github.com/Va3elina/moex-aggregator/pull/50\\nTitle: fix(alerts): \u043f\u0440\u043e\u0449\u0435 \u0442\u0435\u043a\u0441\u0442 \u0441\u0438\u0433\u043d\u0430\u043b\u0430 \u00b7 \u043a\u0430\u0431\u0438\u043d\u0435\u0442 \u0431\u0435\u0437 \u0441\u044b\u0440\u043e\u0433\u043e HTML \u00b7 \u043c\u043e\u0434\u0430\u043b\u043a\u0430-\u043f\u043e\u0440\u0442\u0430\u043b \u0448\u0438\u0440\u0435\\nBody:\\n\u041f\u0440\u0430\u0432\u043a\u0438 \u043f\u043e \u0444\u0438\u0434\u0431\u044d\u043a\u0443 \u0412\u0430\u0434\u0438\u043c\u0430 \u043d\u0430 \u043e\u0442\u0433\u0440\u0443\u0436\u0435\u043d\u043d\u044b\u0435 \u0430\u043b\u0435\u0440\u0442\u044b:\\n\\n1. \u0422\u0415\u041a\u0421\u0422 \u0441\u0438\u0433\u043d\u0430\u043b\u0430 (signals/alerts_run.py format_msg) \u2014 \u043f\u0440\u043e\u0449\u0435: \u0413\u041b\u0410\u0412\u041d\u041e\u0415 = \u043d\u0430\u0441\u043a\u043e\u043b\u044c\u043a\u043e\\n   \u0430\u043d\u043e\u043c\u0430\u043b\u044c\u043d\u043e (\u00d7N \u043a \u043e\u0431\u044b\u0447\u043d\u043e\u043c\u0443 \u0434\u043d\u0435\u0432\u043d\u043e\u043c\u0443 \u0448\u0430\u0433\u0443) + \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 (\u0432\u044b\u0440\u043e\u0441/\u0443\u043f\u0430\u043b). \u0423\u0431\u0440\u0430\u043b \u0438\u0437\\n   \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f \u0447\u0438\u0441\u043b\u043e \u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442\u043e\u0432 (\u00ab\u043a \u0447\u0435\u043c\u0443 \u0442\u0443\u0442\u00bb) \u0438 \u043c\u0435\u0442\u043e\u0434\u043e\u043b\u043e\u0433\u0438\u044e \u00ab\u0437\u0430 14 \u0434\u043d\u0435\u0439\u00bb. \u041a\u043e\u043b\u043e\u043a\u043e\u043b\\n   \u0443\u0436\u0435 \u0443\u0431\u0440\u0430\u043d \u0432 #44 (\u043f\u043b\u0435\u0439\u0441\u0445\u043e\u043b\u0434\u0435\u0440 \u00ab\u0421\u0418\u0413\u041d\u0410\u041b \u0424\u0420\u0415\u0419\u041c\u00bb \u2014 \u0437\u0430\u043c\u0435\u043d\u0438\u0442\u044c \u043d\u0430 \u0444\u0438\u0440\u043c\u0435\u043d\u043d\u044b\u0439 \u043f\u043e\u0437\u0436\u0435).\\n   \u041f\u0440\u0438\u043c\u0435\u0440\u044b: \u00ab\u041f\u043e\u0437\u0438\u0446\u0438\u0438 \u0440\u0435\u0437\u043a\u043e \u0432\u044b\u0440\u043e\u0441\u043b\u0438 \u2014 \u0432 10.6\u00d7 \u0440\u0435\u0437\u0447\u0435 \u043e\u0431\u044b\u0447\u043d\u043e\u0433\u043e (\u043f\u043e\u0440\u043e\u0433 5\u00d7)\u00bb;\\n   \u00ab\u042e\u0440\u043b\u0438\u0446\u0430 \u0440\u0435\u0437\u043a\u043e \u043d\u0430\u0440\u0430\u0441\u0442\u0438\u043b\u0438 \u043f\u043e\u0437\u0438\u0446\u0438\u044e \u2014 \u0432 4.2\u00d7 \u0440\u0435\u0437\u0447\u0435 \u043e\u0431\u044b\u0447\u043d\u043e\u0433\u043e (\u043f\u043e\u0440\u043e\u0433 3\u00d7)\u00bb.\\n\\n2. \u041a\u0410\u0411\u0418\u041d\u0415\u0422 (AlertFiresList) \u2014 message_text \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u043b\u0441\u044f \u043a\u0430\u043a \u0421\u042b\u0420\u041e\u0419 HTML\\n   (\u00ab<b>\u2026</b>\u00bb, \u043c\u0451\u0440\u0442\u0432\u0430\u044f <a href> \u00ab\u043e\u0442\u043a\u0440\u044b\u0442\u044c \u0433\u0440\u0430\u0444\u0438\u043a\u00bb). \u0414\u043e\u0431\u0430\u0432\u043b\u0435\u043d cleanMessage:\\n   \u0443\u0431\u0438\u0440\u0430\u0435\u0442 \u0441\u0441\u044b\u043b\u043a\u0443, \u0441\u043d\u0438\u043c\u0430\u0435\u0442 \u0442\u0435\u0433\u0438, \u0434\u0435\u043a\u043e\u0434\u0438\u0440\u0443\u0435\u0442 entities; whiteSpace:pre-line.\\n   + \u0444\u0438\u043a\u0441 \u043e\u043f\u0435\u0447\u0430\u0442\u043a\u0438 fmt\u0424ired\u2192fmtFired.\\n\\n3. \u041c\u041e\u0414\u0410\u041b\u041a\u0410 \u0430\u043b\u0435\u0440\u0442\u0430 (CreateAlertModal) \u2014 \u0432\u0435\u0440\u0445\u043d\u0438\u0439 \u043a\u0440\u0430\u0439 \u043f\u0440\u044f\u0442\u0430\u043b\u0441\u044f \u043f\u043e\u0434 sticky-\u0448\u0430\u043f\u043a\u043e\u0439\\n   (z-50): \u043e\u0432\u0435\u0440\u043b\u0435\u0439 z-9999 \u043f\u0440\u043e\u0432\u0430\u043b\u0438\u0432\u0430\u043b\u0441\u044f \u0438\u0437-\u0437\u0430 stacking-\u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0430\"\n  }\n]\nChanged files:\n[]\nLinked chain ids:\n[\"evidence-chain-comment_to_commit-a33091edb9d5a6b2\"]\nSource graph evidence:\nSource evidence repo graph summary\nRepo: Va3elina/moex-aggregator\nGraph label: source_backed_multi_signal_graph\nNodes: 14\nEdges: 22\nNode types: {\"cooccurrence_profile\": 1, \"github_repo_summary\": 1, \"helicopter_repo_view\": 2, \"repo\": 1, \"source_artifact\": 8, \"source_bundle\": 1}\nEdge types: {\"artifact_needs_claim_verification\": 5, \"artifact_supports_verification\": 3, \"repo_has_cooccurrence_profile\": 1, \"repo_has_github_evidence_summary\": 1, \"repo_has_schemas_helicopter_view\": 2, \"repo_has_source_artifact\": 8, \"repo_has_source_bundle\": 1, \"source_bundle_uses_cooccurrence_profile\": 1}\nArt\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/Va3elina/moex-aggregator", "source_id": "comment-chain-pattern-assumption_checks-6332c041e4834b40", "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": "Va3elina/moex-aggregator", "source_dataset": "comment_chain_patterns/assumption_checks", "training_usage": "gold_candidate"}}}, {"ruleId": "foundry_assumption_check", "level": "warning", "message": {"text": "Foundry mined assumption checks: Va3elina/moex-aggregator"}, "properties": {"repobilityId": 434415, "scanner": "foundry_dataset", "fingerprint": "f9ada275589d0782b3e8a3fbd1d2bd60f7f695b54a234dab125378b0b239d82f", "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": "Va3elina/moex-aggregator#5", "human_labels": ["agent_instruction_gap"], "issue_number": "5", "thread_label": "thread_has_human_issue_and_fix_context", "outcome_label": "claimed_resolved_unverified", "source_backed": true, "max_confidence": 0.92, "repo_full_name": "Va3elina/moex-aggregator", "training_usage": "gold_candidate", "confidence_tier": "high_confidence", "source_chain_id": "evidence-chain-issue_chain-50b66a58a193c69c", "helicopter_views": {"schemas": 2}, "artifact_families": {"ci": 3, "docs": 5}, "source_chain_kind": "issue_chain", "changed_file_count": 0, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {}, "linked_commit_count": 5, "helicopter_view_count": 2, "source_artifact_count": 8, "classification_reasons": ["source_graph_has_real_artifacts", "source_graph_has_verification_artifacts", "repo_has_isolated_helicopter_views", "link_quality_high_confidence"], "linked_ci_commit_count": 0, "verification_artifact_count": 3, "design_schema_api_artifact_count": 0}, "text": "Comment chain pattern product: assumption_checks\nRepo: Va3elina/moex-aggregator\nThread: Va3elina/moex-aggregator#5\nOutcome: claimed_resolved_unverified\nThread label: thread_has_human_issue_and_fix_context\nSource graph label: source_backed_multi_signal_graph\nReasons: source_graph_has_real_artifacts, source_graph_has_verification_artifacts, repo_has_isolated_helicopter_views, link_quality_high_confidence\nChain evidence:\nIssue/PR evidence chain: Va3elina/moex-aggregator#5\nRepo: Va3elina/moex-aggregator\nThread label: thread_has_human_issue_and_fix_context\nOutcome: claimed_resolved_unverified\nComment count: 1\nLinked commit count: 5\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 0\nLabels: {'agent_instruction_gap': 1}\nPolarities: {'bad': 1}\nChanged file labels: {}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-d9a762b5d672c202\",\n    \"kind\": \"pull_request_body\",\n    \"label\": \"agent_instruction_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/Va3elina/moex-aggregator/pull/5\",\n    \"text\": \"GitHub feedback: agent_instruction_gap\\nPolarity: bad\\nKind: pull_request_body\\nRepo: Va3elina/moex-aggregator\\nAuthor: Va3elina (User)\\nURL: https://github.com/Va3elina/moex-aggregator/pull/5\\nTitle: feat(charts): \u043a\u0440\u0443\u0433\u043b\u044b\u0435 \u0434\u0435\u043b\u0435\u043d\u0438\u044f \u0432\u0435\u0440\u0442\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u0445 \u043e\u0441\u0435\u0439 (nice ticks)\\nBody:\\n\u0414\u0435\u043b\u0435\u043d\u0438\u044f Y-\u043e\u0441\u0435\u0439 \u0432\u0441\u0442\u0430\u044e\u0442 \u043d\u0430 \u043a\u0440\u0443\u0433\u043b\u044b\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f (\u043a\u0430\u043a \u0441\u0435\u0442\u043a\u0430 TradingView) \u0432\u043c\u0435\u0441\u0442\u043e\\n\u0440\u0430\u0432\u043d\u043e\u0433\u043e \u0434\u0435\u043b\u0435\u043d\u0438\u044f \u0434\u0438\u0430\u043f\u0430\u0437\u043e\u043d\u0430. \u0414\u043e\u043c\u0435\u043d/\u043c\u0430\u0441\u0448\u0442\u0430\u0431 \u041d\u0415 \u043c\u0435\u043d\u044f\u0435\u0442\u0441\u044f \u2014 \u043b\u0438\u043d\u0438\u044f \u0438 \u043f\u0438\u043b\u044e\u043b\u044f\\n\u043e\u0441\u0442\u0430\u044e\u0442\u0441\u044f \u043d\u0430 \u043c\u0435\u0441\u0442\u0435, \u043f\u0438\u043b\u044e\u043b\u044f \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u0435 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435. \u0411\u0435\u0437\\n\u0441\u0443\u0444\u0444\u0438\u043a\u0441\u043e\u0432 K/M. \u041e\u0431\u0449\u0438\u0439 \u0445\u0435\u043b\u043f\u0435\u0440 utils/niceTicks.ts (SimpleChart + MobileChart),\\nopt-in \u043f\u0440\u043e\u043f\u0430\u043c\u0438 (\u0434\u0435\u0444\u043e\u043b\u0442 off \u2014 \u043f\u0440\u043e\u0447\u0438\u0435 \u0433\u0440\u0430\u0444\u0438\u043a\u0438 \u043d\u0435 \u0437\u0430\u0434\u0435\u0442\u044b).\\n\\n\u0412\u043a\u043b\u044e\u0447\u0435\u043d\u043e: \u041e\u0418 (\u043e\u0431\u0435 \u043e\u0441\u0438), \u0411\u0430\u0444\u0444\u0435\u0442\u0442 (\u043e\u0441\u044c \u043a\u0430\u043f\u0438\u0442\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438; % \u043d\u0435 \u0442\u0440\u043e\u043d\u0443\u0442, \u00ab\u0442\u0440\u043b\u043d \u20bd\u00bb\\n\u0443\u0431\u0440\u0430\u043d\u043e \u0441 \u043e\u0441\u0438), \u0414\u0435\u043d\u044c\u0433\u0438 \u0432 \u0444\u043e\u043d\u0434\u0430\u0445 \u0421\u0427\u0410 (\u043e\u0431\u0435 \u043e\u0441\u0438) \u2014 \u0434\u0435\u0441\u043a\u0442\u043e\u043f, embed \u0438 \u043c\u043e\u0431\u0438\u043b\u043a\u0438.\\n\u041f\u043e\u043a\u0443\u043f\u043a\u0438 \u0444\u043e\u043d\u0434\u043e\u0432 \u043d\u0435 \u0432\u0445\u043e\u0434\u044f\u0442: \u0438\u0445 \u0431\u0430\u0440\u044b \u0443\u0436\u0435 \u0441\u043e\u043a\u0440\u0430\u0449\u0435\u043d\u044b (formatRubShort), \u0442\u0438\u043a\u043e\u0432\u043e\u0439\\n\u043e\u0441\u0438 \u0442\u0430\u043c \u043d\u0435\u0442.\\n\\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>\\n\"\n  }\n]\nChanged files:\n[]\nLinked chain ids:\n[\"evidence-chain-comment_to_commit-4c9211bd0ded0385\"]\nSource graph evidence:\nSource evidence repo graph summary\nRepo: Va3elina/moex-aggregator\nGraph label: source_backed_multi_signal_graph\nNodes: 14\nEdges: 22\nNode types: {\"cooccurrence_profile\": 1, \"github_repo_summary\": 1, \"helicopter_repo_view\": 2, \"repo\": 1, \"source_artifact\": 8, \"source_bundle\": 1}\nEdge types: {\"artifact_needs_claim_verification\": 5, \"artifact_supports_verification\": 3, \"repo_has_cooccurrence_profile\": 1, \"repo_has_github_evidence_summary\": 1, \"repo_has_schemas_helicopter_view\": 2, \"repo_has_source_artifact\": 8, \"repo_has_source_bundle\": 1, \"source_bundle_uses_cooccurrence_profile\": 1}\nArtifact families: {\"ci\": 3, \"docs\": 5}\nHelicopter views: {\"schemas\": 2}\nBundle labels: {\"source_backed_fake_real_verification_bundle\": 1}\nCo-occurrence labels: {\"fake_real_data_plus_verification_gap\": 1}", "source": "foundry_mined_dataset", "repo_url": "https://github.com/Va3elina/moex-aggregator", "source_id": "comment-chain-pattern-assumption_checks-6f3e3aa39b91a1c9", "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": "Va3elina/moex-aggregator", "source_dataset": "comment_chain_patterns/assumption_checks", "training_usage": "gold_candidate"}}}, {"ruleId": "foundry_assumption_check", "level": "warning", "message": {"text": "Foundry mined assumption checks: Va3elina/moex-aggregator"}, "properties": {"repobilityId": 434414, "scanner": "foundry_dataset", "fingerprint": "6d207dd72da7b3c23fb45984d21275e403fc8d774b56e035d309e741bedd1cab", "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": "Va3elina/moex-aggregator#45", "human_labels": ["agent_instruction_gap"], "issue_number": "45", "thread_label": "thread_has_human_issue_and_fix_context", "outcome_label": "claimed_resolved_unverified", "source_backed": true, "max_confidence": 0.92, "repo_full_name": "Va3elina/moex-aggregator", "training_usage": "gold_candidate", "confidence_tier": "high_confidence", "source_chain_id": "evidence-chain-issue_chain-542160fccb6194bf", "helicopter_views": {"schemas": 2}, "artifact_families": {"ci": 3, "docs": 5}, "source_chain_kind": "issue_chain", "changed_file_count": 0, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {}, "linked_commit_count": 5, "helicopter_view_count": 2, "source_artifact_count": 8, "classification_reasons": ["source_graph_has_real_artifacts", "source_graph_has_verification_artifacts", "repo_has_isolated_helicopter_views", "link_quality_high_confidence"], "linked_ci_commit_count": 0, "verification_artifact_count": 3, "design_schema_api_artifact_count": 0}, "text": "Comment chain pattern product: assumption_checks\nRepo: Va3elina/moex-aggregator\nThread: Va3elina/moex-aggregator#45\nOutcome: claimed_resolved_unverified\nThread label: thread_has_human_issue_and_fix_context\nSource graph label: source_backed_multi_signal_graph\nReasons: source_graph_has_real_artifacts, source_graph_has_verification_artifacts, repo_has_isolated_helicopter_views, link_quality_high_confidence\nChain evidence:\nIssue/PR evidence chain: Va3elina/moex-aggregator#45\nRepo: Va3elina/moex-aggregator\nThread label: thread_has_human_issue_and_fix_context\nOutcome: claimed_resolved_unverified\nComment count: 1\nLinked commit count: 5\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 0\nLabels: {'agent_instruction_gap': 1}\nPolarities: {'bad': 1}\nChanged file labels: {}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-a86ce221218d3be5\",\n    \"kind\": \"pull_request_body\",\n    \"label\": \"agent_instruction_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/Va3elina/moex-aggregator/pull/45\",\n    \"text\": \"GitHub feedback: agent_instruction_gap\\nPolarity: bad\\nKind: pull_request_body\\nRepo: Va3elina/moex-aggregator\\nAuthor: Va3elina (User)\\nURL: https://github.com/Va3elina/moex-aggregator/pull/45\\nTitle: fix(admin-stats): \u043f\u043e\u0447\u0438\u043d\u0435\u043d\u044b \u0441\u043b\u043e\u043c\u0430\u043d\u043d\u044b\u0435 \u043c\u0435\u0442\u0440\u0438\u043a\u0438 + \u0443\u0434\u0430\u043b\u0451\u043d \u043c\u0451\u0440\u0442\u0432\u044b\u0439 \u043a\u043e\u0434\\nBody:\\n\u0410\u0443\u0434\u0438\u0442 \u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0434\u0438\u043b (\u0441\u0432\u0435\u0440\u0435\u043d\u043e \u0441 \u043f\u0440\u043e\u0434\u043e\u043c) \u043f\u043e\u043b\u043e\u043c\u043a\u0438 \u0432 \u0430\u0434\u043c\u0438\u043d-\u0430\u043d\u0430\u043b\u0438\u0442\u0438\u043a\u0435. \u0420\u0435\u0448\u0435\u043d\u0438\u0435 \u0412\u0430\u0434\u0438\u043c\u0430:\\n\u043f\u043e\u0447\u0438\u043d\u0438\u0442\u044c + \u0443\u0434\u0430\u043b\u0438\u0442\u044c \u043c\u0451\u0440\u0442\u0432\u043e\u0435.\\n\\n\u041f\u041e\u0427\u0418\u041d\u0415\u041d\u041e:\\n- \u00ab\u0421\u0440\u0435\u0434\u043d\u0435\u0435 \u0432\u0440\u0435\u043c\u044f \u0441\u0435\u0441\u0441\u0438\u0438\u00bb \u0437\u0430\u0432\u044b\u0448\u0430\u043b\u043e\u0441\u044c heartbeat'\u0430\u043c\u0438 \u0432 \u0444\u043e\u043d\u043e\u0432\u044b\u0445 \u0432\u043a\u043b\u0430\u0434\u043a\u0430\u0445\\n  (MAX-MIN client_ts \u2192 \u043c\u043d\u043e\u0433\u043e\u0447\u0430\u0441\u043e\u0432\u044b\u0435 \u00ab\u0441\u0435\u0441\u0441\u0438\u0438\u00bb). \u041f\u0435\u0440\u0435\u043f\u0438\u0441\u0430\u043d\u043e \u043d\u0430 \u0441\u0443\u043c\u043c\u0443 gap'\u043e\u0432\\n  \u043c\u0435\u0436\u0434\u0443 \u0441\u043e\u0431\u044b\u0442\u0438\u044f\u043c\u0438 \u0447\u0435\u0440\u0435\u0437 LAG(), \u043a\u0430\u0436\u0434\u044b\u0439 gap \u043a\u0430\u043f\u043d\u0443\u0442 \u043d\u0430 300\u0441 (GA-\u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442).\\n  \u041f\u0440\u043e\u0434 7\u0434: 8351\u0441 (2\u044719\u043c) \u2192 1582\u0441 (~26\u043c\u0438\u043d). \u0417\u0435\u0440\u043a\u0430\u043b\u043e \u0432 user_detail \u0442\u043e\u0436\u0435.\\n- \u0417\u043d\u0430\u043c\u0435\u043d\u0430\u0442\u0435\u043b\u044c \u0441\u0435\u0441\u0441\u0438\u0439 \u0440\u0430\u0441\u0441\u043e\u0433\u043b\u0430\u0441\u043e\u0432\u0430\u043d (summary.sessions=157 vs avg-\u043d\u0430\u0431\u043e\u0440=125\\n  \u0438\u0437-\u0437\u0430 HAVING dur>0). \u041e\u0431\u0449\u0438\u0439 CTE _session_durations_cte \u2192 \u043e\u0434\u043d\u043e \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e.\\n- \u00abDAU\u00bb \u2014 \u043d\u0430 \u0434\u0435\u043b\u0435 \u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u0435 \u0437\u0430 \u0432\u0435\u0441\u044c \u043f\u0435\u0440\u0438\u043e\u0434. \u0427\u0435\u0441\u0442\u043d\u044b\u0439 \u044f\u0440\u043b\u044b\u043a \u0431\u0435\u0437 \u0441\u043c\u0435\u043d\u044b \u043b\u043e\u0433\u0438\u043a\u0438:\\n  \u043f\u043e\u043b\u0435 dau\u2192uniques, \u043a\u0430\u0440\u0442\u043e\u0447\u043a\u0430 \u00abDAU\u00bb\u2192\u00ab\u0423\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u0435 \u0437\u0430 \u043f\u0435\u0440\u0438\u043e\u0434\u00bb, \u043b\u0438\u043d\u0438\u044f\u2192\u00ab\u0423\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u0435/\u0434\u0435\u043d\u044c\u00bb.\\n- \u0422\u043e\u043f \u044d\u043a\u0441\u043f\u043e\u0440\u0442\u043e\u0432 \u0434\u0432\u043e\u0438\u043b\u0441\u044f (indicator oi/open_interest, funds/fund/funds_money).\\n  EXPORT_INDICATOR_ALIASES + _export_indicator_canon_sql() (CASE-\u043d\u043e\u0440\u043c\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f),\\n  \u043f\u0440\u0438\u043c\u0435\u043d\u0451\u043d \u0432 /stats \u0438 user_detail. \u0427\u0438\u043d\u0438\u0442 \u0438 \u0438\u0441\u0442\u043e\u0440\u0438\u044e.\\n\\n\u0423\u0414\u0410\u041b\u0415\u041d\u041e \"\n  }\n]\nChanged files:\n[]\nLinked chain ids:\n[\"evidence-chain-comment_to_commit-9176b4e98a86cb40\"]\nSource graph evidence:\nSource evidence repo graph summary\nRepo: Va3elina/moex-aggregator\nGraph label: source_backed_multi_signal_graph\nNodes: 14\nEdges: 22\nNode types: {\"cooccurrence_profile\": 1, \"github_repo_summary\": 1, \"helicopter_repo_view\": 2, \"repo\": 1, \"source_artifact\": 8, \"source_bundle\": 1}\nEdge types: {\"artifact_needs_claim_verification\": 5, \"artifact_supports_verification\": 3, \"repo_has_cooccurrence_profile\": 1, \"repo_has_github_evidence_summary\": 1, \"repo_has_schemas_helicopter_view\": 2, \"repo_has_source_artifact\": 8, \"repo_has_source_bundle\": 1, \"source_bundle_uses_cooccurrence_profile\": 1}\nAr\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/Va3elina/moex-aggregator", "source_id": "comment-chain-pattern-assumption_checks-0694e89c7d2d3cc9", "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": "Va3elina/moex-aggregator", "source_dataset": "comment_chain_patterns/assumption_checks", "training_usage": "gold_candidate"}}}, {"ruleId": "foundry_assumption_check", "level": "warning", "message": {"text": "Foundry mined assumption checks: Va3elina/moex-aggregator"}, "properties": {"repobilityId": 434413, "scanner": "foundry_dataset", "fingerprint": "c6c2508eb7a8eec7a640ff365cc39649a8a7b91f732ce39f3435509cd1f5aa3d", "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": "Va3elina/moex-aggregator#44", "human_labels": ["agent_instruction_gap"], "issue_number": "44", "thread_label": "thread_has_human_issue_and_fix_context", "outcome_label": "claimed_resolved_unverified", "source_backed": true, "max_confidence": 0.92, "repo_full_name": "Va3elina/moex-aggregator", "training_usage": "gold_candidate", "confidence_tier": "high_confidence", "source_chain_id": "evidence-chain-issue_chain-d541f392f9b0d576", "helicopter_views": {"schemas": 2}, "artifact_families": {"ci": 3, "docs": 5}, "source_chain_kind": "issue_chain", "changed_file_count": 0, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {}, "linked_commit_count": 5, "helicopter_view_count": 2, "source_artifact_count": 8, "classification_reasons": ["source_graph_has_real_artifacts", "source_graph_has_verification_artifacts", "repo_has_isolated_helicopter_views", "link_quality_high_confidence"], "linked_ci_commit_count": 0, "verification_artifact_count": 3, "design_schema_api_artifact_count": 0}, "text": "Comment chain pattern product: assumption_checks\nRepo: Va3elina/moex-aggregator\nThread: Va3elina/moex-aggregator#44\nOutcome: claimed_resolved_unverified\nThread label: thread_has_human_issue_and_fix_context\nSource graph label: source_backed_multi_signal_graph\nReasons: source_graph_has_real_artifacts, source_graph_has_verification_artifacts, repo_has_isolated_helicopter_views, link_quality_high_confidence\nChain evidence:\nIssue/PR evidence chain: Va3elina/moex-aggregator#44\nRepo: Va3elina/moex-aggregator\nThread label: thread_has_human_issue_and_fix_context\nOutcome: claimed_resolved_unverified\nComment count: 1\nLinked commit count: 5\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 0\nLabels: {'agent_instruction_gap': 1}\nPolarities: {'bad': 1}\nChanged file labels: {}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-e93c83754d5288f1\",\n    \"kind\": \"pull_request_body\",\n    \"label\": \"agent_instruction_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/Va3elina/moex-aggregator/pull/44\",\n    \"text\": \"GitHub feedback: agent_instruction_gap\\nPolarity: bad\\nKind: pull_request_body\\nRepo: Va3elina/moex-aggregator\\nAuthor: Va3elina (User)\\nURL: https://github.com/Va3elina/moex-aggregator/pull/44\\nTitle: feat(signals): \u043f\u0435\u0440\u0435\u0440\u0430\u0431\u043e\u0442\u0430\u043d \u0442\u0435\u043a\u0441\u0442 \u043b\u0438\u0447\u043d\u044b\u0445 OI-\u0430\u043b\u0435\u0440\u0442\u043e\u0432 \u2014 \u043f\u043e\u043d\u044f\u0442\u043d\u0435\u0435, \u0431\u0435\u0437 \u0441\u0442\u0438\u043a\u0435\u0440\u043e\u0432\\nBody:\\n\u041b\u0438\u0447\u043d\u044b\u0435 \u0430\u043b\u0435\u0440\u0442\u044b (signals/alerts_run.py format_msg, cron \u043a\u0430\u0436\u0434\u044b\u0435 5 \u043c\u0438\u043d \u2014 \u0442\u043e, \u0447\u0442\u043e\\n\u044e\u0437\u0435\u0440\u044b \u0440\u0435\u0430\u043b\u044c\u043d\u043e \u0432\u0438\u0434\u044f\u0442; \u043a\u0430\u043d\u0430\u043b @frametoolsignal \u043e\u0441\u0442\u0430\u0451\u0442\u0441\u044f \u0432\u044b\u043a\u043b \u043f\u043e \u0440\u0435\u0448\u0435\u043d\u0438\u044e \u0412\u0430\u0434\u0438\u043c\u0430).\\n\\n- \u0423\u0431\u0440\u0430\u043d\u044b \u0432\u0441\u0435 \u044d\u043c\u043e\u0434\u0437\u0438/\u0441\u0442\u0438\u043a\u0435\u0440\u044b/\u0445\u044d\u0448\u0442\u0435\u0433\u0438; \u043d\u0435\u0439\u0442\u0440\u0430\u043b\u044c\u043d\u044b\u0439 \u043f\u043b\u0435\u0439\u0441\u0445\u043e\u043b\u0434\u0435\u0440-\u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a\\n  \u00ab\u0421\u0418\u0413\u041d\u0410\u041b \u0424\u0420\u0415\u0419\u041c\u00bb (_MARK) \u2014 \u0444\u0438\u0440\u043c\u0435\u043d\u043d\u044b\u0439 \u0434\u043e\u0431\u0430\u0432\u0438\u043c \u043f\u043e\u0437\u0436\u0435.\\n- \u041f\u043e\u043d\u044f\u0442\u043d\u0435\u0435, \u043d\u0435 \u043f\u0440\u043e\u0449\u0435: \u0447\u0451\u0442\u043a\u043e \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0430\u043d\u043e\u043c\u0430\u043b\u0438\u044f \u0438 \u0430\u043a\u0442\u0438\u0432; \u0413\u041b\u0410\u0412\u041d\u0410\u042f \u0446\u0438\u0444\u0440\u0430 \u2014\\n  \u041f\u041e\u0417\u0418\u0426\u0418\u0418 (\u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442\u044b, \u0394 net), \u0443\u0447\u0430\u0441\u0442\u043d\u0438\u043a\u0438 \u2014 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u043e\u043c.\\n- \u0421\u0438\u043b\u0430 \u043f\u043e\u0434\u0430\u0451\u0442\u0441\u044f \u043a\u0440\u0430\u0442\u043d\u043e\u0441\u0442\u044c\u044e \u00ab\u0432 \u00d7N \u0440\u0430\u0437 \u0441\u0438\u043b\u044c\u043d\u0435\u0435 \u0441\u0440\u0435\u0434\u043d\u0435\u0433\u043e \u0434\u043d\u0435\u0432\u043d\u043e\u0433\u043e \u0448\u0430\u0433\u0430 \u0437\u0430 14 \u0434\u043d\u0435\u0439\u00bb\\n  (ATR-\u043a\u0440\u0430\u0442\u043d\u043e\u0441\u0442\u044c, \u043a\u0430\u043a oi_move), \u041d\u0415 z-score/\u03c3 (\u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u0412\u0430\u0434\u0438\u043c\u0430).\\n- \u0412\u0435\u0442\u043a\u0430 oi_participants \u043f\u0435\u0440\u0435\u043f\u0438\u0441\u0430\u043d\u0430 \u043a\u0430\u043a \u00ab\u041f\u0440\u0438\u0442\u043e\u043a/\u041e\u0442\u0442\u043e\u043a <\u0441\u0443\u0431\u044a\u0435\u043a\u0442>\u00bb (\u043d\u0430\u0440\u0440\u0430\u0442\u0438\u0432\\n  \u0440\u043e\u0437\u043d\u0438\u0446\u044b) \u0431\u0435\u0437 \u0436\u0430\u0440\u0433\u043e\u043d\u0430. clgroup=ALL \u2014 \u043d\u0435\u0439\u0442\u0440\u0430\u043b\u044c\u043d\u043e, \u0431\u0435\u0437 \u043f\u0440\u0438\u043f\u0438\u0441\u044b\u0432\u0430\u043d\u0438\u044f \u0441\u0442\u043e\u0440\u043e\u043d\u044b.\\n- Per-leg \u0394 (\u043a\u0430\u043a\u0430\u044f \u043d\u043e\u0433\u0430 \u0434\u0432\u0438\u043d\u0443\u043b\u0430\u0441\u044c) \u0430\u043a\u043a\u0443\u0440\u0430\u0442\u043d\u043e \u043f\u0440\u043e\u0431\u0440\u043e\u0448\u0435\u043d: db.get_position_series\\n  +pos_long/pos_short \u0432 \u0445\u0432\u043e\u0441\u0442 \u0442\u0443\u043f\u043b\u0430 (0-2 \u043d\u0435 \u0442\u0440\u043e\u043d\u0443\u0442\u044b \u2014 \u043e\u0431\u0430 \u0447\u0438\u0442\u0430\u0442\u0435\u043b\u044f \u0438\u043d\u0434\u0435\u043a\u0441\u0438\u0440\u0443\u044e\u0442\u0441\u044f\\n  \u043f\u043e \u043d\u0438\u043c); oi.compute_position_atr \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 legs 6-\u043c \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\"\n  }\n]\nChanged files:\n[]\nLinked chain ids:\n[\"evidence-chain-comment_to_commit-d88adb696b81f2ae\"]\nSource graph evidence:\nSource evidence repo graph summary\nRepo: Va3elina/moex-aggregator\nGraph label: source_backed_multi_signal_graph\nNodes: 14\nEdges: 22\nNode types: {\"cooccurrence_profile\": 1, \"github_repo_summary\": 1, \"helicopter_repo_view\": 2, \"repo\": 1, \"source_artifact\": 8, \"source_bundle\": 1}\nEdge types: {\"artifact_needs_claim_verification\": 5, \"artifact_supports_verification\": 3, \"repo_has_cooccurrence_profile\": 1, \"repo_has_github_evidence_summary\": 1, \"repo_has_schemas_helicopter_view\": 2, \"repo_has_source_artifact\": 8, \"repo_has_source_bundle\": 1, \"source_bundle_uses_cooccurrence_profile\": 1}\nArtif\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/Va3elina/moex-aggregator", "source_id": "comment-chain-pattern-assumption_checks-d340d41193f36f0d", "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": "Va3elina/moex-aggregator", "source_dataset": "comment_chain_patterns/assumption_checks", "training_usage": "gold_candidate"}}}, {"ruleId": "foundry_assumption_check", "level": "warning", "message": {"text": "Foundry mined assumption checks: Va3elina/moex-aggregator"}, "properties": {"repobilityId": 434412, "scanner": "foundry_dataset", "fingerprint": "882928f6c724cc54b4a95561a80c973cca52457532904d98b56dabf14f18fa0a", "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": "Va3elina/moex-aggregator#43", "human_labels": ["agent_instruction_gap"], "issue_number": "43", "thread_label": "thread_has_human_issue_and_fix_context", "outcome_label": "claimed_resolved_unverified", "source_backed": true, "max_confidence": 0.92, "repo_full_name": "Va3elina/moex-aggregator", "training_usage": "gold_candidate", "confidence_tier": "high_confidence", "source_chain_id": "evidence-chain-issue_chain-306b699836eb106a", "helicopter_views": {"schemas": 2}, "artifact_families": {"ci": 3, "docs": 5}, "source_chain_kind": "issue_chain", "changed_file_count": 0, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {}, "linked_commit_count": 5, "helicopter_view_count": 2, "source_artifact_count": 8, "classification_reasons": ["source_graph_has_real_artifacts", "source_graph_has_verification_artifacts", "repo_has_isolated_helicopter_views", "link_quality_high_confidence"], "linked_ci_commit_count": 0, "verification_artifact_count": 3, "design_schema_api_artifact_count": 0}, "text": "Comment chain pattern product: assumption_checks\nRepo: Va3elina/moex-aggregator\nThread: Va3elina/moex-aggregator#43\nOutcome: claimed_resolved_unverified\nThread label: thread_has_human_issue_and_fix_context\nSource graph label: source_backed_multi_signal_graph\nReasons: source_graph_has_real_artifacts, source_graph_has_verification_artifacts, repo_has_isolated_helicopter_views, link_quality_high_confidence\nChain evidence:\nIssue/PR evidence chain: Va3elina/moex-aggregator#43\nRepo: Va3elina/moex-aggregator\nThread label: thread_has_human_issue_and_fix_context\nOutcome: claimed_resolved_unverified\nComment count: 1\nLinked commit count: 5\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 0\nLabels: {'agent_instruction_gap': 1}\nPolarities: {'bad': 1}\nChanged file labels: {}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-489834e28bbc4e34\",\n    \"kind\": \"pull_request_body\",\n    \"label\": \"agent_instruction_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/Va3elina/moex-aggregator/pull/43\",\n    \"text\": \"GitHub feedback: agent_instruction_gap\\nPolarity: bad\\nKind: pull_request_body\\nRepo: Va3elina/moex-aggregator\\nAuthor: Va3elina (User)\\nURL: https://github.com/Va3elina/moex-aggregator/pull/43\\nTitle: chore(pwa): \u0430\u0432\u0442\u043e-reload \u043f\u0440\u0438 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0438 SW \u2014 \u0434\u0435\u043f\u043b\u043e\u0438 \u0434\u043e\u0445\u043e\u0434\u044f\u0442 \u0431\u0435\u0437 \u0440\u0443\u0447\u043d\u043e\u0433\u043e \u0434\u0432\u043e\u0439\u043d\u043e\u0433\u043e \u0440\u0435\u0444\u0440\u0435\u0448\u0430\\nBody:\\n\u041f\u0440\u043e\u0431\u043b\u0435\u043c\u0430: sw.js \u0434\u0435\u043b\u0430\u0435\u0442 skipWaiting()+clients.claim() (\u043d\u043e\u0432\u044b\u0439 SW \u0441\u0440\u0430\u0437\u0443 \u0431\u0435\u0440\u0451\u0442\\n\u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435), \u043d\u043e \u0422\u0415\u041a\u0423\u0429\u0410\u042f \u043e\u0442\u043a\u0440\u044b\u0442\u0430\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430 \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0430\u0435\u0442 \u043a\u0440\u0443\u0442\u0438\u0442\u044c \u0421\u0422\u0410\u0420\u042b\u0419 JS-\u0431\u0430\u043d\u0434\u043b \u0434\u043e\\n\u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0439 \u043f\u0435\u0440\u0435\u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438, \u0430 \u0430\u0432\u0442\u043e-reload \u043d\u0435 \u0431\u044b\u043b\u043e. \u0418\u0442\u043e\u0433: \u043f\u043e\u0441\u043b\u0435 \u0434\u0435\u043f\u043b\u043e\u044f \u0444\u0438\u043a\u0441 \u043d\u0435 \u0432\u0438\u0434\u0435\u043d\\n\u0441 \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u0440\u0435\u0444\u0440\u0435\u0448\u0430 (\u00ab\u043d\u0435 \u043f\u043e\u043c\u0435\u043d\u044f\u043b\u043e\u0441\u044c\u00bb), \u043f\u043e\u043a\u0430 \u044e\u0437\u0435\u0440 \u043d\u0435 \u043f\u0435\u0440\u0435\u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442 \u0432\u0442\u043e\u0440\u043e\u0439 \u0440\u0430\u0437 \u0438\u043b\u0438 \u043d\u0435\\n\u0437\u0430\u043a\u0440\u043e\u0435\u0442-\u043e\u0442\u043a\u0440\u043e\u0435\u0442 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435. \u041e\u0441\u043e\u0431\u0435\u043d\u043d\u043e \u0431\u043e\u043b\u0435\u0437\u043d\u0435\u043d\u043d\u043e \u043d\u0430 \u043c\u043e\u0431\u0438\u043b\u043a\u0435/PWA.\\n\\n\u0424\u0438\u043a\u0441: \u0441\u043b\u0443\u0448\u0430\u0442\u0435\u043b\u044c controllerchange \u0432 index.html \u0434\u0435\u043b\u0430\u0435\u0442 window.location.reload()\\n\u041e\u0414\u0418\u041d \u0440\u0430\u0437, \u043a\u043e\u0433\u0434\u0430 \u043d\u043e\u0432\u044b\u0439 SW \u0431\u0435\u0440\u0451\u0442 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435. Guard'\u044b: swHadController (\u041d\u0415\\n\u043f\u0435\u0440\u0435\u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u043c \u043f\u0440\u0438 \u043f\u0435\u0440\u0432\u043e\u0439 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0435 \u2014 \u0431\u0430\u043d\u0434\u043b \u0443\u0436\u0435 \u0441\u0432\u0435\u0436\u0438\u0439) + swReloaded (\u0431\u0435\u0437\\n\u0437\u0430\u0446\u0438\u043a\u043b\u0438\u0432\u0430\u043d\u0438\u044f). \u041f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 read-only (\u043d\u0435\u0442 \u043d\u0435\u0441\u043e\u0445\u0440\u0430\u043d\u0451\u043d\u043d\u043e\u0433\u043e \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f) \u2192 reload\\n\u0431\u0435\u0437\u043e\u043f\u0430\u0441\u0435\u043d.\\n\\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>\\n\"\n  }\n]\nChanged files:\n[]\nLinked chain ids:\n[\"evidence-chain-comment_to_commit-976c5b5ac4065c77\"]\nSource graph evidence:\nSource evidence repo graph summary\nRepo: Va3elina/moex-aggregator\nGraph label: source_backed_multi_signal_graph\nNodes: 14\nEdges: 22\nNode types: {\"cooccurrence_profile\": 1, \"github_repo_summary\": 1, \"helicopter_repo_view\": 2, \"repo\": 1, \"source_artifact\": 8, \"source_bundle\": 1}\nEdge types: {\"artifact_needs_claim_verification\": 5, \"artifact_supports_verification\": 3, \"repo_has_cooccurrence_profile\": 1, \"repo_has_github_evidence_summary\": 1, \"repo_has_schemas_helicopter_view\": 2, \"repo_has_source_artifact\": 8, \"repo_has_source_bundle\": 1, \"source_bundle_uses_cooccurrence_profile\": 1}\nArtifact families: {\"ci\": 3, \"docs\": 5}\nHelicopter views: {\"schemas\": 2}\nBundle labels: {\"source_backed_fake_real_verification_bundle\": 1}\nCo-occurrence l\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/Va3elina/moex-aggregator", "source_id": "comment-chain-pattern-assumption_checks-ffcc537fb3920567", "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": "Va3elina/moex-aggregator", "source_dataset": "comment_chain_patterns/assumption_checks", "training_usage": "gold_candidate"}}}, {"ruleId": "foundry_assumption_check", "level": "warning", "message": {"text": "Foundry mined assumption checks: Va3elina/moex-aggregator"}, "properties": {"repobilityId": 434411, "scanner": "foundry_dataset", "fingerprint": "2a1d778de6f327b03e26424df45adaf661dafbbb46c666666badb8e0e5262ef1", "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": "Va3elina/moex-aggregator#42", "human_labels": ["api_integration_gap"], "issue_number": "42", "thread_label": "thread_has_human_issue_and_fix_context", "outcome_label": "claimed_resolved_unverified", "source_backed": true, "max_confidence": 0.92, "repo_full_name": "Va3elina/moex-aggregator", "training_usage": "gold_candidate", "confidence_tier": "high_confidence", "source_chain_id": "evidence-chain-issue_chain-244a3e7dd7e237f4", "helicopter_views": {"schemas": 2}, "artifact_families": {"ci": 3, "docs": 5}, "source_chain_kind": "issue_chain", "changed_file_count": 0, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {}, "linked_commit_count": 5, "helicopter_view_count": 2, "source_artifact_count": 8, "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": 3, "design_schema_api_artifact_count": 0}, "text": "Comment chain pattern product: assumption_checks\nRepo: Va3elina/moex-aggregator\nThread: Va3elina/moex-aggregator#42\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: Va3elina/moex-aggregator#42\nRepo: Va3elina/moex-aggregator\nThread label: thread_has_human_issue_and_fix_context\nOutcome: claimed_resolved_unverified\nComment count: 1\nLinked commit count: 5\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 0\nLabels: {'api_integration_gap': 1}\nPolarities: {'bad': 1}\nChanged file labels: {}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-9b52f6c0e744c9d4\",\n    \"kind\": \"pull_request_body\",\n    \"label\": \"api_integration_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/Va3elina/moex-aggregator/pull/42\",\n    \"text\": \"GitHub feedback: api_integration_gap\\nPolarity: bad\\nKind: pull_request_body\\nRepo: Va3elina/moex-aggregator\\nAuthor: Va3elina (User)\\nURL: https://github.com/Va3elina/moex-aggregator/pull/42\\nTitle: fix(mobile): current-value pill = \u0421\u042b\u0420\u041e\u0415 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 (\u043e\u0434\u0438\u043d-\u0432-\u043e\u0434\u0438\u043d \u0441 \u041f\u041a)\\nBody:\\n\u041f\u0440\u043e\u0434\u043e\u043b\u0436\u0435\u043d\u0438\u0435 #40. \u042d\u043d\u0434\u043f\u043e\u0438\u043d\u0442 \u0443 \u041f\u041a \u0438 \u043c\u043e\u0431\u0438\u043b\u043a\u0438 \u041e\u0414\u0418\u041d (/api/chart/{secId}) \u2192 \u0434\u0430\u043d\u043d\u044b\u0435 \u0442\u0435\\n\u0436\u0435. \u041f\u041a (SimpleChart) \u0440\u0438\u0441\u0443\u0435\u0442 \u0441\u044b\u0440\u044b\u043c\u0438 \u2192 \u0446\u0435\u043d\u0430 \u0432\u0435\u0440\u043d\u0430\u044f. \u041c\u043e\u0431\u0438\u043b\u043a\u0430 (MobileChart)\\n\u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u0442 \u0440\u044f\u0434 (align\u2192LTTB\u2192smaSmooth) \u2192 \u00ab\u0442\u0435\u043a\u0443\u0449\u0430\u044f \u0446\u0435\u043d\u0430\u00bb \u0432 pill \u0438\u0441\u043a\u0430\u0436\u0430\u043b\u0430\u0441\u044c \u0438\\n\u0443\u0435\u0437\u0436\u0430\u043b\u0430 \u043d\u0430 \u0434\u043b\u0438\u043d\u043d\u044b\u0445 \u043f\u0435\u0440\u0438\u043e\u0434\u0430\u0445. \u0417\u043d\u0430\u0447\u0438\u0442 \u0431\u0430\u0433 \u0447\u0438\u0441\u0442\u043e \u0432\u043e \u0444\u0440\u043e\u043d\u0442\u0435 \u043c\u043e\u0431\u0438\u043b\u043a\u0438 (\u043a\u044d\u0448 \u0431\u044d\u043a\u0430 \u0431\u0438\u043b \u0431\u044b\\n\u0438 \u043f\u043e \u041f\u041a \u2014 \u0430 \u0442\u0430\u043c \u043e\u043a).\\n\\n\u0424\u0438\u043a\u0441: pill (current-value) \u0442\u0435\u043f\u0435\u0440\u044c \u0431\u0435\u0440\u0451\u0442 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0435 \u0420\u0415\u0410\u041b\u042c\u041d\u041e\u0415 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0438\u0437 \u0421\u042b\u0420\u041e\u0413\u041e\\n\u0440\u044f\u0434\u0430 (rawSeries prop) \u0447\u0435\u0440\u0435\u0437 lastRealValue(), \u043c\u0438\u043d\u0443\u044f \u0432\u044b\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u043d\u0438\u0435/\u043f\u0440\u043e\u0440\u0435\u0436\u0435\u043d\u0438\u0435/\\n\u0441\u0433\u043b\u0430\u0436\u0438\u0432\u0430\u043d\u0438\u0435. \u041b\u0438\u043d\u0438\u044f \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0441\u0433\u043b\u0430\u0436\u0435\u043d\u0430 \u0434\u043b\u044f \u0432\u0438\u0437\u0443\u0430\u043b\u0430, \u043d\u043e \u0447\u0438\u0441\u043b\u043e \u00ab\u0442\u0435\u043a\u0443\u0449\u0435\u0439 \u0446\u0435\u043d\u044b\u00bb\\n\u043e\u0431\u044f\u0437\u0430\u043d\u043e \u0441\u043e\u0432\u043f\u0430\u0434\u0430\u0442\u044c \u0441 \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u0439 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0439 \u0442\u043e\u0447\u043a\u043e\u0439 \u0438 \u0441 \u041f\u041a. \u0412\u043c\u0435\u0441\u0442\u0435 \u0441 taper-\u0444\u0438\u043a\u0441\u043e\u043c #40\\n(\u043f\u043e\u0441\u043b\u0435\u0434\u043d\u044f\u044f \u0442\u043e\u0447\u043a\u0430 \u043b\u0438\u043d\u0438\u0438 \u0442\u043e\u0436\u0435 \u0441\u044b\u0440\u0430\u044f) pill \u0438 \u043a\u043e\u043d\u0435\u0446 \u043b\u0438\u043d\u0438\u0438 \u0441\u043e\u0432\u043f\u0430\u0434\u0430\u044e\u0442.\\n\\ntsc -b \u0437\u0435\u043b\u0451\u043d\u044b\u0439. MobileChart \u043e\u0431\u0449\u0438\u0439 \u2192 \u0432\u0441\u0435 \u043c\u043e\u0431\u0438\u043b\u044c\u043d\u044b\u0435 \u0433\u0440\u0430\u0444\u0438\u043a\u0438.\\n\\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>\\n\"\n  }\n]\nChanged files:\n[]\nLinked chain ids:\n[\"evidence-chain-comment_to_commit-735a129bb87a3075\"]\nSource graph evidence:\nSource evidence repo graph summary\nRepo: Va3elina/moex-aggregator\nGraph label: source_backed_multi_signal_graph\nNodes: 14\nEdges: 22\nNode types: {\"cooccurrence_profile\": 1, \"github_repo_summary\": 1, \"helicopter_repo_view\": 2, \"repo\": 1, \"source_artifact\": 8, \"source_bundle\": 1}\nEdge types: {\"artifact_needs_claim_verification\": 5, \"artifact_supports_verification\": 3, \"repo_has_cooccurrence_profile\": 1, \"repo_has_github_evidence_summary\": 1, \"repo_has_schemas_helicopter_view\": 2, \"repo_has_source_artifact\": 8, \"repo_has_source_bundle\": 1, \"source_bundle_uses_cooccurrence_profile\": 1}\nArtifact families: {\"ci\": 3, \"docs\": 5}\nHelicopter views: {\"s\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/Va3elina/moex-aggregator", "source_id": "comment-chain-pattern-assumption_checks-9e42008dfcaf139a", "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": "Va3elina/moex-aggregator", "source_dataset": "comment_chain_patterns/assumption_checks", "training_usage": "gold_candidate"}}}, {"ruleId": "foundry_assumption_check", "level": "warning", "message": {"text": "Foundry mined assumption checks: Va3elina/moex-aggregator"}, "properties": {"repobilityId": 434410, "scanner": "foundry_dataset", "fingerprint": "1d037afe5279b689bfd5d2d2002d0cfb67addbbfaccc698caefed20a7cac89bc", "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": "Va3elina/moex-aggregator#41", "human_labels": ["api_integration_gap"], "issue_number": "41", "thread_label": "thread_has_human_issue_and_fix_context", "outcome_label": "claimed_resolved_unverified", "source_backed": true, "max_confidence": 0.92, "repo_full_name": "Va3elina/moex-aggregator", "training_usage": "gold_candidate", "confidence_tier": "high_confidence", "source_chain_id": "evidence-chain-issue_chain-5469749a05e002a4", "helicopter_views": {"schemas": 2}, "artifact_families": {"ci": 3, "docs": 5}, "source_chain_kind": "issue_chain", "changed_file_count": 0, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {}, "linked_commit_count": 1, "helicopter_view_count": 2, "source_artifact_count": 8, "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": 3, "design_schema_api_artifact_count": 0}, "text": "Comment chain pattern product: assumption_checks\nRepo: Va3elina/moex-aggregator\nThread: Va3elina/moex-aggregator#41\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: Va3elina/moex-aggregator#41\nRepo: Va3elina/moex-aggregator\nThread label: thread_has_human_issue_and_fix_context\nOutcome: claimed_resolved_unverified\nComment count: 1\nLinked commit count: 1\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 0\nLabels: {'api_integration_gap': 1}\nPolarities: {'bad': 1}\nChanged file labels: {}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-793fab316dcca040\",\n    \"kind\": \"pull_request_body\",\n    \"label\": \"api_integration_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/Va3elina/moex-aggregator/pull/41\",\n    \"text\": \"GitHub feedback: api_integration_gap\\nPolarity: bad\\nKind: pull_request_body\\nRepo: Va3elina/moex-aggregator\\nAuthor: Va3elina (User)\\nURL: https://github.com/Va3elina/moex-aggregator/pull/41\\nTitle: fix(picker): %\u0438\u0437\u043c \u0444\u044c\u044e\u0447\u0435\u0440\u0441\u0430 = \u0437\u0430\u043a\u0440\u044b\u0442\u0438\u0435 \u043f\u0440\u0435\u0434. \u0434\u043d\u044f \u0442\u043e\u0433\u043e \u0436\u0435 \u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442\u0430 (\u0440\u043e\u043b\u043b\u043e\u0432\u0435\u0440)\\nBody:\\n## \u041f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 (\u0440\u0435\u043f\u043e\u0440\u0442 \u0412\u0430\u0434\u0438\u043c\u0430)\\n\u0412 \u043f\u0438\u043a\u0435\u0440\u0435 \u0432\u044b\u0431\u043e\u0440\u0430 \u0430\u043a\u0442\u0438\u0432\u0430 (\u043a\u043e\u043b\u043e\u043d\u043a\u0438 **\u0418\u0417\u041c. %** / **\u041e\u0431\u044a\u0451\u043c**) \u0434\u043b\u044f \u0444\u044c\u044e\u0447\u0435\u0440\u0441\u043e\u0432 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u0446\u0435\u043d\u044b \u0434\u043e\u043b\u0436\u043d\u043e \u0441\u0447\u0438\u0442\u0430\u0442\u044c\u0441\u044f \u043e\u0442 **\u0437\u0430\u043a\u0440\u044b\u0442\u0438\u044f \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0433\u043e \u0434\u043d\u044f \u044d\u0442\u043e\u0433\u043e \u0436\u0435 \u0444\u044c\u044e\u0447\u0435\u0440\u0441\u0430**. \u0421\u0435\u0439\u0447\u0430\u0441 \u0432 \u043e\u043a\u043d\u0435 \u0440\u043e\u043b\u043b\u043e\u0432\u0435\u0440\u0430 \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u043b\u0438\u0441\u044c \u043b\u043e\u0436\u043d\u044b\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f.\\n\\n## \u041f\u0440\u0438\u0447\u0438\u043d\u0430\\n`/api/instruments` \u0441\u0447\u0438\u0442\u0430\u043b `change_pct` \u043a\u0430\u043a `LAG(close)` \u043f\u043e **`sec_id`** (\u043f\u0435\u0440\u043f\u0435\u0442\u0443\u0430\u043b-\u0441\u0435\u0440\u0438\u044f). \u0412 \u043e\u043a\u043d\u0435 \u0440\u043e\u043b\u043b\u043e\u0432\u0435\u0440\u0430 \u043f\u043e\u0434 \u043e\u0434\u043d\u0438\u043c `sec_id` \u0436\u0438\u0432\u0443\u0442 **\u0434\u0432\u0430** dated-\u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442\u0430 (`candles.secid`) \u043d\u0430 \u043e\u0434\u043d\u0438 \u0434\u0430\u0442\u044b \u2192 `LAG` \u043f\u0440\u044b\u0433\u0430\u043b \u043c\u0435\u0436\u0434\u0443 \u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442\u0430\u043c\u0438.\\n\\n## \u0414\u043e\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c\u0441\u0442\u0432\u043e (\u0440\u043e\u043b\u043b\u043e\u0432\u0435\u0440 \u0438\u044e\u043d-2025)\\n| sec_id | OLD (\u043f\u043e sec_id) | NEW (within secid) |\\n|---|---|---|\\n| CRM | **\u221215.67%** | \u22120.86% |\\n| GZM | **\u221219.97%** | +0.18% |\\n| SiM | **\u221217.60%** | \u22121.17% |\\n\\n## \u0424\u0438\u043a\u0441\\n`/api/instruments` (\u043e\u0431\u0449\u0438\u0439 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a **\u0432\u0441\u0435\u0445** \u043f\u0438\u043a\u0435\u0440\u043e\u0432: desktop search, export multi-search, mobile):\\n- `prev_close` = `LAG(close)` \u043f\u043e **`secid`** (\u0437\u0430\u043a\u0440\u044b\u0442\u0438\u0435 \u043f\u0440\u0435\u0434. \u0434\u043d\u044f \u0442\u043e\u0433\u043e \u0436\u0435 \u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442\u0430);\\n- per `sec_id` \u0432\u044b\u0431\u0438\u0440\u0430\u0435\u043c **\u0430\u043a\u0442\u0438\u0432\u043d\u044b\u0439** \u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442 (\u0441\u0432\u0435\u0436\u0430\u0439\u0448\u0430\u044f \u0434\u0430\u0442\u0430, \u0442\u0430\"\n  }\n]\nChanged files:\n[]\nLinked chain ids:\n[\"evidence-chain-comment_to_commit-19196e511d59afd4\"]\nSource graph evidence:\nSource evidence repo graph summary\nRepo: Va3elina/moex-aggregator\nGraph label: source_backed_multi_signal_graph\nNodes: 14\nEdges: 22\nNode types: {\"cooccurrence_profile\": 1, \"github_repo_summary\": 1, \"helicopter_repo_view\": 2, \"repo\": 1, \"source_artifact\": 8, \"source_bundle\": 1}\nEdge types: {\"artifact_needs_claim_verification\": 5, \"artifact_supports_verification\": 3, \"repo_has_cooccurrence_profile\": 1, \"repo_has_github_evidence_summary\": 1, \"repo_has_schemas_helicopter_view\": 2, \"repo_has_source_artifact\": 8, \"repo_has_source_bundle\": 1, \"source_bundle_uses_\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/Va3elina/moex-aggregator", "source_id": "comment-chain-pattern-assumption_checks-00761deed1b3c192", "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": "Va3elina/moex-aggregator", "source_dataset": "comment_chain_patterns/assumption_checks", "training_usage": "gold_candidate"}}}, {"ruleId": "foundry_assumption_check", "level": "warning", "message": {"text": "Foundry mined assumption checks: Va3elina/moex-aggregator"}, "properties": {"repobilityId": 434409, "scanner": "foundry_dataset", "fingerprint": "1b8d0c03707df56832394c638b404586dba2308027d0aba410374b968a29b2b6", "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": "Va3elina/moex-aggregator#38", "human_labels": ["agent_instruction_gap"], "issue_number": "38", "thread_label": "thread_has_human_issue_and_fix_context", "outcome_label": "claimed_resolved_unverified", "source_backed": true, "max_confidence": 0.92, "repo_full_name": "Va3elina/moex-aggregator", "training_usage": "gold_candidate", "confidence_tier": "high_confidence", "source_chain_id": "evidence-chain-issue_chain-d44b0593daa3aaa4", "helicopter_views": {"schemas": 2}, "artifact_families": {"ci": 3, "docs": 5}, "source_chain_kind": "issue_chain", "changed_file_count": 0, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {}, "linked_commit_count": 5, "helicopter_view_count": 2, "source_artifact_count": 8, "classification_reasons": ["source_graph_has_real_artifacts", "source_graph_has_verification_artifacts", "repo_has_isolated_helicopter_views", "link_quality_high_confidence"], "linked_ci_commit_count": 0, "verification_artifact_count": 3, "design_schema_api_artifact_count": 0}, "text": "Comment chain pattern product: assumption_checks\nRepo: Va3elina/moex-aggregator\nThread: Va3elina/moex-aggregator#38\nOutcome: claimed_resolved_unverified\nThread label: thread_has_human_issue_and_fix_context\nSource graph label: source_backed_multi_signal_graph\nReasons: source_graph_has_real_artifacts, source_graph_has_verification_artifacts, repo_has_isolated_helicopter_views, link_quality_high_confidence\nChain evidence:\nIssue/PR evidence chain: Va3elina/moex-aggregator#38\nRepo: Va3elina/moex-aggregator\nThread label: thread_has_human_issue_and_fix_context\nOutcome: claimed_resolved_unverified\nComment count: 1\nLinked commit count: 5\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 0\nLabels: {'agent_instruction_gap': 1}\nPolarities: {'bad': 1}\nChanged file labels: {}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-dca918b5482bc2a9\",\n    \"kind\": \"pull_request_body\",\n    \"label\": \"agent_instruction_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/Va3elina/moex-aggregator/pull/38\",\n    \"text\": \"GitHub feedback: agent_instruction_gap\\nPolarity: bad\\nKind: pull_request_body\\nRepo: Va3elina/moex-aggregator\\nAuthor: Va3elina (User)\\nURL: https://github.com/Va3elina/moex-aggregator/pull/38\\nTitle: fix(export): \u043d\u0438\u0436\u043d\u0438\u0435 \u0437\u0430\u0441\u0435\u0447\u043a\u0438 \u0431\u0443\u043a\u0432 \u043b\u0435\u0433\u0435\u043d\u0434\u044b \u0441\u0440\u0435\u0437\u0430\u043b\u0438\u0441\u044c \u043d\u0430 \u0444\u043e\u0442\u043e \u0433\u0440\u0430\u0444\u0438\u043a\u0430\\nBody:\\nChartLegend \u0440\u0435\u043d\u0434\u0435\u0440\u0438\u0442 \u043a\u0430\u0436\u0434\u044b\u0439 item \u043a\u0430\u043a <svg height={totalH}> \u0433\u0434\u0435 totalH = fontSize.\\n\u0422\u0435\u043a\u0441\u0442 \u0446\u0435\u043d\u0442\u0440\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u043f\u043e totalH/2 \u0441 dominantBaseline=central \u2192 descender \u043a\u0438\u0440\u0438\u043b\u043b\u0438\u0446\u044b\\n(\u00ab\u0443\u00bb,\u00ab\u0440\u00bb,\u00ab\u0446\u00bb) \u0443\u0445\u043e\u0434\u0438\u0442 \u0434\u043e ~totalH/2 + 0.585\u00b7fs > totalH. \u0412 \u0436\u0438\u0432\u043e\u043c \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0435 \u0441\u043f\u0430\u0441\u0430\u0435\u0442\\noverflow:visible (\u043f\u043e\u0442\u043e\u043c\u0443 \u0440\u0430\u043d\u044c\u0448\u0435 \u043a\u0430\u0437\u0430\u043b\u043e\u0441\u044c, \u0447\u0442\u043e \u0432\u0441\u0451 \u043e\u043a), \u041d\u041e html2canvas \u0440\u0430\u0441\u0442\u0435\u0440\u0438\u0437\u0443\u0435\u0442\\n\u043a\u0430\u0436\u0434\u044b\u0439 <svg> \u0420\u041e\u0412\u041d\u041e \u0432 width\u00d7height \u0438 \u041a\u041b\u0418\u041f\u0410\u0415\u0422 overflow \u2192 \u043d\u0430 \u042d\u041a\u0421\u041f\u041e\u0420\u0422\u0415 \u043d\u0438\u0436\u043d\u0438\u0439 \u043a\u0440\u0430\u0439\\n\u0431\u0443\u043a\u0432 \u0441\u0440\u0435\u0437\u0430\u043b\u0441\u044f (\u0441\u0438\u043b\u044c\u043d\u0435\u0435 \u043d\u0430 \u043c\u0435\u043b\u043a\u043e\u043c \u0448\u0440\u0438\u0444\u0442\u0435/\u043c\u0430\u043b\u0435\u043d\u044c\u043a\u043e\u043c \u044d\u043a\u0440\u0430\u043d\u0435). \u0412\u0441\u0442\u0440\u0435\u0447\u0430\u043b\u043e\u0441\u044c \u043d\u0430 \u0432\u0441\u0435\u0445\\n\u0438\u043d\u0434\u0438\u043a\u0430\u0442\u043e\u0440\u0430\u0445 \u2014 ChartLegend \u043e\u0431\u0449\u0438\u0439.\\n\\n\u0424\u0438\u043a\u0441: totalH = max(dot, ceil(fs\u00b71.35)). 1.17\u00b7fs \u043d\u0443\u0436\u043d\u043e \u0447\u0442\u043e\u0431\u044b descender+ascender\\n\u0432\u043f\u0438\u0441\u0430\u043b\u0438\u0441\u044c \u043f\u0440\u0438 central-\u0446\u0435\u043d\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0438, +sub-pixel \u0437\u0430\u043f\u0430\u0441 \u043d\u0430 \u043e\u043a\u0440\u0443\u0433\u043b\u0435\u043d\u0438\u0435 html2canvas\\n(scale=DPR). \u041c\u0430\u0440\u043a\u0435\u0440 \u0438 \u0442\u0435\u043a\u0441\u0442 \u043f\u043e-\u043f\u0440\u0435\u0436\u043d\u0435\u043c\u0443 \u043f\u043e \u0446\u0435\u043d\u0442\u0440\u0443 (cy/y = totalH/2) \u2192 \u0432\u044b\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u043d\u0438\u0435\\n\u043d\u0435 \u043c\u0435\u043d\u044f\u0435\u0442\u0441\u044f, \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043b\u0438\u0448\u044c \u0432\u0435\u0440\u0442\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u0439 \u0432\u043e\u0437\u0434\u0443\u0445 (\u0432 \u0436\u0438\u0432\u043e\u0439 \u043b\u0435\u0433\u0435\u043d\u0434\u0435 \u043d\u0435\u0437\u0430\u043c\u0435\u0442\u043d\u043e).\\n\\ntsc -b \u0437\u0435\u043b\u0451\u043d\u044b\u0439.\\n\\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>\\n\"\n  }\n]\nChanged files:\n[]\nLinked chain ids:\n[\"evidence-chain-comment_to_commit-b675873506b77f43\"]\nSource graph evidence:\nSource evidence repo graph summary\nRepo: Va3elina/moex-aggregator\nGraph label: source_backed_multi_signal_graph\nNodes: 14\nEdges: 22\nNode types: {\"cooccurrence_profile\": 1, \"github_repo_summary\": 1, \"helicopter_repo_view\": 2, \"repo\": 1, \"source_artifact\": 8, \"source_bundle\": 1}\nEdge types: {\"artifact_needs_claim_verification\": 5, \"artifact_supports_verification\": 3, \"repo_has_cooccurrence_profile\": 1, \"repo_has_github_evidence_summary\": 1, \"repo_has_schemas_helicopter_view\": 2, \"repo_has_source_artifact\": 8, \"repo_has_source_bundle\": 1, \"source_bundle_uses_cooccurrence_profile\": 1}\nArtifact\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/Va3elina/moex-aggregator", "source_id": "comment-chain-pattern-assumption_checks-1a911380aab970a6", "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": "Va3elina/moex-aggregator", "source_dataset": "comment_chain_patterns/assumption_checks", "training_usage": "gold_candidate"}}}, {"ruleId": "foundry_assumption_check", "level": "warning", "message": {"text": "Foundry mined assumption checks: Va3elina/moex-aggregator"}, "properties": {"repobilityId": 434408, "scanner": "foundry_dataset", "fingerprint": "9bb86cc2d3f17ab9b54a5a48a3595b1865ff12232d40715a8d10bc930fabf75e", "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": "Va3elina/moex-aggregator#37", "human_labels": ["agent_instruction_gap"], "issue_number": "37", "thread_label": "thread_has_human_issue_and_fix_context", "outcome_label": "claimed_resolved_unverified", "source_backed": true, "max_confidence": 0.92, "repo_full_name": "Va3elina/moex-aggregator", "training_usage": "gold_candidate", "confidence_tier": "high_confidence", "source_chain_id": "evidence-chain-issue_chain-ed1347935eab1a95", "helicopter_views": {"schemas": 2}, "artifact_families": {"ci": 3, "docs": 5}, "source_chain_kind": "issue_chain", "changed_file_count": 0, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {}, "linked_commit_count": 1, "helicopter_view_count": 2, "source_artifact_count": 8, "classification_reasons": ["source_graph_has_real_artifacts", "source_graph_has_verification_artifacts", "repo_has_isolated_helicopter_views", "link_quality_high_confidence"], "linked_ci_commit_count": 0, "verification_artifact_count": 3, "design_schema_api_artifact_count": 0}, "text": "Comment chain pattern product: assumption_checks\nRepo: Va3elina/moex-aggregator\nThread: Va3elina/moex-aggregator#37\nOutcome: claimed_resolved_unverified\nThread label: thread_has_human_issue_and_fix_context\nSource graph label: source_backed_multi_signal_graph\nReasons: source_graph_has_real_artifacts, source_graph_has_verification_artifacts, repo_has_isolated_helicopter_views, link_quality_high_confidence\nChain evidence:\nIssue/PR evidence chain: Va3elina/moex-aggregator#37\nRepo: Va3elina/moex-aggregator\nThread label: thread_has_human_issue_and_fix_context\nOutcome: claimed_resolved_unverified\nComment count: 1\nLinked commit count: 1\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 0\nLabels: {'agent_instruction_gap': 1}\nPolarities: {'bad': 1}\nChanged file labels: {}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-2119923cc6e60a63\",\n    \"kind\": \"pull_request_body\",\n    \"label\": \"agent_instruction_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/Va3elina/moex-aggregator/pull/37\",\n    \"text\": \"GitHub feedback: agent_instruction_gap\\nPolarity: bad\\nKind: pull_request_body\\nRepo: Va3elina/moex-aggregator\\nAuthor: Va3elina (User)\\nURL: https://github.com/Va3elina/moex-aggregator/pull/37\\nTitle: fix(fund-trades): \u043a\u043e\u043d\u0441\u0435\u043d\u0441\u0443\u0441 \u00ab\u041f\u043e\u043a\u0443\u043f\u043a\u0438 \u0444\u043e\u043d\u0434\u043e\u0432\u00bb \u043c\u0435\u0448\u0430\u043b \u043f\u0435\u0440\u0438\u043e\u0434\u044b \u0440\u0430\u0437\u043d\u044b\u0445 \u0423\u041a\\nBody:\\n## \u041f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 (\u0440\u0435\u043f\u043e\u0440\u0442 \u0412\u0430\u0434\u0438\u043c\u0430)\\n\u0412 \u00ab\u041f\u043e\u043a\u0443\u043f\u043a\u0430\u0445 \u0444\u043e\u043d\u0434\u043e\u0432\u00bb \u043a\u043e\u043d\u0441\u0435\u043d\u0441\u0443\u0441 \u0441\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u043b **\u0432\u0441\u0435** \u0423\u041a, \u0432\u043a\u043b\u044e\u0447\u0430\u044f \u0442\u0435, \u0447\u0442\u043e \u0435\u0449\u0451 \u043d\u0435 \u0441\u0434\u0430\u043b\u0438 \u043c\u0430\u0439\u0441\u043a\u0438\u0439 \u0441\u043d\u0430\u043f\u0448\u043e\u0442: \u00ab\u041b\u0443\u043a\u043e\u0439\u043b \u043a\u0443\u043f\u0438\u043b\u0438 7 \u0444\u043e\u043d\u0434\u043e\u0432\u00bb, \u0445\u043e\u0442\u044f \u043c\u0430\u0439 \u0437\u0430\u043d\u0435\u0441\u043b\u0438 \u0442\u043e\u043b\u044c\u043a\u043e 2 \u0423\u041a.\\n\\n## \u0414\u0438\u0430\u0433\u043d\u043e\u0437 (\u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043d\u043e \u043d\u0430 \u043f\u0440\u043e\u0434\u0435)\\n`/movers` \u0438 `/asset` \u0431\u0440\u0430\u043b\u0438 `MAX(snapshot_date)` **\u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0444\u043e\u043d\u0434\u0430 \u043d\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e**:\\n- 4 \u043e\u0431\u043d\u043e\u0432\u043b\u0451\u043d\u043d\u044b\u0445 \u0444\u043e\u043d\u0434\u0430 (\u041f\u0435\u0440\u0432\u0430\u044f\u00d73 + \u0412\u0418\u041c OPIF-1003) \u2192 curr=**\u043c\u0430\u0439-29**, \u0434\u0435\u043b\u044c\u0442\u0430 \u043c\u0430\u0439\u2194\u0430\u043f\u0440\u0435\u043b\u044c;\\n- 13 \u043d\u0435-\u043e\u0431\u043d\u043e\u0432\u043b\u0451\u043d\u043d\u044b\u0445 \u2192 curr=**\u0430\u043f\u0440\u0435\u043b\u044c-30**, \u0434\u0435\u043b\u044c\u0442\u0430 \u0430\u043f\u0440\u0435\u043b\u044c\u2194\u043c\u0430\u0440\u0442;\\n- \u0432\u0441\u0451 \u0441\u0443\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043b\u043e\u0441\u044c \u0432 \u043e\u0434\u0438\u043d \u043a\u043e\u043d\u0441\u0435\u043d\u0441\u0443\u0441 \u2192 period-mixing.\\n\\n**\u0411\u043e\u043d\u0443\u0441-\u0431\u0430\u0433:** prev = `MAX(snapshot \u2264 curr \u2212 30 \u0434\u043d\u0435\u0439)`. \u0414\u043b\u044f \u0444\u043e\u043d\u0434\u0430 \u0441 \u0441\u043d\u0430\u043f\u0448\u043e\u0442\u043e\u043c 29 \u043c\u0430\u044f: `29 \u043c\u0430\u044f \u2212 30\u0434 = 29 \u0430\u043f\u0440 < 30 \u0430\u043f\u0440` \u2192 \u0430\u043f\u0440\u0435\u043b\u044c\u0441\u043a\u0438\u0439 \u0441\u043d\u0430\u043f\u0448\u043e\u0442 \u043f\u0440\u043e\u043f\u0443\u0441\u043a\u0430\u043b\u0441\u044f, prev \u0443\u0435\u0437\u0436\u0430\u043b \u0432 **\u043c\u0430\u0440\u0442** \u2192 \u0441\u043a\u0440\u044b\u0442\u0430\u044f 2-\u043c\u0435\u0441\u044f\u0447\u043d\u0430\u044f \u0434\u0435\u043b\u044c\u0442\u0430 \u0432\u043c\u0435\u0441\u0442\u043e 1\u043c.\\n\\n## \u0424\u0438\u043a\u0441\\n- **\u042f\u043a\u043e\u0440\u044c \u2014 \u041c\u0415\u0421\u042f\u0426** \u0441\u0432\u0435\u0436\u0430\u0439\u0448\u0435\u0433\u043e \u0441\u043d\u0430\u043f\u0448\u043e\u0442\u0430 \u043d\u0430\u0431\u043e\u0440\u0430; \u0432 \u043a\u043e\u043d\u0441\u0435\u043d\u0441\u0443\u0441 \u0431\u0435\u0440\u0451\u043c \u0442\u043e\u043b\u044c\u043a\u043e \u0444\u043e\u043d\u0434\u044b \u0441\u043e \u0441\u043d\u0430\u043f\u0448\u043e\u0442\u043e\u043c \u044d\u0442\u043e\u0433\u043e \u043c\u0435\u0441\u044f\u0446\u0430 (\u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0435 \u00ab\u0434\u043e\u0435\u0434\u0443\u0442\u00bb \u043f\u043e \u043c\u0435\u0440\u0435 \u0437\u0430\u043b\u0438\u0432\u043a\u0438 \u0438\u0445 \u0434\u0430\u043d\u043d\u044b\u0445).\\n- **prev \u0432\u044b\u0440\u0430\u0432\u043d\u0435\u043d \u043f\u043e \u043c\u0435\u0441\u044f\u0446\u0443** \u0447\u0435\u0440\u0435\u0437 `make_interval` \"\n  }\n]\nChanged files:\n[]\nLinked chain ids:\n[\"evidence-chain-comment_to_commit-e305c9355266af12\"]\nSource graph evidence:\nSource evidence repo graph summary\nRepo: Va3elina/moex-aggregator\nGraph label: source_backed_multi_signal_graph\nNodes: 14\nEdges: 22\nNode types: {\"cooccurrence_profile\": 1, \"github_repo_summary\": 1, \"helicopter_repo_view\": 2, \"repo\": 1, \"source_artifact\": 8, \"source_bundle\": 1}\nEdge types: {\"artifact_needs_claim_verification\": 5, \"artifact_supports_verification\": 3, \"repo_has_cooccurrence_profile\": 1, \"repo_has_github_evidence_summary\": 1, \"repo_has_schemas_helicopter_view\": 2, \"repo_has_source_artifact\": 8, \"repo_has_source_bundle\": 1, \"source_bundle_uses_cooccurrence_profile\": 1}\nArtif\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/Va3elina/moex-aggregator", "source_id": "comment-chain-pattern-assumption_checks-9336362eb1897f46", "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": "Va3elina/moex-aggregator", "source_dataset": "comment_chain_patterns/assumption_checks", "training_usage": "gold_candidate"}}}, {"ruleId": "foundry_assumption_check", "level": "warning", "message": {"text": "Foundry mined assumption checks: Va3elina/moex-aggregator"}, "properties": {"repobilityId": 434407, "scanner": "foundry_dataset", "fingerprint": "25d92588f4a9b3c1142c6c281d2142e16d1a9dfc48b609bb8f53caa5845dd9be", "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": "Va3elina/moex-aggregator#36", "human_labels": ["agent_instruction_gap"], "issue_number": "36", "thread_label": "thread_has_human_issue_and_fix_context", "outcome_label": "claimed_resolved_unverified", "source_backed": true, "max_confidence": 0.82, "repo_full_name": "Va3elina/moex-aggregator", "training_usage": "gold_candidate", "confidence_tier": "high_confidence", "source_chain_id": "evidence-chain-issue_chain-06d74dd6bbb68e25", "helicopter_views": {"schemas": 2}, "artifact_families": {"ci": 3, "docs": 5}, "source_chain_kind": "issue_chain", "changed_file_count": 0, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {}, "linked_commit_count": 5, "helicopter_view_count": 2, "source_artifact_count": 8, "classification_reasons": ["source_graph_has_real_artifacts", "source_graph_has_verification_artifacts", "repo_has_isolated_helicopter_views", "link_quality_high_confidence"], "linked_ci_commit_count": 0, "verification_artifact_count": 3, "design_schema_api_artifact_count": 0}, "text": "Comment chain pattern product: assumption_checks\nRepo: Va3elina/moex-aggregator\nThread: Va3elina/moex-aggregator#36\nOutcome: claimed_resolved_unverified\nThread label: thread_has_human_issue_and_fix_context\nSource graph label: source_backed_multi_signal_graph\nReasons: source_graph_has_real_artifacts, source_graph_has_verification_artifacts, repo_has_isolated_helicopter_views, link_quality_high_confidence\nChain evidence:\nIssue/PR evidence chain: Va3elina/moex-aggregator#36\nRepo: Va3elina/moex-aggregator\nThread label: thread_has_human_issue_and_fix_context\nOutcome: claimed_resolved_unverified\nComment count: 1\nLinked commit count: 5\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 0\nLabels: {'agent_instruction_gap': 1}\nPolarities: {'bad': 1}\nChanged file labels: {}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-2813f60db3e7168f\",\n    \"kind\": \"pull_request_body\",\n    \"label\": \"agent_instruction_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/Va3elina/moex-aggregator/pull/36\",\n    \"text\": \"GitHub feedback: agent_instruction_gap\\nPolarity: bad\\nKind: pull_request_body\\nRepo: Va3elina/moex-aggregator\\nAuthor: Va3elina (User)\\nURL: https://github.com/Va3elina/moex-aggregator/pull/36\\nTitle: chore(funds): \u0443\u0431\u0440\u0430\u0442\u044c \u0443\u043f\u043e\u043c\u0438\u043d\u0430\u043d\u0438\u044f \u0432\u0435\u043d\u0434\u043e\u0440\u0430 \u0434\u0430\u043d\u043d\u044b\u0445 Cbonds \u0438\u0437 UI \u0438 \u043a\u043e\u0434\u0430\\nBody:\\n\u041f\u043e \u043f\u0440\u043e\u0441\u044c\u0431\u0435 \u0412\u0430\u0434\u0438\u043c\u0430 \u2014 \u043d\u0438\u0433\u0434\u0435 \u043d\u0435 \u0441\u0432\u0435\u0442\u0438\u0442\u044c \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a Cbonds (investfunds \u0432 \u043a\u043e\u0434\u0435 \u043d\u0435 \u0431\u044b\u043b\u043e).\\nUI-\u0432\u0438\u0434\u0438\u043c\u044b\u0435 (2):\\n- FundDetailModal: \u00ab\u0414\u043e\u0445\u043e\u0434\u043d\u043e\u0441\u0442\u044c \u2026 (\u043f\u043e \u0434\u0430\u043d\u043d\u044b\u043c Cbonds)\u00bb \u2192 \u0431\u0435\u0437 \u0432\u0435\u043d\u0434\u043e\u0440\u0430.\\n- FAQ \u00ab\u041e\u0442\u043a\u0443\u0434\u0430 \u0434\u0430\u043d\u043d\u044b\u0435\u00bb: \u00abCbonds (\u0441\u043e\u0441\u0442\u0430\u0432\u044b \u0411\u041f\u0418\u0424)\u00bb \u2192 \u00ab\u043f\u0443\u0431\u043b\u0438\u0447\u043d\u043e\u0435 \u0440\u0430\u0441\u043a\u0440\u044b\u0442\u0438\u0435 \u0444\u043e\u043d\u0434\u043e\u0432\\n  (\u0441\u043e\u0441\u0442\u0430\u0432\u044b \u0411\u041f\u0418\u0424)\u00bb.\\n\u041a\u043e\u0434-\u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0438 (3, \u043d\u0435\u0432\u0438\u0434\u0438\u043c\u044b/\u0432\u044b\u0440\u0435\u0437\u0430\u044e\u0442\u0441\u044f \u0438\u0437 \u0431\u0430\u043d\u0434\u043b\u0430, \u043d\u043e \u0437\u0430\u0447\u0438\u0449\u0435\u043d\u044b \u0434\u043b\u044f \u043f\u043e\u043b\u043d\u043e\u0442\u044b):\\nLayout, seoMeta, FundTradesPage \u2014 \u00abCbonds monthly snapshot\u00bb \u2192 \u00ab\u043f\u043e\u043c\u0435\u0441\u044f\u0447\u043d\u044b\u0435 \u0441\u043d\u0430\u043f\u0448\u043e\u0442\u044b\\n\u0441\u043e\u0441\u0442\u0430\u0432\u043e\u0432 \u0444\u043e\u043d\u0434\u043e\u0432\u00bb. \u0422\u043e\u0447\u043d\u044b\u0435 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u0438 \u043e\u0441\u0442\u0430\u044e\u0442\u0441\u044f \u0432 memory (data_sources/ingestion_map).\\n\\ntsc -b \u0437\u0435\u043b\u0451\u043d\u044b\u0439.\\n\\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>\\n\"\n  }\n]\nChanged files:\n[]\nLinked chain ids:\n[\"evidence-chain-comment_to_commit-45662652b5a8e5f6\"]\nSource graph evidence:\nSource evidence repo graph summary\nRepo: Va3elina/moex-aggregator\nGraph label: source_backed_multi_signal_graph\nNodes: 14\nEdges: 22\nNode types: {\"cooccurrence_profile\": 1, \"github_repo_summary\": 1, \"helicopter_repo_view\": 2, \"repo\": 1, \"source_artifact\": 8, \"source_bundle\": 1}\nEdge types: {\"artifact_needs_claim_verification\": 5, \"artifact_supports_verification\": 3, \"repo_has_cooccurrence_profile\": 1, \"repo_has_github_evidence_summary\": 1, \"repo_has_schemas_helicopter_view\": 2, \"repo_has_source_artifact\": 8, \"repo_has_source_bundle\": 1, \"source_bundle_uses_cooccurrence_profile\": 1}\nArtifact families: {\"ci\": 3, \"docs\": 5}\nHelicopter views: {\"schemas\": 2}\nBundle labels: {\"source_backed_fake_real_verification_bundle\": 1}\nCo-occurrence labels: {\"fake_real_data_plus_verification_gap\": 1}", "source": "foundry_mined_dataset", "repo_url": "https://github.com/Va3elina/moex-aggregator", "source_id": "comment-chain-pattern-assumption_checks-5d9649cf33294ff9", "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": "Va3elina/moex-aggregator", "source_dataset": "comment_chain_patterns/assumption_checks", "training_usage": "gold_candidate"}}}, {"ruleId": "foundry_assumption_check", "level": "warning", "message": {"text": "Foundry mined assumption checks: Va3elina/moex-aggregator"}, "properties": {"repobilityId": 434406, "scanner": "foundry_dataset", "fingerprint": "4ab84c0436ba5e8f036628230ee54a0c215f8d2dbf57df5ca57189c5b4f459ae", "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": "Va3elina/moex-aggregator#32", "human_labels": ["human_feedback_general"], "issue_number": "32", "thread_label": "thread_needs_classification", "outcome_label": "ambiguous_needs_more_evidence", "source_backed": true, "max_confidence": 0.92, "repo_full_name": "Va3elina/moex-aggregator", "training_usage": "gold_candidate", "confidence_tier": "high_confidence", "source_chain_id": "evidence-chain-issue_chain-218bb7b4bdc94aa7", "helicopter_views": {"schemas": 2}, "artifact_families": {"ci": 3, "docs": 5}, "source_chain_kind": "issue_chain", "changed_file_count": 0, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {}, "linked_commit_count": 1, "helicopter_view_count": 2, "source_artifact_count": 8, "classification_reasons": ["source_graph_has_real_artifacts", "source_graph_has_verification_artifacts", "repo_has_isolated_helicopter_views", "link_quality_high_confidence"], "linked_ci_commit_count": 0, "verification_artifact_count": 3, "design_schema_api_artifact_count": 0}, "text": "Comment chain pattern product: assumption_checks\nRepo: Va3elina/moex-aggregator\nThread: Va3elina/moex-aggregator#32\nOutcome: ambiguous_needs_more_evidence\nThread label: thread_needs_classification\nSource graph label: source_backed_multi_signal_graph\nReasons: source_graph_has_real_artifacts, source_graph_has_verification_artifacts, repo_has_isolated_helicopter_views, link_quality_high_confidence\nChain evidence:\nIssue/PR evidence chain: Va3elina/moex-aggregator#32\nRepo: Va3elina/moex-aggregator\nThread label: thread_needs_classification\nOutcome: ambiguous_needs_more_evidence\nComment count: 1\nLinked commit count: 1\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 0\nLabels: {'human_feedback_general': 1}\nPolarities: {'neutral': 1}\nChanged file labels: {}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-fd4c09c98490dfe0\",\n    \"kind\": \"pull_request_body\",\n    \"label\": \"human_feedback_general\",\n    \"polarity\": \"neutral\",\n    \"url\": \"https://github.com/Va3elina/moex-aggregator/pull/32\",\n    \"text\": \"GitHub feedback: human_feedback_general\\nPolarity: neutral\\nKind: pull_request_body\\nRepo: Va3elina/moex-aggregator\\nAuthor: Va3elina (User)\\nURL: https://github.com/Va3elina/moex-aggregator/pull/32\\nTitle: fix(export): \u0440\u0438\u0441\u043e\u0432\u0430\u043b\u043a\u0430 \u043d\u0435 \u0440\u0435\u0430\u0433\u0438\u0440\u0443\u0435\u0442 \u043d\u0430 \u0434\u0432\u0438\u0436\u0435\u043d\u0438\u0435 \u043c\u044b\u0448\u0438 \u043f\u043e\u0441\u043b\u0435 \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u043a\u0430\u2026\\nBody:\\n\u2026\u0441\u0430\u043d\u0438\u044f\\r\\n\\r\\n\u041d\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430\u0445 \u0441 \u0436\u0438\u0432\u044b\u043c \u0433\u0440\u0430\u0444\u0438\u043a\u043e\u043c (\u041e\u0442\u043a\u0440\u044b\u0442\u044b\u0435 \u043f\u043e\u0437\u0438\u0446\u0438\u0438, \u0414\u0435\u043d\u044c\u0433\u0438 \u0432 \u0444\u043e\u043d\u0434\u0430\u0445) \u043f\u0440\u0438 \u0440\u0438\u0441\u043e\u0432\u0430\u043d\u0438\u0438 \u0444\u0438\u0433\u0443\u0440 \u0432 \u0440\u0430\u0437\u043c\u0435\u0442\u043a\u0435 \u0441\u043a\u0440\u0438\u043d\u0448\u043e\u0442\u0430 \u0441\u0442\u0440\u0435\u043b\u043a\u0430/\u043b\u0438\u043d\u0438\u044f \u0441\u0445\u043b\u043e\u043f\u044b\u0432\u0430\u043b\u0438\u0441\u044c \u0432 \u0442\u043e\u0447\u043a\u0443 \u0441\u0442\u0430\u0440\u0442\u0430, \u0430 \u0442\u0435\u043a\u0441\u0442 \u043d\u0435\u043b\u044c\u0437\u044f \u0431\u044b\u043b\u043e \u043f\u0435\u0440\u0435\u0442\u0430\u0449\u0438\u0442\u044c. \u041f\u0440\u0438\u0447\u0438\u043d\u0430: \u0432\u043e \u0432\u0440\u0435\u043c\u044f \u0437\u0430\u0436\u0430\u0442\u043e\u0439 \u043a\u043d\u043e\u043f\u043a\u0438 \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u0439 \u0441\u043b\u0443\u0448\u0430\u0442\u0435\u043b\u044c \u0434\u0432\u0438\u0436\u0435\u043d\u0438\u044f fabric \u043f\u0435\u0440\u0435\u0441\u0442\u0430\u0451\u0442 \u043f\u043e\u043b\u0443\u0447\u0430\u0442\u044c pointermove (\u043d\u0430 pointerdown fabric \u043f\u0435\u0440\u0435\u043d\u043e\u0441\u0438\u0442 \u0435\u0433\u043e \u043d\u0430 document, \u0438 \u043f\u043e\u0432\u0435\u0440\u0445 \u044d\u0442\u0438\u0445 \u0441\u0442\u0440\u0430\u043d\u0438\u0446 \u043e\u043d \u043d\u0435 \u0441\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u0442; \u043d\u0430 \u041a\u0430\u0440\u0442\u0435 \u0440\u044b\u043d\u043a\u0430 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0448\u0442\u0430\u0442\u043d\u043e). \u0421\u0430\u043c upper-canvas \u0441\u043e\u0431\u044b\u0442\u0438\u044f \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442 \u0441\u0442\u0430\u0431\u0438\u043b\u044c\u043d\u043e.\\r\\n\\r\\n\u0424\u0438\u043a\u0441: \u043f\u0440\u043e\u0431\u0440\u0430\u0441\u044b\u0432\u0430\u0435\u043c pointermove \u0445\u043e\u043b\u0441\u0442\u0430 \u0432 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a fabric, \u043f\u043e\u043a\u0430 \u043a\u043d\u043e\u043f\u043a\u0430 \u0437\u0430\u0436\u0430\u0442\u0430, \u0441 \u0434\u0435\u0434\u0443\u043f\u043e\u043c \u043f\u043e \u043e\u0431\u044a\u0435\u043a\u0442\u0443 \u0441\u043e\u0431\u044b\u0442\u0438\u044f (\u0447\u0442\u043e\u0431\u044b \u0442\u0430\u043c, \u0433\u0434\u0435 \u0440\u043e\u0434\u043d\u043e\u0439 \u0441\u043b\u0443\u0448\u0430\u0442\u0435\u043b\u044c \u0432\u0441\u0451 \u0436\u0435 \u0441\u0440\u0430\u0431\u043e\u0442\u0430\u043b, \u0434\u0432\u0438\u0436\u0435\u043d\u0438\u0435 \u043d\u0435 \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u043b\u043e\u0441\u044c \u0434\u0432\u0430\u0436\u0434\u044b). \u0425\u043e\u043b\u0441\u0442 \u043f\u043e\u043c\u0435\u0447\u0430\u0435\u043c non-draggable, \u0447\u0442\u043e\u0431\u044b \u043d\u0430\u0442\u0438\u0432\u043d\u044b\u0439 HTML5-drag \u043d\u0435 \u043f\u0435\u0440\u0435\u0445\u0432\u0430\u0442\u044b\u0432\u0430\u043b \u0436\u0435\u0441\u0442.\"\n  }\n]\nChanged files:\n[]\nLinked chain ids:\n[\"evidence-chain-comment_to_commit-77d482e89946a262\"]\nSource graph evidence:\nSource evidence repo graph summary\nRepo: Va3elina/moex-aggregator\nGraph label: source_backed_multi_signal_graph\nNodes: 14\nEdges: 22\nNode types: {\"cooccurrence_profile\": 1, \"github_repo_summary\": 1, \"helicopter_repo_view\": 2, \"repo\": 1, \"source_artifact\": 8, \"source_bundle\": 1}\nEdge types: {\"artifact_needs_claim_verification\": 5, \"artifact_supports_verification\": 3, \"repo_has_cooccurrence_profile\": 1, \"repo_has_github_evidence_summary\": 1, \"repo_has_schemas_helicopter_view\": 2, \"repo_has_source_artifact\": 8, \"repo_has_source_bundle\": 1, \"source_bundle_uses_cooccurrence_profile\": 1}\nArtifact families: {\"ci\": 3, \"docs\": 5}\nHelicopter views: {\"schemas\": 2}\nBundle labels: {\"source_backed_fake_real_verification_bundle\": 1}\nCo-occurrence labels: {\"fake_real_data_plus_verification_gap\": 1}", "source": "foundry_mined_dataset", "repo_url": "https://github.com/Va3elina/moex-aggregator", "source_id": "comment-chain-pattern-assumption_checks-f607d2bd89fd0c4c", "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": "Va3elina/moex-aggregator", "source_dataset": "comment_chain_patterns/assumption_checks", "training_usage": "gold_candidate"}}}, {"ruleId": "foundry_assumption_check", "level": "warning", "message": {"text": "Foundry mined assumption checks: Va3elina/moex-aggregator"}, "properties": {"repobilityId": 434405, "scanner": "foundry_dataset", "fingerprint": "79f853d7cb028cb094bbf0956552661dbd5a1379f026be826c4e583b20a4d5c7", "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": "Va3elina/moex-aggregator#3", "human_labels": ["api_integration_gap"], "issue_number": "3", "thread_label": "thread_has_human_issue_and_fix_context", "outcome_label": "ambiguous_needs_more_evidence", "source_backed": true, "max_confidence": 0.607, "repo_full_name": "Va3elina/moex-aggregator", "training_usage": "weak_supervision", "confidence_tier": "weak_supervision", "source_chain_id": "evidence-chain-issue_chain-baf8a64527775e95", "helicopter_views": {"schemas": 2}, "artifact_families": {"ci": 3, "docs": 5}, "source_chain_kind": "issue_chain", "changed_file_count": 0, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {}, "linked_commit_count": 1, "helicopter_view_count": 2, "source_artifact_count": 8, "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": 3, "design_schema_api_artifact_count": 0}, "text": "Comment chain pattern product: assumption_checks\nRepo: Va3elina/moex-aggregator\nThread: Va3elina/moex-aggregator#3\nOutcome: ambiguous_needs_more_evidence\nThread label: thread_has_human_issue_and_fix_context\nSource graph label: source_backed_multi_signal_graph\nReasons: source_graph_has_real_artifacts, source_graph_has_verification_artifacts, repo_has_isolated_helicopter_views, link_quality_weak_supervision, high_risk_human_feedback_label\nChain evidence:\nIssue/PR evidence chain: Va3elina/moex-aggregator#3\nRepo: Va3elina/moex-aggregator\nThread label: thread_has_human_issue_and_fix_context\nOutcome: ambiguous_needs_more_evidence\nComment count: 1\nLinked commit count: 1\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 0\nLabels: {'api_integration_gap': 1}\nPolarities: {'bad': 1}\nChanged file labels: {}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-e9acf7152c0577ec\",\n    \"kind\": \"pull_request_body\",\n    \"label\": \"api_integration_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/Va3elina/moex-aggregator/pull/3\",\n    \"text\": \"GitHub feedback: api_integration_gap\\nPolarity: bad\\nKind: pull_request_body\\nRepo: Va3elina/moex-aggregator\\nAuthor: Va3elina (User)\\nURL: https://github.com/Va3elina/moex-aggregator/pull/3\\nTitle: fix(deploy): force-sync prod working tree to fix failing deploy\\nBody:\\n## \u041f\u0440\u043e\u0431\u043b\u0435\u043c\u0430\\n\\n`deploy-prod` \u043f\u0430\u0434\u0430\u0435\u0442 \u043d\u0430 \u043a\u0430\u0436\u0434\u043e\u043c \u0434\u0435\u043f\u043b\u043e\u0435 \u0437\u0430 ~5 \u0441\u0435\u043a\u0443\u043d\u0434 \u043d\u0430 \u043f\u0435\u0440\u0432\u043e\u043c \u0436\u0435 \u0448\u0430\u0433\u0435 \u2014 `git pull origin main` \u043d\u0430 \u043f\u0440\u043e\u0434\u0435:\\n\\n```\\nerror: Your local changes to the following files would be overwritten by merge:\\n\\tfrontend/src/components/InstrumentSearchModal.tsx\\nPlease commit your changes or stash them before you merge.\\nAborting\\nfatal: Cannot fast-forward your working tree.\\nProcess exited with status 128\\n```\\n\\n\u0420\u0430\u0431\u043e\u0447\u0435\u0435 \u0434\u0435\u0440\u0435\u0432\u043e `/opt/frame` \u0441\u0442\u0430\u043b\u043e \u00ab\u0433\u0440\u044f\u0437\u043d\u044b\u043c\u00bb (\u043f\u0440\u0430\u0432\u043a\u0430 `InstrumentSearchModal.tsx` \u0441\u0434\u0435\u043b\u0430\u043d\u0430 \u043f\u0440\u044f\u043c\u043e \u043d\u0430 \u0441\u0435\u0440\u0432\u0435\u0440\u0435). `git pull` \u043e\u0442\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043f\u0435\u0440\u0435\u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0442\u044c \u043d\u0435\u0437\u0430\u043a\u043e\u043c\u043c\u0438\u0447\u0435\u043d\u043d\u044b\u0435 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f, \u0441\u043a\u0440\u0438\u043f\u0442 \u043e\u0431\u0440\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0438\u0437-\u0437\u0430 `set -e` \u0435\u0449\u0451 \u0434\u043e \u0441\u0431\u043e\u0440\u043a\u0438 \u043e\u0431\u0440\u0430\u0437\u043e\u0432. \u041f\u0440\u0438 \u044d\u0442\u043e\u043c \u0441\u0430\u0439\u0442 \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f, \u0442.\u043a. \u0442\u0430 \u0436\u0435 \u043f\u0440\u0430\u0432\u043a\u0430 \u0431\u044b\u043b\u0430 \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0430 \u0438 \u043f\u0435\u0440\u0435\u0441\u043e\u0431\u0440\u0430\u043d\u0430 \u043d\u0430 \u0441\u0435\u0440\u0432\u0435\u0440\u0435 \u0432\u0440\u0443\u0447\u043d\u0443\u044e.\\n\\n## \u0424\u0438\u043a\u0441\\n\\n`git pull origin main` \u2192 `git fetch origin main` + `git reset --hard FETCH_HEAD`.\\n\\n\u041f\u0440\u043e\u0434 \u2014 \u0434\u0435\u043f\u043b\u043e\u0439-\u0442\u0430\u0440\u0433\u0435\u0442, \u0435\u0433\u043e \u0440\u0430\u0431\u043e\u0447\u0435\u0435 \u0434\u0435\u0440\u0435\u0432\u043e \u0432\u0441\u0435\u0433\u0434\u0430 \u0434\u043e\u043b\u0436\u043d\u043e \u0441\u043e\u0432\u043f\u0430\u0434\u0430\u0442\u044c \u0441 `origin/main`. `reset --hard` \u043e\u0442\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u0442\"\n  }\n]\nChanged files:\n[]\nLinked chain ids:\n[\"evidence-chain-comment_to_commit-501f23d8d5b62c61\"]\nSource graph evidence:\nSource evidence repo graph summary\nRepo: Va3elina/moex-aggregator\nGraph label: source_backed_multi_signal_graph\nNodes: 14\nEdges: 22\nNode types: {\"cooccurrence_profile\": 1, \"github_repo_summary\": 1, \"helicopter_repo_view\": 2, \"repo\": 1, \"source_artifact\": 8, \"source_bundle\": 1}\nEdge types: {\"artifact_needs_claim_verification\": 5, \"artifact_supports_verification\": 3, \"repo_has_cooccurrence_profile\": 1, \"repo_has_github_evidence_summary\": 1, \"repo_has_schemas_helicopter_view\": 2, \"repo_has_source_artifact\": 8, \"repo_has_source_bundle\": 1, \"source_bundle\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/Va3elina/moex-aggregator", "source_id": "comment-chain-pattern-assumption_checks-a22e4582a4860e21", "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": "Va3elina/moex-aggregator", "source_dataset": "comment_chain_patterns/assumption_checks", "training_usage": "weak_supervision"}}}, {"ruleId": "foundry_assumption_check", "level": "warning", "message": {"text": "Foundry mined assumption checks: Va3elina/moex-aggregator"}, "properties": {"repobilityId": 434404, "scanner": "foundry_dataset", "fingerprint": "e9ab3d4f77dbd78b37fc9ab1c75ca17520dec69167262e6fea0691c39045a6e1", "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": "Va3elina/moex-aggregator#24", "human_labels": ["api_integration_gap", "data_schema_persistence"], "issue_number": "24", "thread_label": "thread_has_human_issue_and_fix_context", "outcome_label": "ambiguous_needs_more_evidence", "source_backed": true, "max_confidence": 0.607, "repo_full_name": "Va3elina/moex-aggregator", "training_usage": "weak_supervision", "confidence_tier": "weak_supervision", "source_chain_id": "evidence-chain-issue_chain-0917a142e16ed424", "helicopter_views": {"schemas": 2}, "artifact_families": {"ci": 3, "docs": 5}, "source_chain_kind": "issue_chain", "changed_file_count": 0, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {}, "linked_commit_count": 2, "helicopter_view_count": 2, "source_artifact_count": 8, "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": 3, "design_schema_api_artifact_count": 0}, "text": "Comment chain pattern product: assumption_checks\nRepo: Va3elina/moex-aggregator\nThread: Va3elina/moex-aggregator#24\nOutcome: ambiguous_needs_more_evidence\nThread label: thread_has_human_issue_and_fix_context\nSource graph label: source_backed_multi_signal_graph\nReasons: source_graph_has_real_artifacts, source_graph_has_verification_artifacts, repo_has_isolated_helicopter_views, link_quality_weak_supervision, high_risk_human_feedback_label\nChain evidence:\nIssue/PR evidence chain: Va3elina/moex-aggregator#24\nRepo: Va3elina/moex-aggregator\nThread label: thread_has_human_issue_and_fix_context\nOutcome: ambiguous_needs_more_evidence\nComment count: 2\nLinked commit count: 2\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 0\nLabels: {'data_schema_persistence': 1, 'api_integration_gap': 1}\nPolarities: {'bad': 2}\nChanged file labels: {}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-a016f05eb7211408\",\n    \"kind\": \"pull_request_body\",\n    \"label\": \"data_schema_persistence\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/Va3elina/moex-aggregator/pull/24\",\n    \"text\": \"GitHub feedback: data_schema_persistence\\nPolarity: bad\\nKind: pull_request_body\\nRepo: Va3elina/moex-aggregator\\nAuthor: dependabot[bot] (Bot)\\nURL: https://github.com/Va3elina/moex-aggregator/pull/24\\nTitle: chore(deps): Update redis requirement from >=5.0 to >=8.0.0\\nBody:\\nUpdates the requirements on [redis](https://github.com/redis/redis-py) to permit the latest version.\\n<details>\\n<summary>Release notes</summary>\\n<p><em>Sourced from <a href=\\\"https://github.com/redis/redis-py/releases\\\">redis's releases</a>.</em></p>\\n<blockquote>\\n<h2>8.0.0</h2>\\n<h1>Changes</h1>\\n<h2>\ud83d\ude80 Highlights</h2>\\n<h3>Async Cluster PubSub</h3>\\n<p>This release introduces full <strong>asyncio Cluster PubSub support</strong>, bringing shard-channel capabilities (<code>SSUBSCRIBE</code>, <code>SUNSUBSCRIBE</code>, <code>SPUBLISH</code>) to the async <code>RedisCluster</code> client. The new <code>ClusterPubSub</code> class in <code>redis.asyncio.cluster</code> automatically routes shard-channel subscriptions to the correct cluster node based on key-slot hashing, manages per-node PubSub connections, and supports round-robin message retrieval across nodes. Users can create a cluster pubsub instance via <code>RedisCluster.pu\"\n  },\n  {\n    \"id\": \"github-feedback-comment-548efa3a9c481923\",\n    \"kind\": \"issue_comment\",\n    \"label\": \"api_integration_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/Va3elina/moex-aggregator/pull/24#issuecomment-4710269210\",\n    \"text\": \"GitHub feedback: api_integration_gap\\nPolarity: bad\\nKind: issue_comment\\nRepo: Va3elina/moex-aggregator\\nAuthor: dependabot[bot] (Bot)\\nURL: https://github.com/Va3elina/moex-aggregator/pull/24#issuecomment-4710269210\\nTitle: \\nBody:\\n### Labels\\n\\nThe following labels could not be found: `dependencies`, `python`. Please create them before Dependabot can add them to a pull request.\\n\\n\\nPle\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/Va3elina/moex-aggregator", "source_id": "comment-chain-pattern-assumption_checks-0b4040f6de59fe67", "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": "Va3elina/moex-aggregator", "source_dataset": "comment_chain_patterns/assumption_checks", "training_usage": "weak_supervision"}}}, {"ruleId": "foundry_assumption_check", "level": "warning", "message": {"text": "Foundry mined assumption checks: Va3elina/moex-aggregator"}, "properties": {"repobilityId": 434403, "scanner": "foundry_dataset", "fingerprint": "2a02e9b5b4c581f169780b7b48b32caffc3dfcfd519f1a938582850c4fa0e63d", "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": "Va3elina/moex-aggregator#13", "human_labels": ["human_feedback_general"], "issue_number": "13", "thread_label": "thread_needs_classification", "outcome_label": "ambiguous_needs_more_evidence", "source_backed": true, "max_confidence": 0.82, "repo_full_name": "Va3elina/moex-aggregator", "training_usage": "gold_candidate", "confidence_tier": "high_confidence", "source_chain_id": "evidence-chain-issue_chain-496153fa64de2963", "helicopter_views": {"schemas": 2}, "artifact_families": {"ci": 3, "docs": 5}, "source_chain_kind": "issue_chain", "changed_file_count": 0, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {}, "linked_commit_count": 1, "helicopter_view_count": 2, "source_artifact_count": 8, "classification_reasons": ["source_graph_has_real_artifacts", "source_graph_has_verification_artifacts", "repo_has_isolated_helicopter_views", "link_quality_high_confidence"], "linked_ci_commit_count": 0, "verification_artifact_count": 3, "design_schema_api_artifact_count": 0}, "text": "Comment chain pattern product: assumption_checks\nRepo: Va3elina/moex-aggregator\nThread: Va3elina/moex-aggregator#13\nOutcome: ambiguous_needs_more_evidence\nThread label: thread_needs_classification\nSource graph label: source_backed_multi_signal_graph\nReasons: source_graph_has_real_artifacts, source_graph_has_verification_artifacts, repo_has_isolated_helicopter_views, link_quality_high_confidence\nChain evidence:\nIssue/PR evidence chain: Va3elina/moex-aggregator#13\nRepo: Va3elina/moex-aggregator\nThread label: thread_needs_classification\nOutcome: ambiguous_needs_more_evidence\nComment count: 1\nLinked commit count: 1\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 0\nLabels: {'human_feedback_general': 1}\nPolarities: {'neutral': 1}\nChanged file labels: {}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-26bda53806ea8b18\",\n    \"kind\": \"pull_request_body\",\n    \"label\": \"human_feedback_general\",\n    \"polarity\": \"neutral\",\n    \"url\": \"https://github.com/Va3elina/moex-aggregator/pull/13\",\n    \"text\": \"GitHub feedback: human_feedback_general\\nPolarity: neutral\\nKind: pull_request_body\\nRepo: Va3elina/moex-aggregator\\nAuthor: Va3elina (User)\\nURL: https://github.com/Va3elina/moex-aggregator/pull/13\\nTitle: feat(search): \u043e\u043a\u043d\u0430 \u043f\u043e\u0438\u0441\u043a\u0430 \u0437\u0430\u043f\u043e\u043c\u0438\u043d\u0430\u044e\u0442 \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u0443\u044e \u0432\u043a\u043b\u0430\u0434\u043a\u0443\\nBody:\\n\u0412\u0441\u0435 \u043e\u043a\u043d\u0430 \u043f\u043e\u0438\u0441\u043a\u0430 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432 (InstrumentSearchModal, MobileAssetSearch, MultiInstrumentSearchModal) \u0437\u0430\u043f\u043e\u043c\u0438\u043d\u0430\u044e\u0442 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u044e\u044e \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u0443\u044e \u0432\u043a\u043b\u0430\u0434\u043a\u0443-\u043a\u0430\u0442\u0435\u0433\u043e\u0440\u0438\u044e (\u0412\u0441\u0435/\u0410\u043a\u0446\u0438\u0438/\u0412\u0430\u043b\u044e\u0442\u0430/...) \u0432 localStorage, \u043a\u043b\u044e\u0447 \u043f\u043e filterType-\u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0443. \u041f\u043e\u0438\u0441\u043a \u0431\u043e\u043b\u044c\u0448\u0435 \u043d\u0435 \u0441\u0431\u0440\u0430\u0441\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043d\u0430 \u00ab\u0412\u0441\u0435\u00bb \u043f\u0440\u0438 \u043a\u0430\u0436\u0434\u043e\u043c \u043e\u0442\u043a\u0440\u044b\u0442\u0438\u0438. \u0422\u043e\u043b\u044c\u043a\u043e \u0444\u0440\u043e\u043d\u0442.\"\n  }\n]\nChanged files:\n[]\nLinked chain ids:\n[\"evidence-chain-comment_to_commit-e83b4ce512c23379\"]\nSource graph evidence:\nSource evidence repo graph summary\nRepo: Va3elina/moex-aggregator\nGraph label: source_backed_multi_signal_graph\nNodes: 14\nEdges: 22\nNode types: {\"cooccurrence_profile\": 1, \"github_repo_summary\": 1, \"helicopter_repo_view\": 2, \"repo\": 1, \"source_artifact\": 8, \"source_bundle\": 1}\nEdge types: {\"artifact_needs_claim_verification\": 5, \"artifact_supports_verification\": 3, \"repo_has_cooccurrence_profile\": 1, \"repo_has_github_evidence_summary\": 1, \"repo_has_schemas_helicopter_view\": 2, \"repo_has_source_artifact\": 8, \"repo_has_source_bundle\": 1, \"source_bundle_uses_cooccurrence_profile\": 1}\nArtifact families: {\"ci\": 3, \"docs\": 5}\nHelicopter views: {\"schemas\": 2}\nBundle labels: {\"source_backed_fake_real_verification_bundle\": 1}\nCo-occurrence labels: {\"fake_real_data_plus_verification_gap\": 1}", "source": "foundry_mined_dataset", "repo_url": "https://github.com/Va3elina/moex-aggregator", "source_id": "comment-chain-pattern-assumption_checks-355dddb97e8f360d", "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": "Va3elina/moex-aggregator", "source_dataset": "comment_chain_patterns/assumption_checks", "training_usage": "gold_candidate"}}}, {"ruleId": "foundry_assumption_check", "level": "warning", "message": {"text": "Foundry mined assumption checks: Va3elina/moex-aggregator"}, "properties": {"repobilityId": 434402, "scanner": "foundry_dataset", "fingerprint": "34002b15097e3dc3d7cbb41ceab3be1dd4f58c02a0b267705a36be080297f113", "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": "Va3elina/moex-aggregator#12", "human_labels": ["agent_instruction_gap"], "issue_number": "12", "thread_label": "thread_has_human_issue_and_fix_context", "outcome_label": "claimed_resolved_unverified", "source_backed": true, "max_confidence": 0.92, "repo_full_name": "Va3elina/moex-aggregator", "training_usage": "gold_candidate", "confidence_tier": "high_confidence", "source_chain_id": "evidence-chain-issue_chain-ed7d56cafde19dcc", "helicopter_views": {"schemas": 2}, "artifact_families": {"ci": 3, "docs": 5}, "source_chain_kind": "issue_chain", "changed_file_count": 0, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {}, "linked_commit_count": 5, "helicopter_view_count": 2, "source_artifact_count": 8, "classification_reasons": ["source_graph_has_real_artifacts", "source_graph_has_verification_artifacts", "repo_has_isolated_helicopter_views", "link_quality_high_confidence"], "linked_ci_commit_count": 0, "verification_artifact_count": 3, "design_schema_api_artifact_count": 0}, "text": "Comment chain pattern product: assumption_checks\nRepo: Va3elina/moex-aggregator\nThread: Va3elina/moex-aggregator#12\nOutcome: claimed_resolved_unverified\nThread label: thread_has_human_issue_and_fix_context\nSource graph label: source_backed_multi_signal_graph\nReasons: source_graph_has_real_artifacts, source_graph_has_verification_artifacts, repo_has_isolated_helicopter_views, link_quality_high_confidence\nChain evidence:\nIssue/PR evidence chain: Va3elina/moex-aggregator#12\nRepo: Va3elina/moex-aggregator\nThread label: thread_has_human_issue_and_fix_context\nOutcome: claimed_resolved_unverified\nComment count: 1\nLinked commit count: 5\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 0\nLabels: {'agent_instruction_gap': 1}\nPolarities: {'bad': 1}\nChanged file labels: {}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-f86716c656682070\",\n    \"kind\": \"pull_request_body\",\n    \"label\": \"agent_instruction_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/Va3elina/moex-aggregator/pull/12\",\n    \"text\": \"GitHub feedback: agent_instruction_gap\\nPolarity: bad\\nKind: pull_request_body\\nRepo: Va3elina/moex-aggregator\\nAuthor: Va3elina (User)\\nURL: https://github.com/Va3elina/moex-aggregator/pull/12\\nTitle: fix(data): market_cap compute \u2014 cutoff-\u0434\u0430\u0442\u0430 \u0432 Python (pg8000 \u043d\u0435 \u043b\u044e\u0431\u0438\u0442 date\u2212int/ANY)\\nBody:\\ncompute_total_from_candles \u043f\u0430\u0434\u0430\u043b \u043d\u0430 pg8000: `CURRENT_DATE - :days` \u2192 \u00aboperator does\\nnot exist: date >= integer\u00bb, \u0438 `secid = ANY(:u)` \u0441\u043e \u0441\u043f\u0438\u0441\u043a\u043e\u043c. \u0424\u0438\u043a\u0441: cutoff \u0441\u0447\u0438\u0442\u0430\u044e \u0432\\nPython (date.today()-timedelta) \u0438 \u0444\u0438\u043b\u044c\u0442\u0440\u0443\u044e \u0432\u0441\u0435\u043b\u0435\u043d\u043d\u0443\u044e \u0432 Python (\u0431\u0435\u0437 SQL ANY). \u041f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435\\n\u0442\u043e \u0436\u0435 (fill-only, \u043c\u043d\u043e\u0436\u0438\u0442\u0435\u043b\u044c), \u043f\u0440\u043e\u0441\u0442\u043e \u0431\u0435\u0437 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u043d\u044b\u0445 SQL-\u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0439.\\n\\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>\\n\"\n  }\n]\nChanged files:\n[]\nLinked chain ids:\n[\"evidence-chain-comment_to_commit-af84cf36ea0c40c4\"]\nSource graph evidence:\nSource evidence repo graph summary\nRepo: Va3elina/moex-aggregator\nGraph label: source_backed_multi_signal_graph\nNodes: 14\nEdges: 22\nNode types: {\"cooccurrence_profile\": 1, \"github_repo_summary\": 1, \"helicopter_repo_view\": 2, \"repo\": 1, \"source_artifact\": 8, \"source_bundle\": 1}\nEdge types: {\"artifact_needs_claim_verification\": 5, \"artifact_supports_verification\": 3, \"repo_has_cooccurrence_profile\": 1, \"repo_has_github_evidence_summary\": 1, \"repo_has_schemas_helicopter_view\": 2, \"repo_has_source_artifact\": 8, \"repo_has_source_bundle\": 1, \"source_bundle_uses_cooccurrence_profile\": 1}\nArtifact families: {\"ci\": 3, \"docs\": 5}\nHelicopter views: {\"schemas\": 2}\nBundle labels: {\"source_backed_fake_real_verification_bundle\": 1}\nCo-occurrence labels: {\"fake_real_data_plus_verification_gap\": 1}", "source": "foundry_mined_dataset", "repo_url": "https://github.com/Va3elina/moex-aggregator", "source_id": "comment-chain-pattern-assumption_checks-2f232722e8f86f87", "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": "Va3elina/moex-aggregator", "source_dataset": "comment_chain_patterns/assumption_checks", "training_usage": "gold_candidate"}}}, {"ruleId": "foundry_assumption_check", "level": "warning", "message": {"text": "Foundry mined assumption checks: Va3elina/moex-aggregator"}, "properties": {"repobilityId": 434401, "scanner": "foundry_dataset", "fingerprint": "17216c68720db046004c1f581e890161873826cf3958267d0389a5aeff1f1c84", "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": "Va3elina/moex-aggregator#11", "human_labels": ["agent_instruction_gap"], "issue_number": "11", "thread_label": "thread_has_human_issue_and_fix_context", "outcome_label": "claimed_resolved_unverified", "source_backed": true, "max_confidence": 0.92, "repo_full_name": "Va3elina/moex-aggregator", "training_usage": "gold_candidate", "confidence_tier": "high_confidence", "source_chain_id": "evidence-chain-issue_chain-70c807b4ac3be382", "helicopter_views": {"schemas": 2}, "artifact_families": {"ci": 3, "docs": 5}, "source_chain_kind": "issue_chain", "changed_file_count": 0, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {}, "linked_commit_count": 5, "helicopter_view_count": 2, "source_artifact_count": 8, "classification_reasons": ["source_graph_has_real_artifacts", "source_graph_has_verification_artifacts", "repo_has_isolated_helicopter_views", "link_quality_high_confidence"], "linked_ci_commit_count": 0, "verification_artifact_count": 3, "design_schema_api_artifact_count": 0}, "text": "Comment chain pattern product: assumption_checks\nRepo: Va3elina/moex-aggregator\nThread: Va3elina/moex-aggregator#11\nOutcome: claimed_resolved_unverified\nThread label: thread_has_human_issue_and_fix_context\nSource graph label: source_backed_multi_signal_graph\nReasons: source_graph_has_real_artifacts, source_graph_has_verification_artifacts, repo_has_isolated_helicopter_views, link_quality_high_confidence\nChain evidence:\nIssue/PR evidence chain: Va3elina/moex-aggregator#11\nRepo: Va3elina/moex-aggregator\nThread label: thread_has_human_issue_and_fix_context\nOutcome: claimed_resolved_unverified\nComment count: 1\nLinked commit count: 5\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 0\nLabels: {'agent_instruction_gap': 1}\nPolarities: {'bad': 1}\nChanged file labels: {}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-b490fc5945a02fbc\",\n    \"kind\": \"pull_request_body\",\n    \"label\": \"agent_instruction_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/Va3elina/moex-aggregator/pull/11\",\n    \"text\": \"GitHub feedback: agent_instruction_gap\\nPolarity: bad\\nKind: pull_request_body\\nRepo: Va3elina/moex-aggregator\\nAuthor: Va3elina (User)\\nURL: https://github.com/Va3elina/moex-aggregator/pull/11\\nTitle: feat(data): gap-safe MARKET_CAP_TOTAL \u0438\u0437 \u0441\u0432\u0435\u0447\u0435\u0439 + \u0443\u0434\u0430\u043b\u0451\u043d \u043e\u043f\u0446\u0438\u043e\u043d\u043d\u044b\u0439 \u041e\u0418\\nBody:\\nmarket_cap (\u043a\u043e\u0440\u043c\u0438\u0442 \u0411\u0430\u0444\u0444\u0435\u0442\u0442\u0430) \u0431\u044b\u043b \u0441\u043d\u0438\u043c\u043a\u043e\u043c \u0442\u043e\u043b\u044c\u043a\u043e \u0437\u0430 today \u0441\u043e SmartLab \u2192\\n\u043f\u0440\u043e\u043f\u0443\u0449\u0435\u043d\u043d\u044b\u0439 \u0442\u043e\u0440\u0433\u043e\u0432\u044b\u0439 \u0434\u0435\u043d\u044c = \u0434\u044b\u0440\u0430 \u043d\u0430\u0432\u0441\u0435\u0433\u0434\u0430. \u0414\u043e\u0431\u0430\u0432\u0438\u043b compute_total_from_candles:\\n\u03a3(close\u00d7ISSUESIZE)/1e9 \u0438\u0437 \u0434\u043d\u0435\u0432\u043d\u044b\u0445 \u0441\u0432\u0435\u0447\u0435\u0439, \u043f\u0435\u0440\u0435\u0441\u0447\u0451\u0442 \u043e\u043a\u043d\u0430 45\u0434, FILL-ONLY (\u0440\u0435\u0430\u043b\u044c\u043d\u044b\u0435\\nSmartLab/GuruFocus-\u044f\u043a\u043e\u0440\u044f \u043d\u0435 \u043f\u0435\u0440\u0435\u0442\u0438\u0440\u0430\u0435\u043c), \u0443\u0440\u043e\u0432\u0435\u043d\u044c \u043a\u0430\u043b\u0438\u0431\u0440\u0443\u0435\u0442\u0441\u044f \u043c\u043d\u043e\u0436\u0438\u0442\u0435\u043b\u0435\u043c \u043a \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u043c\u0443\\nSmartLab. \u0421\u0430\u043c\u043e\u0437\u0430\u043b\u0435\u0447\u0438\u0432\u0430\u0435\u0442\u0441\u044f, \u043a\u0430\u043a breadth. ISSUESIZE = \u0432\u044b\u043f\u0443\u0449\u0435\u043d\u043d\u044b\u0435 \u0430\u043a\u0446\u0438\u0438 (\u0432\u043a\u043b.\\n\u0437\u0430\u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435) \u2192 \u043c\u0435\u0442\u043e\u0434\u043e\u043b\u043e\u0433\u0438\u044f \u043a\u0430\u043a \u0443 SmartLab.\\n\\n\u041e\u043f\u0446\u0438\u043e\u043d\u043d\u044b\u0439 \u041e\u0418 \u0443\u0434\u0430\u043b\u0451\u043d \u0446\u0435\u043b\u0438\u043a\u043e\u043c (\u043d\u0435 \u043d\u0443\u0436\u0435\u043d; pinning-\u0444\u0438\u0447\u0430 \u043d\u0435 \u0441\u0442\u0440\u043e\u0438\u043b\u0430\u0441\u044c): \u0441\u043a\u0440\u0438\u043f\u0442\\nsnapshot_option_oi.py + host-cron + \u0442\u0430\u0431\u043b\u0438\u0446\u0430 option_oi (\u0434\u0440\u043e\u043f\u043d\u0443\u0442\u0430 \u043d\u0430 \u043f\u0440\u043e\u0434\u0435,\\npg_dump-\u0431\u044d\u043a\u0430\u043f \u0432 /opt/frame/backups/). \u041d\u0438 \u0431\u044d\u043a, \u043d\u0438 \u0444\u0440\u043e\u043d\u0442 \u0435\u0433\u043e \u043d\u0435 \u0447\u0438\u0442\u0430\u043b\u0438.\\n\\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>\\n\"\n  }\n]\nChanged files:\n[]\nLinked chain ids:\n[\"evidence-chain-comment_to_commit-2d1d057e28a4a48a\"]\nSource graph evidence:\nSource evidence repo graph summary\nRepo: Va3elina/moex-aggregator\nGraph label: source_backed_multi_signal_graph\nNodes: 14\nEdges: 22\nNode types: {\"cooccurrence_profile\": 1, \"github_repo_summary\": 1, \"helicopter_repo_view\": 2, \"repo\": 1, \"source_artifact\": 8, \"source_bundle\": 1}\nEdge types: {\"artifact_needs_claim_verification\": 5, \"artifact_supports_verification\": 3, \"repo_has_cooccurrence_profile\": 1, \"repo_has_github_evidence_summary\": 1, \"repo_has_schemas_helicopter_view\": 2, \"repo_has_source_artifact\": 8, \"repo_has_source_bundle\": 1, \"source_bundle_uses_cooccurrence_profile\": 1}\nArtifact families: {\"ci\": 3, \"docs\": 5}\nHelicopter views: {\"schemas\": 2}\nBundle labels: {\"source_backed_fake_real_verification_bundle\": 1}\nCo-occurrence labels: {\"fake_real_data_plus_verification_gap\": 1}", "source": "foundry_mined_dataset", "repo_url": "https://github.com/Va3elina/moex-aggregator", "source_id": "comment-chain-pattern-assumption_checks-919a2c550fcb981f", "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": "Va3elina/moex-aggregator", "source_dataset": "comment_chain_patterns/assumption_checks", "training_usage": "gold_candidate"}}}, {"ruleId": "foundry_assumption_check", "level": "warning", "message": {"text": "Foundry mined assumption checks: Va3elina/moex-aggregator"}, "properties": {"repobilityId": 434400, "scanner": "foundry_dataset", "fingerprint": "40d1373b050d970724139630c0d1ee18a0a56255b6e2edd709c84ad3a26a3ae1", "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": "Va3elina/moex-aggregator#10", "human_labels": ["agent_instruction_gap"], "issue_number": "10", "thread_label": "thread_has_human_issue_and_fix_context", "outcome_label": "claimed_resolved_unverified", "source_backed": true, "max_confidence": 0.92, "repo_full_name": "Va3elina/moex-aggregator", "training_usage": "gold_candidate", "confidence_tier": "high_confidence", "source_chain_id": "evidence-chain-issue_chain-93bf43bdaa37c8f5", "helicopter_views": {"schemas": 2}, "artifact_families": {"ci": 3, "docs": 5}, "source_chain_kind": "issue_chain", "changed_file_count": 0, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {}, "linked_commit_count": 5, "helicopter_view_count": 2, "source_artifact_count": 8, "classification_reasons": ["source_graph_has_real_artifacts", "source_graph_has_verification_artifacts", "repo_has_isolated_helicopter_views", "link_quality_high_confidence"], "linked_ci_commit_count": 0, "verification_artifact_count": 3, "design_schema_api_artifact_count": 0}, "text": "Comment chain pattern product: assumption_checks\nRepo: Va3elina/moex-aggregator\nThread: Va3elina/moex-aggregator#10\nOutcome: claimed_resolved_unverified\nThread label: thread_has_human_issue_and_fix_context\nSource graph label: source_backed_multi_signal_graph\nReasons: source_graph_has_real_artifacts, source_graph_has_verification_artifacts, repo_has_isolated_helicopter_views, link_quality_high_confidence\nChain evidence:\nIssue/PR evidence chain: Va3elina/moex-aggregator#10\nRepo: Va3elina/moex-aggregator\nThread label: thread_has_human_issue_and_fix_context\nOutcome: claimed_resolved_unverified\nComment count: 1\nLinked commit count: 5\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 0\nLabels: {'agent_instruction_gap': 1}\nPolarities: {'bad': 1}\nChanged file labels: {}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-6f166df8e5e82c51\",\n    \"kind\": \"pull_request_body\",\n    \"label\": \"agent_instruction_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/Va3elina/moex-aggregator/pull/10\",\n    \"text\": \"GitHub feedback: agent_instruction_gap\\nPolarity: bad\\nKind: pull_request_body\\nRepo: Va3elina/moex-aggregator\\nAuthor: Va3elina (User)\\nURL: https://github.com/Va3elina/moex-aggregator/pull/10\\nTitle: feat(controls): hover-\u043f\u043e\u0434\u0441\u0432\u0435\u0442\u043a\u0430 \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u043e\u0432 (\u043f\u0440\u0435\u0434-\u043d\u0430\u0436\u0438\u043c)\\nBody:\\nSegmentedControl (\u0442\u0430\u0439\u043c\u0444\u0440\u0435\u0439\u043c\u044b/\u043f\u0435\u0440\u0438\u043e\u0434\u044b/\u0440\u0435\u0436\u0438\u043c\u044b \u0421\u0427\u0410\u00b7\u041f\u0440\u0438\u0442\u043e\u043a\u0438 \u0438 \u0442.\u043f.) \u043d\u0435 \u0434\u0430\u0432\u0430\u043b\\n\u0432\u0438\u0437\u0443\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0444\u0438\u0434\u0431\u0435\u043a\u0430 \u043f\u0440\u0438 \u043d\u0430\u0432\u0435\u0434\u0435\u043d\u0438\u0438 \u0434\u043e \u043a\u043b\u0438\u043a\u0430. \u041d\u0435\u0430\u043a\u0442\u0438\u0432\u043d\u044b\u0439 \u0441\u0435\u0433\u043c\u0435\u043d\u0442 \u043f\u0440\u0438 \u043d\u0430\u0432\u0435\u0434\u0435\u043d\u0438\u0438\\n\u0442\u0435\u043f\u0435\u0440\u044c \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442 \u043b\u0451\u0433\u043a\u0443\u044e accent-\u043f\u043e\u0434\u0441\u0432\u0435\u0442\u043a\u0443 \u0444\u043e\u043d\u0430 (color-mix accent 18%, \u043a\u0430\u043a \u0443\\ninactive dropdown-item) \u0447\u0435\u0440\u0435\u0437 hover-state; transition \u0443\u0436\u0435 \u0431\u044b\u043b. active/muted\\n\u043d\u0435 \u0437\u0430\u0442\u0440\u043e\u043d\u0443\u0442\u044b.\\n\\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>\\n\"\n  }\n]\nChanged files:\n[]\nLinked chain ids:\n[\"evidence-chain-comment_to_commit-1675ea172226961c\"]\nSource graph evidence:\nSource evidence repo graph summary\nRepo: Va3elina/moex-aggregator\nGraph label: source_backed_multi_signal_graph\nNodes: 14\nEdges: 22\nNode types: {\"cooccurrence_profile\": 1, \"github_repo_summary\": 1, \"helicopter_repo_view\": 2, \"repo\": 1, \"source_artifact\": 8, \"source_bundle\": 1}\nEdge types: {\"artifact_needs_claim_verification\": 5, \"artifact_supports_verification\": 3, \"repo_has_cooccurrence_profile\": 1, \"repo_has_github_evidence_summary\": 1, \"repo_has_schemas_helicopter_view\": 2, \"repo_has_source_artifact\": 8, \"repo_has_source_bundle\": 1, \"source_bundle_uses_cooccurrence_profile\": 1}\nArtifact families: {\"ci\": 3, \"docs\": 5}\nHelicopter views: {\"schemas\": 2}\nBundle labels: {\"source_backed_fake_real_verification_bundle\": 1}\nCo-occurrence labels: {\"fake_real_data_plus_verification_gap\": 1}", "source": "foundry_mined_dataset", "repo_url": "https://github.com/Va3elina/moex-aggregator", "source_id": "comment-chain-pattern-assumption_checks-0523419c726983a8", "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": "Va3elina/moex-aggregator", "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: Va3elina/moex-aggregator"}, "properties": {"repobilityId": 457915, "scanner": "foundry_dataset", "fingerprint": "1a1e4076fe8497f3a15e74822d1dae18f3472512b4adee9c268dc80c0012200e", "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": 5, "test_ci_gap": 1, "source_or_other": 1, "claimed_resolved_unverified": 3, "issue_or_pull_request_thread": 1, "human_reported_issue_then_fix_attempt": 1, "thread_has_human_issue_and_fix_context": 2}, "source": "graph_query_export", "motif_id": "test_ci_gap_after_feedback", "outcomes": {"claimed_resolved_unverified": 6}, "polarity": "bad", "query_id": "test_ci_gap_after_feedback", "severity": "high", "ci_labels": {}, "synthetic": false, "edge_count": 19, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 1, "thread_has_comment": 1, "thread_touches_file": 1, "chain_has_link_quality": 3, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "issue_chain_touches_file": 1, "thread_has_comment_chain": 1, "comment_chain_links_commit": 5, "comment_chain_touches_file": 1, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 1}, "node_count": 15, "node_types": {"repo": 1, "commit": 5, "thread": 1, "comment": 1, "pr_file": 1, "fix_outcome": 1, "issue_chain": 1, "link_quality": 3, "comment_chain": 1}, "query_type": "motif_query", "thread_key": "Va3elina/moex-aggregator#75", "issue_number": "75", "quality_tiers": {"high_confidence": 3}, "repo_full_name": "Va3elina/moex-aggregator", "training_usage": "hard_negative", "source_motif_id": "graph-pattern-motif-thread-1bb0ee562c60c27f", "graph_gold_label": "supported_by_high_confidence_link", "changed_file_labels": {"source_or_other": 4}}, "text": "Graph query export: Feedback exposes missing tests or CI\nQuery id: test_ci_gap_after_feedback\nQuery type: motif_query\nIntent: Hard negatives for feedback/fix chains without adequate guardrails.\nMotif: test_ci_gap_after_feedback\nTraining usage: hard_negative\nGraph gold label: supported_by_high_confidence_link\nRepo: Va3elina/moex-aggregator\nThread: Va3elina/moex-aggregator#75\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: Va3elina/moex-aggregator\nThread: Va3elina/moex-aggregator#75\nGraph gold label: supported_by_high_confidence_link\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: Va3elina/moex-aggregator#75\nRepo: Va3elina/moex-aggregator\nIssue/PR number: 75\nGraph consistency label: supported_by_high_confidence_link\nNodes: 15\nEdges: 19\nNode types: {'commit': 5, 'link_quality': 3, 'thread': 1, 'repo': 1, 'comment': 1, 'pr_file': 1, 'comment_chain': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'comment_chain_links_commit': 5, 'chain_has_link_quality': 3, 'repo_has_thread': 1, 'thread_has_comment': 1, 'thread_touches_file': 1, 'thread_has_comment_chain': 1, 'comment_has_chain': 1, 'comment_chain_touches_file': 1, 'thread_has_issue_chain': 1, 'issue_chain_has_comment_chain': 1, 'issue_chain_touches_file': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'bug_fix': 5, 'claimed_resolved_unverified': 3, 'thread_has_human_issue_and_fix_context': 2, 'issue_or_pull_request_thread': 1, 'test_ci_gap': 1, 'source_or_other': 1, 'human_reported_issue_then_fix_attempt': 1}\nOutcomes: {'claimed_resolved_unverified': 6}\nQuality tiers: {'high_confidence': 3}\nCI labels: {}\nCurriculum targets:\n- Turn human feedback into regression tests and CI gates.\n- Penalize fixes that do not add or exercise verification for affected workflows.\nAssumption checks:\n- Did the fix add tests for the exact complaint?\n- Does CI run those tests, or is verification only implied?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/Va3elina/moex-aggregator", "source_id": "graph-query-motif_query-f56b3fe8450d3a9e", "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": "Va3elina/moex-aggregator", "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: Va3elina/moex-aggregator"}, "properties": {"repobilityId": 457914, "scanner": "foundry_dataset", "fingerprint": "f5d11b08a774dbd72781791dc86e94ed0774ac7fbe1b60b0d353b44ada5ca838", "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, "commit_general": 1, "issue_or_pull_request_thread": 1, "ambiguous_needs_more_evidence": 3, "test_gap_without_verification_commit": 1, "thread_has_human_issue_and_fix_context": 2}, "source": "graph_query_export", "motif_id": "test_ci_gap_after_feedback", "outcomes": {"ambiguous_needs_more_evidence": 6}, "polarity": "bad", "query_id": "test_ci_gap_after_feedback", "severity": "high", "ci_labels": {}, "synthetic": false, "edge_count": 12, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 1, "thread_has_comment": 1, "chain_has_link_quality": 3, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 1, "comment_chain_links_commit": 1, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 1}, "node_count": 10, "node_types": {"repo": 1, "commit": 1, "thread": 1, "comment": 1, "fix_outcome": 1, "issue_chain": 1, "link_quality": 3, "comment_chain": 1}, "query_type": "motif_query", "thread_key": "Va3elina/moex-aggregator#60", "issue_number": "60", "quality_tiers": {"weak_supervision": 3}, "repo_full_name": "Va3elina/moex-aggregator", "training_usage": "hard_negative", "source_motif_id": "graph-pattern-motif-thread-6e8c48e50a33bf53", "graph_gold_label": "weak_supervision_needs_review", "changed_file_labels": {}}, "text": "Graph query export: Feedback exposes missing tests or CI\nQuery id: test_ci_gap_after_feedback\nQuery type: motif_query\nIntent: Hard negatives for feedback/fix chains without adequate guardrails.\nMotif: test_ci_gap_after_feedback\nTraining usage: hard_negative\nGraph gold label: weak_supervision_needs_review\nRepo: Va3elina/moex-aggregator\nThread: Va3elina/moex-aggregator#60\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: Va3elina/moex-aggregator\nThread: Va3elina/moex-aggregator#60\nGraph gold label: weak_supervision_needs_review\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: Va3elina/moex-aggregator#60\nRepo: Va3elina/moex-aggregator\nIssue/PR number: 60\nGraph consistency label: weak_supervision_needs_review\nNodes: 10\nEdges: 12\nNode types: {'link_quality': 3, 'thread': 1, 'repo': 1, 'comment': 1, 'comment_chain': 1, 'commit': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'chain_has_link_quality': 3, 'repo_has_thread': 1, 'thread_has_comment': 1, 'thread_has_comment_chain': 1, 'comment_has_chain': 1, 'comment_chain_links_commit': 1, 'thread_has_issue_chain': 1, 'issue_chain_has_comment_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'ambiguous_needs_more_evidence': 3, 'thread_has_human_issue_and_fix_context': 2, 'issue_or_pull_request_thread': 1, 'test_ci_gap': 1, 'test_gap_without_verification_commit': 1, 'commit_general': 1}\nOutcomes: {'ambiguous_needs_more_evidence': 6}\nQuality tiers: {'weak_supervision': 3}\nCI labels: {}\nCurriculum targets:\n- Turn human feedback into regression tests and CI gates.\n- Penalize fixes that do not add or exercise verification for affected workflows.\nAssumption checks:\n- Did the fix add tests for the exact complaint?\n- Does CI run those tests, or is verification only implied?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/Va3elina/moex-aggregator", "source_id": "graph-query-motif_query-ef9f7206c5196f7d", "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": "Va3elina/moex-aggregator", "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: Va3elina/moex-aggregator"}, "properties": {"repobilityId": 457913, "scanner": "foundry_dataset", "fingerprint": "49397fa4fb42f19bb01ae68388d68709fd131d8e43e5cf9035bce9ca269da5ed", "category": "testing", "severity": "high", "confidence": 0.78, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Imported from mined Foundry/Fable5 evidence with real GitHub/source provenance. Review source_id before acting.", "evidence": {"meta": {"kind": "graph_query_record", "title": "Feedback exposes missing tests or CI", "intent": "Hard negatives for feedback/fix chains without adequate guardrails.", "labels": {"bug_fix": 1, "test_ci_gap": 1, "commit_general": 2, "claimed_resolved_unverified": 3, "issue_or_pull_request_thread": 1, "human_reported_issue_then_fix_attempt": 1, "thread_has_human_issue_and_fix_context": 2}, "source": "graph_query_export", "motif_id": "test_ci_gap_after_feedback", "outcomes": {"claimed_resolved_unverified": 6}, "polarity": "bad", "query_id": "test_ci_gap_after_feedback", "severity": "high", "ci_labels": {}, "synthetic": false, "edge_count": 14, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 1, "thread_has_comment": 1, "chain_has_link_quality": 3, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 1, "comment_chain_links_commit": 3, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 1}, "node_count": 12, "node_types": {"repo": 1, "commit": 3, "thread": 1, "comment": 1, "fix_outcome": 1, "issue_chain": 1, "link_quality": 3, "comment_chain": 1}, "query_type": "motif_query", "thread_key": "Va3elina/moex-aggregator#56", "issue_number": "56", "quality_tiers": {"weak_supervision": 3}, "repo_full_name": "Va3elina/moex-aggregator", "training_usage": "hard_negative", "source_motif_id": "graph-pattern-motif-thread-94f923fe59d75f8a", "graph_gold_label": "weak_supervision_needs_review", "changed_file_labels": {}}, "text": "Graph query export: Feedback exposes missing tests or CI\nQuery id: test_ci_gap_after_feedback\nQuery type: motif_query\nIntent: Hard negatives for feedback/fix chains without adequate guardrails.\nMotif: test_ci_gap_after_feedback\nTraining usage: hard_negative\nGraph gold label: weak_supervision_needs_review\nRepo: Va3elina/moex-aggregator\nThread: Va3elina/moex-aggregator#56\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: Va3elina/moex-aggregator\nThread: Va3elina/moex-aggregator#56\nGraph gold label: weak_supervision_needs_review\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: Va3elina/moex-aggregator#56\nRepo: Va3elina/moex-aggregator\nIssue/PR number: 56\nGraph consistency label: weak_supervision_needs_review\nNodes: 12\nEdges: 14\nNode types: {'commit': 3, 'link_quality': 3, 'thread': 1, 'repo': 1, 'comment': 1, 'comment_chain': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'comment_chain_links_commit': 3, 'chain_has_link_quality': 3, 'repo_has_thread': 1, 'thread_has_comment': 1, 'thread_has_comment_chain': 1, 'comment_has_chain': 1, 'thread_has_issue_chain': 1, 'issue_chain_has_comment_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'claimed_resolved_unverified': 3, 'commit_general': 2, 'thread_has_human_issue_and_fix_context': 2, 'issue_or_pull_request_thread': 1, 'test_ci_gap': 1, 'human_reported_issue_then_fix_attempt': 1, 'bug_fix': 1}\nOutcomes: {'claimed_resolved_unverified': 6}\nQuality tiers: {'weak_supervision': 3}\nCI labels: {}\nCurriculum targets:\n- Turn human feedback into regression tests and CI gates.\n- Penalize fixes that do not add or exercise verification for affected workflows.\nAssumption checks:\n- Did the fix add tests for the exact complaint?\n- Does CI run those tests, or is verification only implied?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/Va3elina/moex-aggregator", "source_id": "graph-query-motif_query-d82d67a71ec55ad9", "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": "Va3elina/moex-aggregator", "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: Va3elina/moex-aggregator"}, "properties": {"repobilityId": 457912, "scanner": "foundry_dataset", "fingerprint": "865b2ca98575b201a5e1ac4557f4d9d3cc90e0b1277d305ab1129ede83fc5080", "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": 3, "test_ci_gap": 1, "verification_or_tests": 2, "issue_or_pull_request_thread": 1, "thread_has_human_issue_and_fix_context": 2, "claimed_resolved_with_verification_signal": 3, "human_reported_issue_then_verified_fix_attempt": 1}, "source": "graph_query_export", "motif_id": "test_ci_gap_after_feedback", "outcomes": {"claimed_resolved_with_verification_signal": 6}, "polarity": "bad", "query_id": "test_ci_gap_after_feedback", "severity": "high", "ci_labels": {}, "synthetic": false, "edge_count": 16, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 1, "thread_has_comment": 1, "chain_has_link_quality": 3, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 1, "comment_chain_links_commit": 5, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 1}, "node_count": 14, "node_types": {"repo": 1, "commit": 5, "thread": 1, "comment": 1, "fix_outcome": 1, "issue_chain": 1, "link_quality": 3, "comment_chain": 1}, "query_type": "motif_query", "thread_key": "Va3elina/moex-aggregator#4", "issue_number": "4", "quality_tiers": {"high_confidence": 3}, "repo_full_name": "Va3elina/moex-aggregator", "training_usage": "hard_negative", "source_motif_id": "graph-pattern-motif-thread-4ad71e553c2317ea", "graph_gold_label": "supported_by_verification_signal", "changed_file_labels": {}}, "text": "Graph query export: Feedback exposes missing tests or CI\nQuery id: test_ci_gap_after_feedback\nQuery type: motif_query\nIntent: Hard negatives for feedback/fix chains without adequate guardrails.\nMotif: test_ci_gap_after_feedback\nTraining usage: hard_negative\nGraph gold label: supported_by_verification_signal\nRepo: Va3elina/moex-aggregator\nThread: Va3elina/moex-aggregator#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: Va3elina/moex-aggregator\nThread: Va3elina/moex-aggregator#4\nGraph gold label: supported_by_verification_signal\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: Va3elina/moex-aggregator#4\nRepo: Va3elina/moex-aggregator\nIssue/PR number: 4\nGraph consistency label: supported_by_verification_signal\nNodes: 14\nEdges: 16\nNode types: {'commit': 5, 'link_quality': 3, 'thread': 1, 'repo': 1, 'comment': 1, 'comment_chain': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'comment_chain_links_commit': 5, 'chain_has_link_quality': 3, 'repo_has_thread': 1, 'thread_has_comment': 1, 'thread_has_comment_chain': 1, 'comment_has_chain': 1, 'thread_has_issue_chain': 1, 'issue_chain_has_comment_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'bug_fix': 3, 'claimed_resolved_with_verification_signal': 3, 'verification_or_tests': 2, 'thread_has_human_issue_and_fix_context': 2, 'issue_or_pull_request_thread': 1, 'test_ci_gap': 1, 'human_reported_issue_then_verified_fix_attempt': 1}\nOutcomes: {'claimed_resolved_with_verification_signal': 6}\nQuality tiers: {'high_confidence': 3}\nCI labels: {}\nCurriculum targets:\n- Turn human feedback into regression tests and CI gates.\n- Penalize fixes that do not add or exercise verification for affected workflows.\nAssumption checks:\n- Did the fix add tests for the exact complaint?\n- Does CI run those tests, or is verification only implied?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/Va3elina/moex-aggregator", "source_id": "graph-query-motif_query-888cdc1852bb4567", "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": "Va3elina/moex-aggregator", "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: Va3elina/moex-aggregator"}, "properties": {"repobilityId": 457911, "scanner": "foundry_dataset", "fingerprint": "961465caa95e335b13008d8c3a8ba30349ae0fb03cfa43465bbae03586845905", "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, "api_integration_gap": 1, "dependency_or_build": 2, "issue_or_pull_request_thread": 1, "not_resolved_or_not_observed": 4, "human_reported_issue_no_linked_fix": 2, "thread_has_human_issue_without_fix_context": 2}, "source": "graph_query_export", "motif_id": "test_ci_gap_after_feedback", "outcomes": {"not_resolved_or_not_observed": 8}, "polarity": "bad", "query_id": "test_ci_gap_after_feedback", "severity": "high", "ci_labels": {}, "synthetic": false, "edge_count": 24, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 2, "thread_has_comment": 2, "thread_touches_file": 2, "chain_has_link_quality": 4, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "issue_chain_touches_file": 2, "thread_has_comment_chain": 2, "comment_chain_touches_file": 4, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 2}, "node_count": 14, "node_types": {"repo": 1, "thread": 1, "comment": 2, "pr_file": 2, "fix_outcome": 1, "issue_chain": 1, "link_quality": 4, "comment_chain": 2}, "query_type": "motif_query", "thread_key": "Va3elina/moex-aggregator#28", "issue_number": "28", "quality_tiers": {"unresolved": 4}, "repo_full_name": "Va3elina/moex-aggregator", "training_usage": "hard_negative", "source_motif_id": "graph-pattern-motif-thread-c2e1401074ea822e", "graph_gold_label": "needs_more_evidence", "changed_file_labels": {"dependency_or_build": 10}}, "text": "Graph query export: Feedback exposes missing tests or CI\nQuery id: test_ci_gap_after_feedback\nQuery type: motif_query\nIntent: Hard negatives for feedback/fix chains without adequate guardrails.\nMotif: test_ci_gap_after_feedback\nTraining usage: hard_negative\nGraph gold label: needs_more_evidence\nRepo: Va3elina/moex-aggregator\nThread: Va3elina/moex-aggregator#28\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: Va3elina/moex-aggregator\nThread: Va3elina/moex-aggregator#28\nGraph gold label: needs_more_evidence\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: Va3elina/moex-aggregator#28\nRepo: Va3elina/moex-aggregator\nIssue/PR number: 28\nGraph consistency label: needs_more_evidence\nNodes: 14\nEdges: 24\nNode types: {'link_quality': 4, 'comment': 2, 'pr_file': 2, 'comment_chain': 2, 'thread': 1, 'repo': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'comment_chain_touches_file': 4, 'chain_has_link_quality': 4, 'thread_has_comment': 2, 'thread_touches_file': 2, 'thread_has_comment_chain': 2, 'comment_has_chain': 2, 'issue_chain_has_comment_chain': 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': 4, 'dependency_or_build': 2, 'human_reported_issue_no_linked_fix': 2, 'thread_has_human_issue_without_fix_context': 2, 'issue_or_pull_request_thread': 1, 'test_ci_gap': 1, 'api_integration_gap': 1}\nOutcomes: {'not_resolved_or_not_observed': 8}\nQuality tiers: {'unresolved': 4}\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/Va3elina/moex-aggregator", "source_id": "graph-query-motif_query-2a9f1d9437431c79", "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": "Va3elina/moex-aggregator", "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: Va3elina/moex-aggregator"}, "properties": {"repobilityId": 457910, "scanner": "foundry_dataset", "fingerprint": "b3cd682c744c37d57bc2c46762e9c90daab65e755532024154dfb0a50f15fd7e", "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, "api_integration_gap": 1, "issue_or_pull_request_thread": 1, "not_resolved_or_not_observed": 4, "human_reported_issue_no_linked_fix": 2, "thread_has_human_issue_without_fix_context": 2}, "source": "graph_query_export", "motif_id": "test_ci_gap_after_feedback", "outcomes": {"not_resolved_or_not_observed": 8}, "polarity": "bad", "query_id": "test_ci_gap_after_feedback", "severity": "high", "ci_labels": {}, "synthetic": false, "edge_count": 16, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 2, "thread_has_comment": 2, "chain_has_link_quality": 4, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 2, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 2}, "node_count": 12, "node_types": {"repo": 1, "thread": 1, "comment": 2, "fix_outcome": 1, "issue_chain": 1, "link_quality": 4, "comment_chain": 2}, "query_type": "motif_query", "thread_key": "Va3elina/moex-aggregator#23", "issue_number": "23", "quality_tiers": {"unresolved": 4}, "repo_full_name": "Va3elina/moex-aggregator", "training_usage": "hard_negative", "source_motif_id": "graph-pattern-motif-thread-3ff89dfca8b66d3a", "graph_gold_label": "needs_more_evidence", "changed_file_labels": {}}, "text": "Graph query export: Feedback exposes missing tests or CI\nQuery id: test_ci_gap_after_feedback\nQuery type: motif_query\nIntent: Hard negatives for feedback/fix chains without adequate guardrails.\nMotif: test_ci_gap_after_feedback\nTraining usage: hard_negative\nGraph gold label: needs_more_evidence\nRepo: Va3elina/moex-aggregator\nThread: Va3elina/moex-aggregator#23\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: Va3elina/moex-aggregator\nThread: Va3elina/moex-aggregator#23\nGraph gold label: needs_more_evidence\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: Va3elina/moex-aggregator#23\nRepo: Va3elina/moex-aggregator\nIssue/PR number: 23\nGraph consistency label: needs_more_evidence\nNodes: 12\nEdges: 16\nNode types: {'link_quality': 4, 'comment': 2, 'comment_chain': 2, 'thread': 1, 'repo': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'chain_has_link_quality': 4, 'thread_has_comment': 2, 'thread_has_comment_chain': 2, 'comment_has_chain': 2, 'issue_chain_has_comment_chain': 2, 'repo_has_thread': 1, 'thread_has_issue_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'not_resolved_or_not_observed': 4, 'human_reported_issue_no_linked_fix': 2, 'thread_has_human_issue_without_fix_context': 2, 'issue_or_pull_request_thread': 1, 'test_ci_gap': 1, 'api_integration_gap': 1}\nOutcomes: {'not_resolved_or_not_observed': 8}\nQuality tiers: {'unresolved': 4}\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/Va3elina/moex-aggregator", "source_id": "graph-query-motif_query-b5f6e18fef51d791", "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": "Va3elina/moex-aggregator", "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: Va3elina/moex-aggregator"}, "properties": {"repobilityId": 457909, "scanner": "foundry_dataset", "fingerprint": "b1d5483f4b4f9faa9f78349900a703eef591089b8890ac92dd78f5fdec421c7c", "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, "api_integration_gap": 1, "issue_or_pull_request_thread": 1, "not_resolved_or_not_observed": 4, "human_reported_issue_no_linked_fix": 2, "thread_has_human_issue_without_fix_context": 2}, "source": "graph_query_export", "motif_id": "test_ci_gap_after_feedback", "outcomes": {"not_resolved_or_not_observed": 8}, "polarity": "bad", "query_id": "test_ci_gap_after_feedback", "severity": "high", "ci_labels": {}, "synthetic": false, "edge_count": 16, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 2, "thread_has_comment": 2, "chain_has_link_quality": 4, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 2, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 2}, "node_count": 12, "node_types": {"repo": 1, "thread": 1, "comment": 2, "fix_outcome": 1, "issue_chain": 1, "link_quality": 4, "comment_chain": 2}, "query_type": "motif_query", "thread_key": "Va3elina/moex-aggregator#21", "issue_number": "21", "quality_tiers": {"unresolved": 4}, "repo_full_name": "Va3elina/moex-aggregator", "training_usage": "hard_negative", "source_motif_id": "graph-pattern-motif-thread-815d87fd90c63af0", "graph_gold_label": "needs_more_evidence", "changed_file_labels": {}}, "text": "Graph query export: Feedback exposes missing tests or CI\nQuery id: test_ci_gap_after_feedback\nQuery type: motif_query\nIntent: Hard negatives for feedback/fix chains without adequate guardrails.\nMotif: test_ci_gap_after_feedback\nTraining usage: hard_negative\nGraph gold label: needs_more_evidence\nRepo: Va3elina/moex-aggregator\nThread: Va3elina/moex-aggregator#21\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: Va3elina/moex-aggregator\nThread: Va3elina/moex-aggregator#21\nGraph gold label: needs_more_evidence\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: Va3elina/moex-aggregator#21\nRepo: Va3elina/moex-aggregator\nIssue/PR number: 21\nGraph consistency label: needs_more_evidence\nNodes: 12\nEdges: 16\nNode types: {'link_quality': 4, 'comment': 2, 'comment_chain': 2, 'thread': 1, 'repo': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'chain_has_link_quality': 4, 'thread_has_comment': 2, 'thread_has_comment_chain': 2, 'comment_has_chain': 2, 'issue_chain_has_comment_chain': 2, 'repo_has_thread': 1, 'thread_has_issue_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'not_resolved_or_not_observed': 4, 'human_reported_issue_no_linked_fix': 2, 'thread_has_human_issue_without_fix_context': 2, 'issue_or_pull_request_thread': 1, 'test_ci_gap': 1, 'api_integration_gap': 1}\nOutcomes: {'not_resolved_or_not_observed': 8}\nQuality tiers: {'unresolved': 4}\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/Va3elina/moex-aggregator", "source_id": "graph-query-motif_query-f1bd1885e41567aa", "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": "Va3elina/moex-aggregator", "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: Va3elina/moex-aggregator"}, "properties": {"repobilityId": 457908, "scanner": "foundry_dataset", "fingerprint": "911df89e2a907513dd307151e52244bdda1be44b5e5f00d6169142a49c977fea", "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, "api_integration_gap": 1, "issue_or_pull_request_thread": 1, "not_resolved_or_not_observed": 4, "human_reported_issue_no_linked_fix": 2, "thread_has_human_issue_without_fix_context": 2}, "source": "graph_query_export", "motif_id": "test_ci_gap_after_feedback", "outcomes": {"not_resolved_or_not_observed": 8}, "polarity": "bad", "query_id": "test_ci_gap_after_feedback", "severity": "high", "ci_labels": {}, "synthetic": false, "edge_count": 16, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 2, "thread_has_comment": 2, "chain_has_link_quality": 4, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 2, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 2}, "node_count": 12, "node_types": {"repo": 1, "thread": 1, "comment": 2, "fix_outcome": 1, "issue_chain": 1, "link_quality": 4, "comment_chain": 2}, "query_type": "motif_query", "thread_key": "Va3elina/moex-aggregator#20", "issue_number": "20", "quality_tiers": {"unresolved": 4}, "repo_full_name": "Va3elina/moex-aggregator", "training_usage": "hard_negative", "source_motif_id": "graph-pattern-motif-thread-4c2ba1a1934a6d00", "graph_gold_label": "needs_more_evidence", "changed_file_labels": {}}, "text": "Graph query export: Feedback exposes missing tests or CI\nQuery id: test_ci_gap_after_feedback\nQuery type: motif_query\nIntent: Hard negatives for feedback/fix chains without adequate guardrails.\nMotif: test_ci_gap_after_feedback\nTraining usage: hard_negative\nGraph gold label: needs_more_evidence\nRepo: Va3elina/moex-aggregator\nThread: Va3elina/moex-aggregator#20\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: Va3elina/moex-aggregator\nThread: Va3elina/moex-aggregator#20\nGraph gold label: needs_more_evidence\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: Va3elina/moex-aggregator#20\nRepo: Va3elina/moex-aggregator\nIssue/PR number: 20\nGraph consistency label: needs_more_evidence\nNodes: 12\nEdges: 16\nNode types: {'link_quality': 4, 'comment': 2, 'comment_chain': 2, 'thread': 1, 'repo': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'chain_has_link_quality': 4, 'thread_has_comment': 2, 'thread_has_comment_chain': 2, 'comment_has_chain': 2, 'issue_chain_has_comment_chain': 2, 'repo_has_thread': 1, 'thread_has_issue_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'not_resolved_or_not_observed': 4, 'human_reported_issue_no_linked_fix': 2, 'thread_has_human_issue_without_fix_context': 2, 'issue_or_pull_request_thread': 1, 'test_ci_gap': 1, 'api_integration_gap': 1}\nOutcomes: {'not_resolved_or_not_observed': 8}\nQuality tiers: {'unresolved': 4}\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/Va3elina/moex-aggregator", "source_id": "graph-query-motif_query-6f2e583214662d3d", "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": "Va3elina/moex-aggregator", "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: Va3elina/moex-aggregator"}, "properties": {"repobilityId": 457907, "scanner": "foundry_dataset", "fingerprint": "a51073f604d9217e35c143de571fac3ae5d6f6fb0813be8c3207597dee77995e", "category": "testing", "severity": "high", "confidence": 0.78, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Imported from mined Foundry/Fable5 evidence with real GitHub/source provenance. Review source_id before acting.", "evidence": {"meta": {"kind": "graph_query_record", "title": "Feedback exposes missing tests or CI", "intent": "Hard negatives for feedback/fix chains without adequate guardrails.", "labels": {"test_ci_gap": 2, "issue_or_pull_request_thread": 1, "not_resolved_or_not_observed": 4, "human_reported_issue_no_linked_fix": 2, "thread_has_human_issue_without_fix_context": 2}, "source": "graph_query_export", "motif_id": "test_ci_gap_after_feedback", "outcomes": {"not_resolved_or_not_observed": 8}, "polarity": "bad", "query_id": "test_ci_gap_after_feedback", "severity": "high", "ci_labels": {}, "synthetic": false, "edge_count": 16, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 2, "thread_has_comment": 2, "chain_has_link_quality": 4, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 2, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 2}, "node_count": 12, "node_types": {"repo": 1, "thread": 1, "comment": 2, "fix_outcome": 1, "issue_chain": 1, "link_quality": 4, "comment_chain": 2}, "query_type": "motif_query", "thread_key": "Va3elina/moex-aggregator#19", "issue_number": "19", "quality_tiers": {"unresolved": 4}, "repo_full_name": "Va3elina/moex-aggregator", "training_usage": "hard_negative", "source_motif_id": "graph-pattern-motif-thread-e3bf6a47fb145f04", "graph_gold_label": "needs_more_evidence", "changed_file_labels": {}}, "text": "Graph query export: Feedback exposes missing tests or CI\nQuery id: test_ci_gap_after_feedback\nQuery type: motif_query\nIntent: Hard negatives for feedback/fix chains without adequate guardrails.\nMotif: test_ci_gap_after_feedback\nTraining usage: hard_negative\nGraph gold label: needs_more_evidence\nRepo: Va3elina/moex-aggregator\nThread: Va3elina/moex-aggregator#19\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: Va3elina/moex-aggregator\nThread: Va3elina/moex-aggregator#19\nGraph gold label: needs_more_evidence\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: Va3elina/moex-aggregator#19\nRepo: Va3elina/moex-aggregator\nIssue/PR number: 19\nGraph consistency label: needs_more_evidence\nNodes: 12\nEdges: 16\nNode types: {'link_quality': 4, 'comment': 2, 'comment_chain': 2, 'thread': 1, 'repo': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'chain_has_link_quality': 4, 'thread_has_comment': 2, 'thread_has_comment_chain': 2, 'comment_has_chain': 2, 'issue_chain_has_comment_chain': 2, 'repo_has_thread': 1, 'thread_has_issue_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'not_resolved_or_not_observed': 4, 'test_ci_gap': 2, 'human_reported_issue_no_linked_fix': 2, 'thread_has_human_issue_without_fix_context': 2, 'issue_or_pull_request_thread': 1}\nOutcomes: {'not_resolved_or_not_observed': 8}\nQuality tiers: {'unresolved': 4}\nCI labels: {}\nCurriculum targets:\n- 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/Va3elina/moex-aggregator", "source_id": "graph-query-motif_query-3dff431f213a77c1", "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": "Va3elina/moex-aggregator", "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: Va3elina/moex-aggregator"}, "properties": {"repobilityId": 457906, "scanner": "foundry_dataset", "fingerprint": "44a3a8dc838c564e7bf38dc01e5a71dbe0e37b9a5f2c9f2839a46af104da8855", "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, "build_install_failure": 1, "issue_or_pull_request_thread": 1, "not_resolved_or_not_observed": 4, "human_reported_issue_no_linked_fix": 2, "thread_has_human_issue_without_fix_context": 2}, "source": "graph_query_export", "motif_id": "test_ci_gap_after_feedback", "outcomes": {"not_resolved_or_not_observed": 8}, "polarity": "bad", "query_id": "test_ci_gap_after_feedback", "severity": "high", "ci_labels": {}, "synthetic": false, "edge_count": 16, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 2, "thread_has_comment": 2, "chain_has_link_quality": 4, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 2, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 2}, "node_count": 12, "node_types": {"repo": 1, "thread": 1, "comment": 2, "fix_outcome": 1, "issue_chain": 1, "link_quality": 4, "comment_chain": 2}, "query_type": "motif_query", "thread_key": "Va3elina/moex-aggregator#18", "issue_number": "18", "quality_tiers": {"unresolved": 4}, "repo_full_name": "Va3elina/moex-aggregator", "training_usage": "hard_negative", "source_motif_id": "graph-pattern-motif-thread-1216df299a486c45", "graph_gold_label": "needs_more_evidence", "changed_file_labels": {}}, "text": "Graph query export: Feedback exposes missing tests or CI\nQuery id: test_ci_gap_after_feedback\nQuery type: motif_query\nIntent: Hard negatives for feedback/fix chains without adequate guardrails.\nMotif: test_ci_gap_after_feedback\nTraining usage: hard_negative\nGraph gold label: needs_more_evidence\nRepo: Va3elina/moex-aggregator\nThread: Va3elina/moex-aggregator#18\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: Va3elina/moex-aggregator\nThread: Va3elina/moex-aggregator#18\nGraph gold label: needs_more_evidence\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: Va3elina/moex-aggregator#18\nRepo: Va3elina/moex-aggregator\nIssue/PR number: 18\nGraph consistency label: needs_more_evidence\nNodes: 12\nEdges: 16\nNode types: {'link_quality': 4, 'comment': 2, 'comment_chain': 2, 'thread': 1, 'repo': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'chain_has_link_quality': 4, 'thread_has_comment': 2, 'thread_has_comment_chain': 2, 'comment_has_chain': 2, 'issue_chain_has_comment_chain': 2, 'repo_has_thread': 1, 'thread_has_issue_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'not_resolved_or_not_observed': 4, 'human_reported_issue_no_linked_fix': 2, 'thread_has_human_issue_without_fix_context': 2, 'issue_or_pull_request_thread': 1, 'build_install_failure': 1, 'test_ci_gap': 1}\nOutcomes: {'not_resolved_or_not_observed': 8}\nQuality tiers: {'unresolved': 4}\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/Va3elina/moex-aggregator", "source_id": "graph-query-motif_query-f0c2e73f9205f304", "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": "Va3elina/moex-aggregator", "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: Va3elina/moex-aggregator"}, "properties": {"repobilityId": 457905, "scanner": "foundry_dataset", "fingerprint": "5c10ed98198a6bdc4e2c1f4197cdf1e46bf5657905b844ee4d6b041f6dd1b6a4", "category": "testing", "severity": "high", "confidence": 0.78, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Imported from mined Foundry/Fable5 evidence with real GitHub/source provenance. Review source_id before acting.", "evidence": {"meta": {"kind": "graph_query_record", "title": "Feedback exposes missing tests or CI", "intent": "Hard negatives for feedback/fix chains without adequate guardrails.", "labels": {"test_ci_gap": 2, "issue_or_pull_request_thread": 1, "not_resolved_or_not_observed": 4, "human_reported_issue_no_linked_fix": 2, "thread_has_human_issue_without_fix_context": 2}, "source": "graph_query_export", "motif_id": "test_ci_gap_after_feedback", "outcomes": {"not_resolved_or_not_observed": 8}, "polarity": "bad", "query_id": "test_ci_gap_after_feedback", "severity": "high", "ci_labels": {}, "synthetic": false, "edge_count": 16, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 2, "thread_has_comment": 2, "chain_has_link_quality": 4, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 2, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 2}, "node_count": 12, "node_types": {"repo": 1, "thread": 1, "comment": 2, "fix_outcome": 1, "issue_chain": 1, "link_quality": 4, "comment_chain": 2}, "query_type": "motif_query", "thread_key": "Va3elina/moex-aggregator#17", "issue_number": "17", "quality_tiers": {"unresolved": 4}, "repo_full_name": "Va3elina/moex-aggregator", "training_usage": "hard_negative", "source_motif_id": "graph-pattern-motif-thread-6b106ed4496d0229", "graph_gold_label": "needs_more_evidence", "changed_file_labels": {}}, "text": "Graph query export: Feedback exposes missing tests or CI\nQuery id: test_ci_gap_after_feedback\nQuery type: motif_query\nIntent: Hard negatives for feedback/fix chains without adequate guardrails.\nMotif: test_ci_gap_after_feedback\nTraining usage: hard_negative\nGraph gold label: needs_more_evidence\nRepo: Va3elina/moex-aggregator\nThread: Va3elina/moex-aggregator#17\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: Va3elina/moex-aggregator\nThread: Va3elina/moex-aggregator#17\nGraph gold label: needs_more_evidence\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: Va3elina/moex-aggregator#17\nRepo: Va3elina/moex-aggregator\nIssue/PR number: 17\nGraph consistency label: needs_more_evidence\nNodes: 12\nEdges: 16\nNode types: {'link_quality': 4, 'comment': 2, 'comment_chain': 2, 'thread': 1, 'repo': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'chain_has_link_quality': 4, 'thread_has_comment': 2, 'thread_has_comment_chain': 2, 'comment_has_chain': 2, 'issue_chain_has_comment_chain': 2, 'repo_has_thread': 1, 'thread_has_issue_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'not_resolved_or_not_observed': 4, 'test_ci_gap': 2, 'human_reported_issue_no_linked_fix': 2, 'thread_has_human_issue_without_fix_context': 2, 'issue_or_pull_request_thread': 1}\nOutcomes: {'not_resolved_or_not_observed': 8}\nQuality tiers: {'unresolved': 4}\nCI labels: {}\nCurriculum targets:\n- 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/Va3elina/moex-aggregator", "source_id": "graph-query-motif_query-3ec72bf9c5f4fa5c", "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": "Va3elina/moex-aggregator", "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: Va3elina/moex-aggregator"}, "properties": {"repobilityId": 457904, "scanner": "foundry_dataset", "fingerprint": "d294219e6cd595cd3aa9dd1e65386471f4891c4564356697597a51f04e3ed1cf", "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, "security_auth_secret": 1, "issue_or_pull_request_thread": 1, "not_resolved_or_not_observed": 4, "human_reported_issue_no_linked_fix": 2, "thread_has_human_issue_without_fix_context": 2}, "source": "graph_query_export", "motif_id": "test_ci_gap_after_feedback", "outcomes": {"not_resolved_or_not_observed": 8}, "polarity": "bad", "query_id": "test_ci_gap_after_feedback", "severity": "high", "ci_labels": {}, "synthetic": false, "edge_count": 16, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 2, "thread_has_comment": 2, "chain_has_link_quality": 4, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 2, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 2}, "node_count": 12, "node_types": {"repo": 1, "thread": 1, "comment": 2, "fix_outcome": 1, "issue_chain": 1, "link_quality": 4, "comment_chain": 2}, "query_type": "motif_query", "thread_key": "Va3elina/moex-aggregator#16", "issue_number": "16", "quality_tiers": {"unresolved": 4}, "repo_full_name": "Va3elina/moex-aggregator", "training_usage": "hard_negative", "source_motif_id": "graph-pattern-motif-thread-b5d56f3b708f9bbf", "graph_gold_label": "needs_more_evidence", "changed_file_labels": {}}, "text": "Graph query export: Feedback exposes missing tests or CI\nQuery id: test_ci_gap_after_feedback\nQuery type: motif_query\nIntent: Hard negatives for feedback/fix chains without adequate guardrails.\nMotif: test_ci_gap_after_feedback\nTraining usage: hard_negative\nGraph gold label: needs_more_evidence\nRepo: Va3elina/moex-aggregator\nThread: Va3elina/moex-aggregator#16\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: Va3elina/moex-aggregator\nThread: Va3elina/moex-aggregator#16\nGraph gold label: needs_more_evidence\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: Va3elina/moex-aggregator#16\nRepo: Va3elina/moex-aggregator\nIssue/PR number: 16\nGraph consistency label: needs_more_evidence\nNodes: 12\nEdges: 16\nNode types: {'link_quality': 4, 'comment': 2, 'comment_chain': 2, 'thread': 1, 'repo': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'chain_has_link_quality': 4, 'thread_has_comment': 2, 'thread_has_comment_chain': 2, 'comment_has_chain': 2, 'issue_chain_has_comment_chain': 2, 'repo_has_thread': 1, 'thread_has_issue_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'not_resolved_or_not_observed': 4, 'human_reported_issue_no_linked_fix': 2, 'thread_has_human_issue_without_fix_context': 2, 'issue_or_pull_request_thread': 1, 'security_auth_secret': 1, 'test_ci_gap': 1}\nOutcomes: {'not_resolved_or_not_observed': 8}\nQuality tiers: {'unresolved': 4}\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/Va3elina/moex-aggregator", "source_id": "graph-query-motif_query-ebf8537f44dee7a7", "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": "Va3elina/moex-aggregator", "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: Va3elina/moex-aggregator"}, "properties": {"repobilityId": 457903, "scanner": "foundry_dataset", "fingerprint": "db5d89c3ffe5b863a7042ea56a0e694ed06fd91b43d9e29f65d79c8a8bd5e9e4", "category": "testing", "severity": "high", "confidence": 0.78, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Imported from mined Foundry/Fable5 evidence with real GitHub/source provenance. Review source_id before acting.", "evidence": {"meta": {"kind": "graph_query_record", "title": "Feedback exposes missing tests or CI", "intent": "Hard negatives for feedback/fix chains without adequate guardrails.", "labels": {"test_ci_gap": 2, "issue_or_pull_request_thread": 1, "not_resolved_or_not_observed": 4, "human_reported_issue_no_linked_fix": 2, "thread_has_human_issue_without_fix_context": 2}, "source": "graph_query_export", "motif_id": "test_ci_gap_after_feedback", "outcomes": {"not_resolved_or_not_observed": 8}, "polarity": "bad", "query_id": "test_ci_gap_after_feedback", "severity": "high", "ci_labels": {}, "synthetic": false, "edge_count": 16, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 2, "thread_has_comment": 2, "chain_has_link_quality": 4, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 2, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 2}, "node_count": 12, "node_types": {"repo": 1, "thread": 1, "comment": 2, "fix_outcome": 1, "issue_chain": 1, "link_quality": 4, "comment_chain": 2}, "query_type": "motif_query", "thread_key": "Va3elina/moex-aggregator#15", "issue_number": "15", "quality_tiers": {"unresolved": 4}, "repo_full_name": "Va3elina/moex-aggregator", "training_usage": "hard_negative", "source_motif_id": "graph-pattern-motif-thread-6e237540f03975e9", "graph_gold_label": "needs_more_evidence", "changed_file_labels": {}}, "text": "Graph query export: Feedback exposes missing tests or CI\nQuery id: test_ci_gap_after_feedback\nQuery type: motif_query\nIntent: Hard negatives for feedback/fix chains without adequate guardrails.\nMotif: test_ci_gap_after_feedback\nTraining usage: hard_negative\nGraph gold label: needs_more_evidence\nRepo: Va3elina/moex-aggregator\nThread: Va3elina/moex-aggregator#15\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: Va3elina/moex-aggregator\nThread: Va3elina/moex-aggregator#15\nGraph gold label: needs_more_evidence\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: Va3elina/moex-aggregator#15\nRepo: Va3elina/moex-aggregator\nIssue/PR number: 15\nGraph consistency label: needs_more_evidence\nNodes: 12\nEdges: 16\nNode types: {'link_quality': 4, 'comment': 2, 'comment_chain': 2, 'thread': 1, 'repo': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'chain_has_link_quality': 4, 'thread_has_comment': 2, 'thread_has_comment_chain': 2, 'comment_has_chain': 2, 'issue_chain_has_comment_chain': 2, 'repo_has_thread': 1, 'thread_has_issue_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'not_resolved_or_not_observed': 4, 'test_ci_gap': 2, 'human_reported_issue_no_linked_fix': 2, 'thread_has_human_issue_without_fix_context': 2, 'issue_or_pull_request_thread': 1}\nOutcomes: {'not_resolved_or_not_observed': 8}\nQuality tiers: {'unresolved': 4}\nCI labels: {}\nCurriculum targets:\n- 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/Va3elina/moex-aggregator", "source_id": "graph-query-motif_query-610d05850c4a3787", "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": "Va3elina/moex-aggregator", "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: Va3elina/moex-aggregator"}, "properties": {"repobilityId": 457902, "scanner": "foundry_dataset", "fingerprint": "1da8cb7c3095da59ca328567c7f0f3238cd66f6417a1dd6e09b251156f51c9e4", "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, "verification_or_tests": 2, "issue_or_pull_request_thread": 1, "thread_has_human_issue_and_fix_context": 2, "claimed_resolved_with_verification_signal": 3, "human_reported_issue_then_verified_fix_attempt": 1}, "source": "graph_query_export", "motif_id": "test_ci_gap_after_feedback", "outcomes": {"claimed_resolved_with_verification_signal": 6}, "polarity": "bad", "query_id": "test_ci_gap_after_feedback", "severity": "high", "ci_labels": {}, "synthetic": false, "edge_count": 14, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 1, "thread_has_comment": 1, "chain_has_link_quality": 3, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 1, "comment_chain_links_commit": 3, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 1}, "node_count": 12, "node_types": {"repo": 1, "commit": 3, "thread": 1, "comment": 1, "fix_outcome": 1, "issue_chain": 1, "link_quality": 3, "comment_chain": 1}, "query_type": "motif_query", "thread_key": "Va3elina/moex-aggregator#14", "issue_number": "14", "quality_tiers": {"weak_supervision": 3}, "repo_full_name": "Va3elina/moex-aggregator", "training_usage": "hard_negative", "source_motif_id": "graph-pattern-motif-thread-2957ba18db1b28cc", "graph_gold_label": "supported_by_verification_signal", "changed_file_labels": {}}, "text": "Graph query export: Feedback exposes missing tests or CI\nQuery id: test_ci_gap_after_feedback\nQuery type: motif_query\nIntent: Hard negatives for feedback/fix chains without adequate guardrails.\nMotif: test_ci_gap_after_feedback\nTraining usage: hard_negative\nGraph gold label: supported_by_verification_signal\nRepo: Va3elina/moex-aggregator\nThread: Va3elina/moex-aggregator#14\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: Va3elina/moex-aggregator\nThread: Va3elina/moex-aggregator#14\nGraph gold label: supported_by_verification_signal\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: Va3elina/moex-aggregator#14\nRepo: Va3elina/moex-aggregator\nIssue/PR number: 14\nGraph consistency label: supported_by_verification_signal\nNodes: 12\nEdges: 14\nNode types: {'commit': 3, 'link_quality': 3, 'thread': 1, 'repo': 1, 'comment': 1, 'comment_chain': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'comment_chain_links_commit': 3, 'chain_has_link_quality': 3, 'repo_has_thread': 1, 'thread_has_comment': 1, 'thread_has_comment_chain': 1, 'comment_has_chain': 1, 'thread_has_issue_chain': 1, 'issue_chain_has_comment_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'claimed_resolved_with_verification_signal': 3, 'verification_or_tests': 2, 'thread_has_human_issue_and_fix_context': 2, 'issue_or_pull_request_thread': 1, 'test_ci_gap': 1, 'human_reported_issue_then_verified_fix_attempt': 1, 'bug_fix': 1}\nOutcomes: {'claimed_resolved_with_verification_signal': 6}\nQuality tiers: {'weak_supervision': 3}\nCI labels: {}\nCurriculum targets:\n- Turn human feedback into regression tests and CI gates.\n- Penalize fixes that do not add or exercise verification for affected workflows.\nAssumption checks:\n- Did the fix add tests for the exact complaint?\n- Does CI run those tests, or is verification only implied?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/Va3elina/moex-aggregator", "source_id": "graph-query-motif_query-9fe9a9e46ec93191", "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": "Va3elina/moex-aggregator", "source_dataset": "graph_queries/test_ci_gap_after_feedback", "training_usage": "hard_negative"}}}, {"ruleId": "foundry_schema_ui_api_gap", "level": "error", "message": {"text": "Foundry mined schema ui api mismatch: Va3elina/moex-aggregator"}, "properties": {"repobilityId": 452785, "scanner": "foundry_dataset", "fingerprint": "9b5f6fdbd3c70c026a6ca505c21c9e0be9cf1216e9a1a37042495b64e2c607a0", "category": "quality", "severity": "high", "confidence": 0.76, "triageState": "open", "verdict": "needs_review", "isResolved": false, "reason": "Imported from mined Foundry/Fable5 evidence with real GitHub/source provenance. Review source_id before acting.", "evidence": {"meta": {"kind": "graph_query_record", "title": "Schema, UI, and API mismatch", "intent": "Assumption-check examples for data-path consistency across layers.", "labels": {"bug_fix": 2, "generated_provenance": 2, "verification_or_tests": 1, "data_schema_persistence": 1, "issue_or_pull_request_thread": 1, "thread_has_human_issue_and_fix_context": 2, "claimed_resolved_with_verification_signal": 3, "human_reported_issue_then_verified_fix_attempt": 1}, "source": "graph_query_export", "motif_id": "schema_ui_api_mismatch", "outcomes": {"claimed_resolved_with_verification_signal": 6}, "polarity": "bad", "query_id": "schema_ui_api_mismatch", "severity": "high", "ci_labels": {}, "synthetic": false, "edge_count": 16, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 1, "thread_has_comment": 1, "chain_has_link_quality": 3, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 1, "comment_chain_links_commit": 5, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 1}, "node_count": 14, "node_types": {"repo": 1, "commit": 5, "thread": 1, "comment": 1, "fix_outcome": 1, "issue_chain": 1, "link_quality": 3, "comment_chain": 1}, "query_type": "motif_query", "thread_key": "Va3elina/moex-aggregator#48", "issue_number": "48", "quality_tiers": {"high_confidence": 3}, "repo_full_name": "Va3elina/moex-aggregator", "training_usage": "assumption_check", "source_motif_id": "graph-pattern-motif-thread-20e5073976efa301", "graph_gold_label": "supported_by_verification_signal", "changed_file_labels": {}}, "text": "Graph query export: Schema, UI, and API mismatch\nQuery id: schema_ui_api_mismatch\nQuery type: motif_query\nIntent: Assumption-check examples for data-path consistency across layers.\nMotif: schema_ui_api_mismatch\nTraining usage: assumption_check\nGraph gold label: supported_by_verification_signal\nRepo: Va3elina/moex-aggregator\nThread: Va3elina/moex-aggregator#48\nEvidence:\nGraph motif: Schema, UI, and API evidence do not line up\nMotif id: schema_ui_api_mismatch\nPolarity: bad\nTraining usage: assumption_check\nSeverity: high\nRepo: Va3elina/moex-aggregator\nThread: Va3elina/moex-aggregator#48\nGraph gold label: supported_by_verification_signal\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: Va3elina/moex-aggregator#48\nRepo: Va3elina/moex-aggregator\nIssue/PR number: 48\nGraph consistency label: supported_by_verification_signal\nNodes: 14\nEdges: 16\nNode types: {'commit': 5, 'link_quality': 3, 'thread': 1, 'repo': 1, 'comment': 1, 'comment_chain': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'comment_chain_links_commit': 5, 'chain_has_link_quality': 3, 'repo_has_thread': 1, 'thread_has_comment': 1, 'thread_has_comment_chain': 1, 'comment_has_chain': 1, 'thread_has_issue_chain': 1, 'issue_chain_has_comment_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'claimed_resolved_with_verification_signal': 3, 'generated_provenance': 2, 'bug_fix': 2, 'thread_has_human_issue_and_fix_context': 2, 'issue_or_pull_request_thread': 1, 'data_schema_persistence': 1, 'human_reported_issue_then_verified_fix_attempt': 1, 'verification_or_tests': 1}\nOutcomes: {'claimed_resolved_with_verification_signal': 6}\nQuality tiers: {'high_confidence': 3}\nCI labels: {}\nCurriculum targets:\n- Create schema-to-API-to-UI consistency tasks with migrations and tests.\n- Teach models to verify persistence, route contracts, and UI state together.\nAssumption checks:\n- Do schema changes have matching API and UI handling?\n- Are migrations and tests present for the data path?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/Va3elina/moex-aggregator", "source_id": "graph-query-motif_query-f32bf1fdbb9bd890", "synthetic": false, "gold_label": "", "graph_label": "", "source_path": "/data/distillate/foundry_data/graph_queries/schema_ui_api_mismatch/shard-0.jsonl", "bundle_label": "", "priority_band": "", "priority_score": 0, "repo_full_name": "Va3elina/moex-aggregator", "source_dataset": "graph_queries/schema_ui_api_mismatch", "training_usage": "assumption_check"}}}, {"ruleId": "foundry_schema_ui_api_gap", "level": "error", "message": {"text": "Foundry mined schema ui api mismatch: Va3elina/moex-aggregator"}, "properties": {"repobilityId": 452784, "scanner": "foundry_dataset", "fingerprint": "c34450ea992c99a94310cff6f52c0c63b9e0d7c16f553acfe9779dbfd36a83e4", "category": "quality", "severity": "high", "confidence": 0.76, "triageState": "open", "verdict": "needs_review", "isResolved": false, "reason": "Imported from mined Foundry/Fable5 evidence with real GitHub/source provenance. Review source_id before acting.", "evidence": {"meta": {"kind": "graph_query_record", "title": "Schema, UI, and API mismatch", "intent": "Assumption-check examples for data-path consistency across layers.", "labels": {"api_integration_gap": 1, "verification_or_tests": 2, "data_schema_persistence": 1, "issue_or_pull_request_thread": 1, "not_resolved_or_not_observed": 1, "ambiguous_needs_more_evidence": 3, "comment_has_related_commit_context": 1, "human_reported_issue_no_linked_fix": 1, "thread_has_human_issue_and_fix_context": 2}, "source": "graph_query_export", "motif_id": "schema_ui_api_mismatch", "outcomes": {"not_resolved_or_not_observed": 2, "ambiguous_needs_more_evidence": 6}, "polarity": "bad", "query_id": "schema_ui_api_mismatch", "severity": "high", "ci_labels": {}, "synthetic": false, "edge_count": 18, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 2, "thread_has_comment": 2, "chain_has_link_quality": 4, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 2, "comment_chain_links_commit": 2, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 2}, "node_count": 14, "node_types": {"repo": 1, "commit": 2, "thread": 1, "comment": 2, "fix_outcome": 1, "issue_chain": 1, "link_quality": 4, "comment_chain": 2}, "query_type": "motif_query", "thread_key": "Va3elina/moex-aggregator#24", "issue_number": "24", "quality_tiers": {"unresolved": 1, "weak_supervision": 3}, "repo_full_name": "Va3elina/moex-aggregator", "training_usage": "assumption_check", "source_motif_id": "graph-pattern-motif-thread-be5ae7cc32d60a26", "graph_gold_label": "weak_supervision_needs_review", "changed_file_labels": {}}, "text": "Graph query export: Schema, UI, and API mismatch\nQuery id: schema_ui_api_mismatch\nQuery type: motif_query\nIntent: Assumption-check examples for data-path consistency across layers.\nMotif: schema_ui_api_mismatch\nTraining usage: assumption_check\nGraph gold label: weak_supervision_needs_review\nRepo: Va3elina/moex-aggregator\nThread: Va3elina/moex-aggregator#24\nEvidence:\nGraph motif: Schema, UI, and API evidence do not line up\nMotif id: schema_ui_api_mismatch\nPolarity: bad\nTraining usage: assumption_check\nSeverity: high\nRepo: Va3elina/moex-aggregator\nThread: Va3elina/moex-aggregator#24\nGraph gold label: weak_supervision_needs_review\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: Va3elina/moex-aggregator#24\nRepo: Va3elina/moex-aggregator\nIssue/PR number: 24\nGraph consistency label: weak_supervision_needs_review\nNodes: 14\nEdges: 18\nNode types: {'link_quality': 4, 'comment': 2, 'comment_chain': 2, 'commit': 2, 'thread': 1, 'repo': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'chain_has_link_quality': 4, 'thread_has_comment': 2, 'thread_has_comment_chain': 2, 'comment_has_chain': 2, 'comment_chain_links_commit': 2, 'issue_chain_has_comment_chain': 2, 'repo_has_thread': 1, 'thread_has_issue_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'ambiguous_needs_more_evidence': 3, 'verification_or_tests': 2, 'thread_has_human_issue_and_fix_context': 2, 'issue_or_pull_request_thread': 1, 'data_schema_persistence': 1, 'api_integration_gap': 1, 'comment_has_related_commit_context': 1, 'human_reported_issue_no_linked_fix': 1, 'not_resolved_or_not_observed': 1}\nOutcomes: {'ambiguous_needs_more_evidence': 6, 'not_resolved_or_not_observed': 2}\nQuality tiers: {'weak_supervision': 3, 'unresolved': 1}\nCI labels: {}\nCurriculum targets:\n- Create schema-to-API-to-UI consistency tasks with migrations and tests.\n- Teach models to verify persistence, route contracts, and UI state together.\nAssumption checks:\n- Do schema changes have matching API and UI handling?\n- Are migrations and tests present for the data path?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/Va3elina/moex-aggregator", "source_id": "graph-query-motif_query-34a31d8bbaaffe9b", "synthetic": false, "gold_label": "", "graph_label": "", "source_path": "/data/distillate/foundry_data/graph_queries/schema_ui_api_mismatch/shard-0.jsonl", "bundle_label": "", "priority_band": "", "priority_score": 0, "repo_full_name": "Va3elina/moex-aggregator", "source_dataset": "graph_queries/schema_ui_api_mismatch", "training_usage": "assumption_check"}}}, {"ruleId": "foundry_bad_chain", "level": "error", "message": {"text": "Foundry mined bad chains: Va3elina/moex-aggregator"}, "properties": {"repobilityId": 441734, "scanner": "foundry_dataset", "fingerprint": "c41835ae94537d624360637fdc255b2d06254bc0304e50586fef7ec06d0f301a", "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": "Va3elina/moex-aggregator#87", "human_labels": ["api_integration_gap", "ui_or_frontend"], "issue_number": "87", "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": "Va3elina/moex-aggregator", "training_usage": "negative_or_unresolved", "confidence_tier": "unresolved", "source_chain_id": "evidence-chain-issue_chain-b000a3089fb0104f", "helicopter_views": {"schemas": 2}, "artifact_families": {"ci": 3, "docs": 5}, "source_chain_kind": "issue_chain", "changed_file_count": 1, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {"ui_or_frontend": 1}, "linked_commit_count": 0, "helicopter_view_count": 2, "source_artifact_count": 8, "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": 3, "design_schema_api_artifact_count": 0}, "text": "Comment chain pattern product: bad_chains\nRepo: Va3elina/moex-aggregator\nThread: Va3elina/moex-aggregator#87\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: Va3elina/moex-aggregator#87\nRepo: Va3elina/moex-aggregator\nThread label: thread_has_human_issue_without_fix_context\nOutcome: not_resolved_or_not_observed\nComment count: 1\nLinked commit count: 0\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 1\nLabels: {'api_integration_gap': 1}\nPolarities: {'bad': 1}\nChanged file labels: {'ui_or_frontend': 1}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-2f1b2ff5ecf291fb\",\n    \"kind\": \"pull_request_body\",\n    \"label\": \"api_integration_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/Va3elina/moex-aggregator/pull/87\",\n    \"text\": \"GitHub feedback: api_integration_gap\\nPolarity: bad\\nKind: pull_request_body\\nRepo: Va3elina/moex-aggregator\\nAuthor: Va3elina (User)\\nURL: https://github.com/Va3elina/moex-aggregator/pull/87\\nTitle: fix(frontend): \u0436\u0451\u0441\u0442\u043a\u043e\u0435 \u0432\u043e\u0441\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 ErrorBoundary \u043f\u0440\u0438 stale-chunk\\nBody:\\n## \u041f\u0440\u043e\u0431\u043b\u0435\u043c\u0430\\n\\n\u041f\u043e\u0441\u043b\u0435 \u0434\u0435\u043f\u043b\u043e\u044f \u0443\u0441\u0442\u0430\u0440\u0435\u0432\u0448\u0430\u044f \u0432\u043a\u043b\u0430\u0434\u043a\u0430 \u0442\u044f\u043d\u0435\u0442 hashed-\u0447\u0430\u043d\u043a, \u0443\u0434\u0430\u043b\u0451\u043d\u043d\u044b\u0439 \u043d\u043e\u0432\u044b\u043c \u0431\u0438\u043b\u0434\u043e\u043c \u2192 `Failed to fetch dynamically imported module` (404). \u041f\u043e\u0439\u043c\u0430\u043b \u0430\u0434\u043c\u0438\u043d \u043d\u0430 `/admin/stats`: \u0441\u0442\u0430\u0440\u044b\u0439 `AdminStatsPage-CFQBxRYG.js` \u043e\u0442\u0434\u0430\u0451\u0442 **404**, \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u0442\u0435\u043a\u0443\u0449\u0438\u0439 \u0431\u0438\u043b\u0434 (`index-KOxDYqLd.js`) \u0441\u0441\u044b\u043b\u0430\u0435\u0442\u0441\u044f \u043d\u0430 `AdminStatsPage-CFr3mWR1.js` \u2192 **200**. \u0421\u0435\u0440\u0432\u0435\u0440 \u0437\u0434\u043e\u0440\u043e\u0432 \u2014 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u0447\u0438\u0441\u0442\u043e \u043a\u043b\u0438\u0435\u043d\u0442\u0441\u043a\u0430\u044f (\u0443\u0441\u0442\u0430\u0440\u0435\u0432\u0448\u0430\u044f \u0432\u043a\u043b\u0430\u0434\u043a\u0430).\\n\\n\u041e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a `vite:preloadError` \u0432 `main.tsx` \u043e\u0434\u043d\u043e\u0440\u0430\u0437\u043e\u0432\u044b\u0439 (10-\u0441\u0435\u043a `sessionStorage`-guard) \u0438 \u0438\u043d\u043e\u0433\u0434\u0430 \u043d\u0435 \u0443\u0441\u043f\u0435\u0432\u0430\u0435\u0442 \u0432\u044b\u0441\u0442\u0440\u0435\u043b\u0438\u0442\u044c \u0434\u043e \u0442\u043e\u0433\u043e, \u043a\u0430\u043a `React.lazy` \u043f\u0440\u043e\u0431\u0440\u0430\u0441\u044b\u0432\u0430\u0435\u0442 reject \u0432 \u0440\u0435\u043d\u0434\u0435\u0440. \u0422\u043e\u0433\u0434\u0430 \u043e\u0448\u0438\u0431\u043a\u0430 \u0434\u043e\u043b\u0435\u0442\u0430\u0435\u0442 \u0434\u043e `ErrorBoundary`, \u0433\u0434\u0435 fallback \u0431\u044b\u043b \u0442\u0443\u043f\u0438\u043a\u043e\u043c: \u043a\u043d\u043e\u043f\u043a\u0430 \u043f\u0435\u0440\u0435\u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u0434\u0435\u043b\u0430\u043b\u0430 \u043e\u0431\u044b\u0447\u043d\u044b\u0439 `reload`, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u043e\u0433 \u043a\u0440\u0443\u0442\u0438\u0442\u044c \u0442\u0443 \u0436\u0435 \u043e\u0448\u0438\u0431\u043a\u0443.\\n\\n## \u0424\u0438\u043a\u0441\\n\\n`ErrorBoundary` \u0442\u0435\u043f\u0435\u0440\u044c:\\n- \u0440\u0430\u0441\u043f\u043e\u0437\u043d\u0430\u0451\u0442 \u0441\u0431\u043e\u0439 \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0438\u043c\u043f\u043e\u0440\u0442\u0430 \u043f\u043e \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044e (Chrome/Vite, Firefox, Safari);\\n- \u0434\u0435\u043b\u0430\u0435\u0442 \u043e\u0434\u043d\u043e\u0440\u0430\u0437\u043e\u0432\u043e\u0435 \u0436\u0451\u0441\u0442\u043a\u043e\u0435 \u0432\u043e\u0441\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435: \u0441\u043d\u043e\u0441\u0438\u0442 \u0432\u0441\u0435 \u043a\u044d\u0448\u0438 SW (`caches.delete`) \u0438 \u043f\u0435\u0440\u0435\u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u0442\u0441\u044f \u0441\u043e\"\n  }\n]\nChanged files:\n[\n  {\n    \"id\": \"github-pr-file-file-11abb019f9f72c25\",\n    \"filename\": \"frontend/src/components/ErrorBoundary.tsx\",\n    \"label\": \"ui_or_frontend\",\n    \"status\": \"modified\",\n    \"additions\": 85,\n    \"deletions\": 4,\n    \"changes\": 89,\n    \"blob_url\": \"https://github.com/Va3elina/moex-aggregator/blob/2cee275d95bdd79e1796e1f9627c0e4f00837e86/frontend%2Fsrc%2Fcomponents%2FErrorBoundary.tsx\"\n  }\n]\nLinked chain ids:\n[\"evidence-chain-comment_to_commit-b0f1c3943cdf436d\"]\nSource graph evidence:\nSource evidence repo graph summary\nRepo: Va3elina/moex-aggregator\nGraph label: source_backed_multi_signal_graph\nNodes: 14\nEdges: 22\nNode types: {\"cooccurrence\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/Va3elina/moex-aggregator", "source_id": "comment-chain-pattern-bad_chains-ca9f71f009697abb", "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": "Va3elina/moex-aggregator", "source_dataset": "comment_chain_patterns/bad_chains", "training_usage": "negative_or_unresolved"}}}, {"ruleId": "foundry_bad_chain", "level": "error", "message": {"text": "Foundry mined bad chains: Va3elina/moex-aggregator"}, "properties": {"repobilityId": 441733, "scanner": "foundry_dataset", "fingerprint": "bdf46d40dd40e36fd7b61083c9c7997585af13498a871c7e342d887a665b2307", "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": "Va3elina/moex-aggregator#86", "human_labels": ["agent_instruction_gap", "ui_or_frontend"], "issue_number": "86", "thread_label": "thread_has_human_issue_and_fix_context", "outcome_label": "self_attested_unverified", "source_backed": true, "max_confidence": 0.92, "repo_full_name": "Va3elina/moex-aggregator", "training_usage": "gold_candidate", "confidence_tier": "high_confidence", "source_chain_id": "evidence-chain-issue_chain-359da860e0f6a64f", "helicopter_views": {"schemas": 2}, "artifact_families": {"ci": 3, "docs": 5}, "source_chain_kind": "issue_chain", "changed_file_count": 6, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {"ui_or_frontend": 6}, "linked_commit_count": 4, "helicopter_view_count": 2, "source_artifact_count": 8, "classification_reasons": ["source_graph_has_real_artifacts", "source_graph_has_verification_artifacts", "repo_has_isolated_helicopter_views", "link_quality_high_confidence"], "linked_ci_commit_count": 1, "verification_artifact_count": 3, "design_schema_api_artifact_count": 0}, "text": "Comment chain pattern product: bad_chains\nRepo: Va3elina/moex-aggregator\nThread: Va3elina/moex-aggregator#86\nOutcome: self_attested_unverified\nThread label: thread_has_human_issue_and_fix_context\nSource graph label: source_backed_multi_signal_graph\nReasons: source_graph_has_real_artifacts, source_graph_has_verification_artifacts, repo_has_isolated_helicopter_views, link_quality_high_confidence\nChain evidence:\nIssue/PR evidence chain: Va3elina/moex-aggregator#86\nRepo: Va3elina/moex-aggregator\nThread label: thread_has_human_issue_and_fix_context\nOutcome: self_attested_unverified\nComment count: 1\nLinked commit count: 4\nLinked CI commit count: 1\nLinked CI labels: {'ci_pending_or_incomplete': 1}\nChanged file count: 6\nLabels: {'agent_instruction_gap': 1}\nPolarities: {'bad': 1}\nChanged file labels: {'ui_or_frontend': 6}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-1c1178f6e3c470e9\",\n    \"kind\": \"pull_request_body\",\n    \"label\": \"agent_instruction_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/Va3elina/moex-aggregator/pull/86\",\n    \"text\": \"GitHub feedback: agent_instruction_gap\\nPolarity: bad\\nKind: pull_request_body\\nRepo: Va3elina/moex-aggregator\\nAuthor: Va3elina (User)\\nURL: https://github.com/Va3elina/moex-aggregator/pull/86\\nTitle: feat(funds): \u0443\u0431\u0440\u0430\u0442\u044c \u0444\u0438\u0447\u0443 \u00ab\u0421\u043e\u0431\u044b\u0442\u0438\u044f\u00bb \u0438\u0437 \u0414\u0435\u043d\u044c\u0433\u0438 \u0432 \u0444\u043e\u043d\u0434\u0430\u0445\\nBody:\\n## \u0427\u0442\u043e\\n\u0422\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u043f\u043e\u0442\u043e\u043a\u0438 \u0440\u0435\u043e\u0440\u0433\u0430\u043d\u0438\u0437\u0430\u0446\u0438\u0439 \u0442\u0435\u043f\u0435\u0440\u044c \u0432\u044b\u0447\u0438\u0442\u0430\u044e\u0442\u0441\u044f \u043f\u0440\u044f\u043c\u043e \u0438\u0437 `/flows` (PR #85), \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043c\u0430\u0440\u043a\u0435\u0440\u044b \u0441\u043e\u0431\u044b\u0442\u0438\u0439 \u043d\u0430 \u0433\u0440\u0430\u0444\u0438\u043a\u0435 \u043f\u043e\u0442\u0435\u0440\u044f\u043b\u0438 \u0441\u043c\u044b\u0441\u043b. \u0423\u0434\u0430\u043b\u044f\u044e \u0444\u0438\u0447\u0443 \u00ab\u0421\u043e\u0431\u044b\u0442\u0438\u044f\u00bb \u0446\u0435\u043b\u0438\u043a\u043e\u043c \u0438\u0437 \u0438\u043d\u0434\u0438\u043a\u0430\u0442\u043e\u0440\u0430 \u00ab\u0414\u0435\u043d\u044c\u0433\u0438 \u0432 \u0444\u043e\u043d\u0434\u0430\u0445\u00bb.\\n\\n## \u0424\u0430\u0439\u043b\u044b\\n- `FlowsHistogram.tsx` \u2014 \u0443\u0431\u0440\u0430\u043d\u044b SVG-\u043c\u0430\u0440\u043a\u0435\u0440\u044b \u0441\u043e\u0431\u044b\u0442\u0438\u0439, \u0442\u0443\u043b\u0442\u0438\u043f \u0441\u043e\u0431\u044b\u0442\u0438\u044f, \u0432\u0435\u0440\u0442\u0438\u043a\u0430\u043b\u044c\u043d\u0430\u044f \u043b\u0438\u043d\u0438\u044f \u0430\u043d\u043e\u043c\u0430\u043b\u0438\u0438; \u0443\u0434\u0430\u043b\u0435\u043d\u044b \u043f\u0440\u043e\u043f\u0441\u044b `showEvents`/`hoveredAnnotation`/`onSetHoveredAnnotation`/`category`/`hiddenTickers`/`allTickers`; \u0433\u0432\u0430\u0440\u0434\u044b `!hoveredAnnotation` \u0443 flow-\u0442\u0443\u043b\u0442\u0438\u043f\u0430/\u043a\u0443\u0440\u0441\u043e\u0440\u0430/date-pill \u0443\u043f\u0440\u043e\u0449\u0435\u043d\u044b.\\n- `FundsMoneyPage.tsx` \u2014 \u0443\u0431\u0440\u0430\u043d \u0442\u0443\u043c\u0431\u043b\u0435\u0440 \u00ab\u0421\u043e\u0431\u044b\u0442\u0438\u044f\u00bb; `LayersButton` \u0442\u0435\u043f\u0435\u0440\u044c \u0440\u0435\u043d\u0434\u0435\u0440\u0438\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u0432 \u0440\u0435\u0436\u0438\u043c\u0435 \u0421\u0427\u0410 (\u0442\u0443\u043c\u0431\u043b\u0435\u0440 \u00ab\u0418\u043d\u0434\u0435\u043a\u0441\u00bb); \u0443\u0434\u0430\u043b\u0435\u043d\u044b \u0441\u0442\u0435\u0439\u0442 `showEvents`/`hoveredAnnotation` \u0438 \u043e\u0441\u0438\u0440\u043e\u0442\u0435\u0432\u0448\u0438\u0435 `useMemo` `hiddenTickers`/`allTickers`.\\n- `EmbedFundsMoney.tsx` \u2014 \u0443\u0431\u0440\u0430\u043d `ToggleRow \u00ab\u0421\u043e\u0431\u044b\u0442\u0438\u044f\u00bb`, \u0441\u0442\u0435\u0439\u0442 \u0438 localStorage-persist.\\n- \u0422\u0443\u0440 (`tours/funds-money.tsx`) \u0438 \u043c\u0435\u0442\u043e\u0434\u043e\u043b\u043e\u0433\u0438\u044f (`FundsMoneyMethodologyPage.tsx`) \u2014 \u0443\u0431\u0440\u0430\u043d\u044b \u0443\u043f\u043e\u043c\u0438\u043d\u0430\u043d\u0438\u044f \u00ab\u0421\u043e\u0431\u044b\u0442\u0438\u044f\u00bb.\\n- \u0423\u0434\u0430\u043b\u0451\u043d \u043d\u0435\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u0439 `config\"\n  }\n]\nChanged files:\n[\n  {\n    \"id\": \"github-pr-file-file-12ce81e13df64798\",\n    \"filename\": \"frontend/src/components/funds/FlowsHistogram.tsx\",\n    \"label\": \"ui_or_frontend\",\n    \"status\": \"modified\",\n    \"additions\": 4,\n    \"deletions\": 125,\n    \"changes\": 129,\n    \"blob_url\": \"https://github.com/Va3elina/moex-aggregator/blob/f9d7d9a5a8c73b24d7d1e0bde5dcd84113f5e06b/frontend%2Fsrc%2Fcomponents%2Ffunds%2FFlowsHistogram.tsx\"\n  },\n  {\n    \"id\": \"github-pr-file-file-46d70bda2bb4dc5e\",\n    \"filename\": \"frontend/src/config/fundAnnotations.ts\",\n    \"label\": \"ui_or_frontend\",\n    \"status\": \"removed\",\n    \"additions\": 0,\n    \"deletions\": 77,\n    \"changes\": 77,\n    \"blob_url\": \"htt\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/Va3elina/moex-aggregator", "source_id": "comment-chain-pattern-bad_chains-a20803b7712d3a96", "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": "Va3elina/moex-aggregator", "source_dataset": "comment_chain_patterns/bad_chains", "training_usage": "gold_candidate"}}}, {"ruleId": "foundry_bad_chain", "level": "error", "message": {"text": "Foundry mined bad chains: Va3elina/moex-aggregator"}, "properties": {"repobilityId": 441732, "scanner": "foundry_dataset", "fingerprint": "b3f00d904cf3ffd4b2fcfc923e1999e936ed0ab0824f750fe003a3f19b71c7d8", "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": "Va3elina/moex-aggregator#85", "human_labels": ["agent_instruction_gap", "api_or_backend"], "issue_number": "85", "thread_label": "thread_has_human_issue_and_fix_context", "outcome_label": "self_attested_unverified", "source_backed": true, "max_confidence": 0.92, "repo_full_name": "Va3elina/moex-aggregator", "training_usage": "gold_candidate", "confidence_tier": "high_confidence", "source_chain_id": "evidence-chain-issue_chain-c4686526d07e9c46", "helicopter_views": {"schemas": 2}, "artifact_families": {"ci": 3, "docs": 5}, "source_chain_kind": "issue_chain", "changed_file_count": 1, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {"api_or_backend": 1}, "linked_commit_count": 2, "helicopter_view_count": 2, "source_artifact_count": 8, "classification_reasons": ["source_graph_has_real_artifacts", "source_graph_has_verification_artifacts", "repo_has_isolated_helicopter_views", "link_quality_high_confidence"], "linked_ci_commit_count": 1, "verification_artifact_count": 3, "design_schema_api_artifact_count": 0}, "text": "Comment chain pattern product: bad_chains\nRepo: Va3elina/moex-aggregator\nThread: Va3elina/moex-aggregator#85\nOutcome: self_attested_unverified\nThread label: thread_has_human_issue_and_fix_context\nSource graph label: source_backed_multi_signal_graph\nReasons: source_graph_has_real_artifacts, source_graph_has_verification_artifacts, repo_has_isolated_helicopter_views, link_quality_high_confidence\nChain evidence:\nIssue/PR evidence chain: Va3elina/moex-aggregator#85\nRepo: Va3elina/moex-aggregator\nThread label: thread_has_human_issue_and_fix_context\nOutcome: self_attested_unverified\nComment count: 1\nLinked commit count: 2\nLinked CI commit count: 1\nLinked CI labels: {'ci_pending_or_incomplete': 1}\nChanged file count: 1\nLabels: {'agent_instruction_gap': 1}\nPolarities: {'bad': 1}\nChanged file labels: {'api_or_backend': 1}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-d0c2920d83dbe58d\",\n    \"kind\": \"pull_request_body\",\n    \"label\": \"agent_instruction_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/Va3elina/moex-aggregator/pull/85\",\n    \"text\": \"GitHub feedback: agent_instruction_gap\\nPolarity: bad\\nKind: pull_request_body\\nRepo: Va3elina/moex-aggregator\\nAuthor: Va3elina (User)\\nURL: https://github.com/Va3elina/moex-aggregator/pull/85\\nTitle: feat(funds): \u0432\u044b\u0447\u0438\u0442\u0430\u0442\u044c \u0442\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u043f\u043e\u0442\u043e\u043a\u0438 \u043e\u0442 \u0440\u0435\u043e\u0440\u0433\u0430\u043d\u0438\u0437\u0430\u0446\u0438\u0439 \u0444\u043e\u043d\u0434\u043e\u0432\\nBody:\\n## \u0427\u0442\u043e\\n\u0421\u043b\u0438\u044f\u043d\u0438\u044f \u0438 \u043b\u0438\u043a\u0432\u0438\u0434\u0430\u0446\u0438\u0438 \u0444\u043e\u043d\u0434\u043e\u0432 \u043c\u0435\u043d\u044f\u044e\u0442 \u0421\u0427\u0410 \u0441\u043a\u0430\u0447\u043a\u043e\u043c \u2014 \u044d\u0442\u043e \u043d\u0435 \u043f\u0440\u0438\u0442\u043e\u043a/\u043e\u0442\u0442\u043e\u043a \u0434\u0435\u043d\u0435\u0433 \u0438\u043d\u0432\u0435\u0441\u0442\u043e\u0440\u043e\u0432, \u0430 \u0440\u0435\u043e\u0440\u0433\u0430\u043d\u0438\u0437\u0430\u0446\u0438\u044f. \u041d\u0430 \u0433\u0438\u0441\u0442\u043e\u0433\u0440\u0430\u043c\u043c\u0435 \u00ab\u0414\u0435\u043d\u044c\u0433\u0438 \u0432 \u0444\u043e\u043d\u0434\u0430\u0445\u00bb \u0442\u0430\u043a\u0438\u0435 \u0441\u043e\u0431\u044b\u0442\u0438\u044f \u0434\u0430\u0432\u0430\u043b\u0438 \u043b\u043e\u0436\u043d\u044b\u0435 \u043f\u0438\u043a\u0438. \u0422\u0435\u043f\u0435\u0440\u044c \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u0430\u044f \u0434\u0435\u043b\u044c\u0442\u0430 \u0432\u044b\u0447\u0438\u0442\u0430\u0435\u0442\u0441\u044f \u0438\u0437 `net_flow` \u0437\u0430\u0442\u0440\u043e\u043d\u0443\u0442\u043e\u0433\u043e \u0444\u043e\u043d\u0434\u0430 \u0432 \u0434\u0435\u043d\u044c \u0441\u043a\u0430\u0447\u043a\u0430, \u043a\u0430\u043a \u0431\u0443\u0434\u0442\u043e \u0441\u043e\u0431\u044b\u0442\u0438\u044f \u043d\u0435 \u0431\u044b\u043b\u043e.\\n\\n## \u041a\u0430\u043a\\n- `FLOW_REORG_CORRECTIONS` \u2014 \u0442\u0430\u0431\u043b\u0438\u0446\u0430 `{\u043a\u0430\u0442\u0435\u0433\u043e\u0440\u0438\u044f: (ticker, \u0434\u0430\u0442\u0430, impact_\u043c\u043b\u0440\u0434)}` \u043f\u043e \u0440\u0430\u043d\u0435\u0435 \u0440\u0430\u0437\u043c\u0435\u0447\u0435\u043d\u043d\u044b\u043c \u0441\u043e\u0431\u044b\u0442\u0438\u044f\u043c (\u0437\u043d\u0430\u043a: `+` \u0441\u043b\u0438\u044f\u043d\u0438\u0435/\u0442\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u043f\u0440\u0438\u0442\u043e\u043a, `\u2212` \u043b\u0438\u043a\u0432\u0438\u0434\u0430\u0446\u0438\u044f/\u0442\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u043e\u0442\u0442\u043e\u043a).\\n- \u0412 `/flows`: `ticker \u2192 fund_id` \u0431\u0435\u0440\u0451\u0442\u0441\u044f \u0438\u0437 \u0443\u0436\u0435 \u0437\u0430\u0433\u0440\u0443\u0436\u0435\u043d\u043d\u043e\u0433\u043e `cat_config`; \u0434\u0435\u043d\u044c \u0441\u043a\u0430\u0447\u043a\u0430 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442\u0441\u044f \u043a\u0430\u043a \u043c\u0430\u043a\u0441\u0438\u043c\u0443\u043c `|net_flow|` \u0432 \u043e\u043a\u043d\u0435 \u00b110 \u0434\u043d\u0435\u0439 \u043e\u0442 \u0434\u0430\u0442\u044b \u0441\u043e\u0431\u044b\u0442\u0438\u044f (\u0443\u0441\u0442\u043e\u0439\u0447\u0438\u0432\u043e \u043a \u043b\u0430\u0433\u0443/\u043d\u0435\u0440\u0430\u0431\u043e\u0447\u0438\u043c \u0434\u043d\u044f\u043c, \u0442\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0441\u043a\u0430\u0447\u043e\u043a \u0434\u043e\u043c\u0438\u043d\u0438\u0440\u0443\u0435\u0442); \u043f\u043e\u043f\u0440\u0430\u0432\u043a\u0430 \u0432\u044b\u0447\u0438\u0442\u0430\u0435\u0442\u0441\u044f \u0438\u0437 `net_flow` \u0432 \u043e\u0431\u0435\u0438\u0445 \u0432\u0435\u0442\u043a\u0430\u0445 \u0430\u0433\u0440\u0435\u0433\u0430\u0446\u0438\u0438 (`1d` \u0438 \u0441\u0433\u0440\u0443\u043f\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0439 \u043f\u043e \u043d\u0435\u0434\u0435\u043b\u044f\u043c/\u043c\u0435\u0441\u044f\u0446\u0430\u043c/\u043a\u0432\u0430\u0440\u0442\u0430\u043b\u0430\u043c/\u0433\u043e\u0434\u0430\u043c).\\n- \u041f\u0440\u0438\u0432\u044f\u0437\u043a\u0430 \u043a `fund_id`: \u0435\u0441\u043b\u0438 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u0441\u043d\u044f\u043b \u0437\u0430\u0442\u0440\u043e\u043d\u0443\u0442\u044b\u0439 \u0444\u043e\u043d\u0434, \u0435\u0433\u043e \u043d\u0435\u0442 \u0432 \u0432\u044b\u0431\u043e\u0440\u043a\u0435 \u2192 \u043f\u043e\u043f\u0440\u0430\u0432\u043a\u0430 \u043d\u0435 \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0435\u0442\u0441\u044f (\u043d\"\n  }\n]\nChanged files:\n[\n  {\n    \"id\": \"github-pr-file-file-14e40f1fd03e5146\",\n    \"filename\": \"api/routers/funds.py\",\n    \"label\": \"api_or_backend\",\n    \"status\": \"modified\",\n    \"additions\": 65,\n    \"deletions\": 0,\n    \"changes\": 65,\n    \"blob_url\": \"https://github.com/Va3elina/moex-aggregator/blob/d9cb33c24380f26d18508328de41c3ba05c0fadc/api%2Frouters%2Ffunds.py\"\n  }\n]\nLinked chain ids:\n[\"evidence-chain-comment_to_commit-edde196c1e39b24a\"]\nSource graph evidence:\nSource evidence repo graph summary\nRepo: Va3elina/moex-aggregator\nGraph label: source_backed_multi_signal_graph\nNodes: 14\nEdges: 22\nNode types: {\"cooccurrence_profile\": 1, \"github_repo_summary\": 1, \"helicopter_repo_v\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/Va3elina/moex-aggregator", "source_id": "comment-chain-pattern-bad_chains-eda4b9cab2239c5b", "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": "Va3elina/moex-aggregator", "source_dataset": "comment_chain_patterns/bad_chains", "training_usage": "gold_candidate"}}}, {"ruleId": "foundry_bad_chain", "level": "error", "message": {"text": "Foundry mined bad chains: Va3elina/moex-aggregator"}, "properties": {"repobilityId": 441731, "scanner": "foundry_dataset", "fingerprint": "0b9f78e7f3089644e19b2cb2be0a272f30bd59cccf6cb90a8e0ea23802b7e8b2", "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": "Va3elina/moex-aggregator#79", "human_labels": ["agent_instruction_gap", "ui_or_frontend"], "issue_number": "79", "thread_label": "thread_has_human_issue_and_fix_context", "outcome_label": "self_attested_unverified", "source_backed": true, "max_confidence": 0.92, "repo_full_name": "Va3elina/moex-aggregator", "training_usage": "gold_candidate", "confidence_tier": "high_confidence", "source_chain_id": "evidence-chain-issue_chain-ebd4ff22b3cef4ad", "helicopter_views": {"schemas": 2}, "artifact_families": {"ci": 3, "docs": 5}, "source_chain_kind": "issue_chain", "changed_file_count": 4, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {"ui_or_frontend": 4}, "linked_commit_count": 3, "helicopter_view_count": 2, "source_artifact_count": 8, "classification_reasons": ["source_graph_has_real_artifacts", "source_graph_has_verification_artifacts", "repo_has_isolated_helicopter_views", "link_quality_high_confidence"], "linked_ci_commit_count": 1, "verification_artifact_count": 3, "design_schema_api_artifact_count": 0}, "text": "Comment chain pattern product: bad_chains\nRepo: Va3elina/moex-aggregator\nThread: Va3elina/moex-aggregator#79\nOutcome: self_attested_unverified\nThread label: thread_has_human_issue_and_fix_context\nSource graph label: source_backed_multi_signal_graph\nReasons: source_graph_has_real_artifacts, source_graph_has_verification_artifacts, repo_has_isolated_helicopter_views, link_quality_high_confidence\nChain evidence:\nIssue/PR evidence chain: Va3elina/moex-aggregator#79\nRepo: Va3elina/moex-aggregator\nThread label: thread_has_human_issue_and_fix_context\nOutcome: self_attested_unverified\nComment count: 1\nLinked commit count: 3\nLinked CI commit count: 1\nLinked CI labels: {'ci_pending_or_incomplete': 1}\nChanged file count: 4\nLabels: {'agent_instruction_gap': 1}\nPolarities: {'bad': 1}\nChanged file labels: {'ui_or_frontend': 4}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-e31233dcea886659\",\n    \"kind\": \"pull_request_body\",\n    \"label\": \"agent_instruction_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/Va3elina/moex-aggregator/pull/79\",\n    \"text\": \"GitHub feedback: agent_instruction_gap\\nPolarity: bad\\nKind: pull_request_body\\nRepo: Va3elina/moex-aggregator\\nAuthor: Va3elina (User)\\nURL: https://github.com/Va3elina/moex-aggregator/pull/79\\nTitle: feat(funds): \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a \u0432\u043c\u0435\u0441\u0442\u043e \u043b\u0435\u0433\u0435\u043d\u0434\u044b \u043f\u0440\u0438\u0442\u043e\u043a\u043e\u0432/\u043e\u0442\u0442\u043e\u043a\u043e\u0432, \u0435\u0434\u0438\u043d\u0438\u0446\u0430 \u0432 \u0441\u043a\u043e\u0431\u043a\u0430\u0445\\nBody:\\n## \u0427\u0442\u043e\\n\u041e\u0442\u043a\u0430\u0442 \u043f\u043e\u0434\u0445\u043e\u0434\u0430 \u00ab\u0435\u0434\u0438\u043d\u0438\u0446\u0430 \u043d\u0430 \u043f\u0440\u0430\u0432\u043e\u0439 \u043e\u0441\u0438\u00bb (\u043f\u0440\u0438\u0437\u043d\u0430\u043d \u043d\u0435\u0443\u0434\u0430\u0447\u043d\u044b\u043c) \u0438 \u043f\u0435\u0440\u0435\u0445\u043e\u0434 \u043a \u043e\u0431\u043e\u0431\u0449\u0430\u044e\u0449\u0435\u043c\u0443 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0443 \u0433\u0440\u0430\u0444\u0438\u043a\u0430 \u0432 \u0438\u043d\u0434\u0438\u043a\u0430\u0442\u043e\u0440\u0435 \u00ab\u0414\u0435\u043d\u044c\u0433\u0438 \u0432 \u0444\u043e\u043d\u0434\u0430\u0445\u00bb.\\n\\n**\u041f\u0440\u0438\u0442\u043e\u043a\u0438-\u041e\u0442\u0442\u043e\u043a\u0438:** \u0432\u043c\u0435\u0441\u0442\u043e \u0434\u0432\u0443\u0445 \u043f\u043e\u0434\u043f\u0438\u0441\u0435\u0439 \u043b\u0435\u0433\u0435\u043d\u0434\u044b (`\u041f\u0440\u0438\u0442\u043e\u043a \u0432 \u0444\u043e\u043d\u0434\u044b \u043e\u0431\u043b\u0438\u0433\u0430\u0446\u0438\u0439` / `\u041e\u0442\u0442\u043e\u043a \u0438\u0437 \u0444\u043e\u043d\u0434\u043e\u0432 \u043e\u0431\u043b\u0438\u0433\u0430\u0446\u0438\u0439`) \u2014 \u043e\u0434\u043d\u043e \u0446\u0435\u043d\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0435 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u043d\u0430\u0434 \u0433\u0440\u0430\u0444\u0438\u043a\u043e\u043c:\\n`\u0427\u0438\u0441\u0442\u044b\u0435 \u043f\u0440\u0438\u0442\u043e\u043a\u0438 \u0438 \u043e\u0442\u0442\u043e\u043a\u0438 \u0438\u0437 \u0444\u043e\u043d\u0434\u043e\u0432 \u043e\u0431\u043b\u0438\u0433\u0430\u0446\u0438\u0439 (\u043c\u043b\u0440\u0434 \u20bd)`\\n\u041f\u0440\u0430\u0432\u0430\u044f \u043e\u0441\u044c \u0441\u043d\u043e\u0432\u0430 \u0431\u0435\u0437 \u043f\u0440\u0438\u043f\u0438\u0441\u043a\u0438 `\u043c\u043b\u0440\u0434`. \u0420\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0434\u043b\u044f \u0432\u0441\u0435\u0445 \u043a\u0430\u0442\u0435\u0433\u043e\u0440\u0438\u0439 (\u0440\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u043f\u0430\u0434\u0435\u0436 \u043f\u043e\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f).\\n\\n**\u0421\u0427\u0410:** `\u043c\u043b\u0440\u0434` \u0443\u0431\u0440\u0430\u043d \u0441 \u043f\u0440\u0430\u0432\u043e\u0439 \u043e\u0441\u0438, \u0435\u0434\u0438\u043d\u0438\u0446\u0430 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0435\u043d\u0430 \u0432 \u043f\u043e\u0434\u043f\u0438\u0441\u044c \u0432 \u0442\u043e\u043c \u0436\u0435 \u0444\u043e\u0440\u043c\u0430\u0442\u0435: `\u0421\u0443\u043c\u043c\u0430\u0440\u043d\u0430\u044f \u0421\u0427\u0410 \u0444\u043e\u043d\u0434\u043e\u0432 \u043e\u0431\u043b\u0438\u0433\u0430\u0446\u0438\u0439 (\u043c\u043b\u0440\u0434 \u20bd)`.\\n\\n## \u0424\u0430\u0439\u043b\u044b\\n- `FlowsHistogram.tsx` \u2014 \u043f\u0440\u043e\u043f `inflowLabel`/`outflowLabel` \u2192 `flowTitle`; \u043e\u0434\u043d\u043e \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u0432\u043c\u0435\u0441\u0442\u043e `ChartLegend`; \u043e\u0441\u044c \u0431\u0435\u0437 \u0435\u0434\u0438\u043d\u0438\u0446\u044b.\\n- `SimpleChart.tsx` \u2014 revert: \u043f\u0440\u043e\u043f `secondaryAxisUnit` \u0443\u0434\u0430\u043b\u0451\u043d, \u043f\u0440\u0430\u0432\u0430\u044f \u043e\u0441\u044c \u0431\u0435\u0437 \u0435\u0434\u0438\u043d\u0438\u0446\u044b (\u043d\u0430 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0435 \u0433\u0440\u0430\u0444\u0438\u043a\u0438 \u043d\u0435 \u0432\u043b\u0438\u044f\u0435\u0442).\\n- `FundsMoneyPage.tsx` / `EmbedFundsMoney.tsx` \u2014 `flowTitle` \u0434\u043b\u044f \u0433\u0438\u0441\u0442\u043e\u0433\u0440\u0430\u043c\u043c\u044b; \u0421\u0427\u0410-\u043f\u043e\u0434\u043f\u0438\u0441\u044c `\"\n  }\n]\nChanged files:\n[\n  {\n    \"id\": \"github-pr-file-file-50a1760ad4786960\",\n    \"filename\": \"frontend/src/components/SimpleChart.tsx\",\n    \"label\": \"ui_or_frontend\",\n    \"status\": \"modified\",\n    \"additions\": 15,\n    \"deletions\": 31,\n    \"changes\": 46,\n    \"blob_url\": \"https://github.com/Va3elina/moex-aggregator/blob/31f1b21000072030dd8f640242b4d19d294ae094/frontend%2Fsrc%2Fcomponents%2FSimpleChart.tsx\"\n  },\n  {\n    \"id\": \"github-pr-file-file-d7c652ca69589d19\",\n    \"filename\": \"frontend/src/components/funds/FlowsHistogram.tsx\",\n    \"label\": \"ui_or_frontend\",\n    \"status\": \"modified\",\n    \"additions\": 15,\n    \"deletions\": 25,\n    \"changes\": 40,\n    \"blob_url\": \"https://\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/Va3elina/moex-aggregator", "source_id": "comment-chain-pattern-bad_chains-8e2fce1138af0851", "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": "Va3elina/moex-aggregator", "source_dataset": "comment_chain_patterns/bad_chains", "training_usage": "gold_candidate"}}}, {"ruleId": "foundry_bad_chain", "level": "error", "message": {"text": "Foundry mined bad chains: Va3elina/moex-aggregator"}, "properties": {"repobilityId": 441730, "scanner": "foundry_dataset", "fingerprint": "c852c98ce345d8dc559edfeda56017ffc0bd53eed31624bd8d5f4131dc11d085", "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": "Va3elina/moex-aggregator#78", "human_labels": ["agent_instruction_gap", "ui_or_frontend"], "issue_number": "78", "thread_label": "thread_has_human_issue_and_fix_context", "outcome_label": "self_attested_unverified", "source_backed": true, "max_confidence": 0.895, "repo_full_name": "Va3elina/moex-aggregator", "training_usage": "gold_candidate", "confidence_tier": "high_confidence", "source_chain_id": "evidence-chain-issue_chain-62fa0b9e6295dd9d", "helicopter_views": {"schemas": 2}, "artifact_families": {"ci": 3, "docs": 5}, "source_chain_kind": "issue_chain", "changed_file_count": 4, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {"ui_or_frontend": 4}, "linked_commit_count": 3, "helicopter_view_count": 2, "source_artifact_count": 8, "classification_reasons": ["source_graph_has_real_artifacts", "source_graph_has_verification_artifacts", "repo_has_isolated_helicopter_views", "link_quality_high_confidence"], "linked_ci_commit_count": 1, "verification_artifact_count": 3, "design_schema_api_artifact_count": 0}, "text": "Comment chain pattern product: bad_chains\nRepo: Va3elina/moex-aggregator\nThread: Va3elina/moex-aggregator#78\nOutcome: self_attested_unverified\nThread label: thread_has_human_issue_and_fix_context\nSource graph label: source_backed_multi_signal_graph\nReasons: source_graph_has_real_artifacts, source_graph_has_verification_artifacts, repo_has_isolated_helicopter_views, link_quality_high_confidence\nChain evidence:\nIssue/PR evidence chain: Va3elina/moex-aggregator#78\nRepo: Va3elina/moex-aggregator\nThread label: thread_has_human_issue_and_fix_context\nOutcome: self_attested_unverified\nComment count: 1\nLinked commit count: 3\nLinked CI commit count: 1\nLinked CI labels: {'ci_pending_or_incomplete': 1}\nChanged file count: 4\nLabels: {'agent_instruction_gap': 1}\nPolarities: {'bad': 1}\nChanged file labels: {'ui_or_frontend': 4}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-4bacd41f847b2d13\",\n    \"kind\": \"pull_request_body\",\n    \"label\": \"agent_instruction_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/Va3elina/moex-aggregator/pull/78\",\n    \"text\": \"GitHub feedback: agent_instruction_gap\\nPolarity: bad\\nKind: pull_request_body\\nRepo: Va3elina/moex-aggregator\\nAuthor: Va3elina (User)\\nURL: https://github.com/Va3elina/moex-aggregator/pull/78\\nTitle: feat(funds): \u0435\u0434\u0438\u043d\u0438\u0446\u0430 \u043c\u043b\u0440\u0434 \u043d\u0430 \u0432\u0435\u0440\u0445\u043d\u0435\u043c \u0442\u0438\u043a\u0435 \u043f\u0440\u0430\u0432\u043e\u0439 \u043e\u0441\u0438 \u0432\u043c\u0435\u0441\u0442\u043e \u043b\u0435\u0433\u0435\u043d\u0434\u044b\\nBody:\\n## \u0427\u0442\u043e\\n\u0415\u0434\u0438\u043d\u0438\u0446\u0430 \u0438\u0437\u043c\u0435\u0440\u0435\u043d\u0438\u044f \u043f\u0435\u0440\u0435\u0435\u0437\u0436\u0430\u0435\u0442 \u0438\u0437 \u043f\u043e\u0434\u043f\u0438\u0441\u0435\u0439 \u043b\u0435\u0433\u0435\u043d\u0434\u044b \u043d\u0430 \u043f\u0440\u0430\u0432\u0443\u044e \u043e\u0441\u044c \u2014 \u0432 \u043e\u0431\u043e\u0438\u0445 \u0440\u0435\u0436\u0438\u043c\u0430\u0445 \u0438\u043d\u0434\u0438\u043a\u0430\u0442\u043e\u0440\u0430 \u00ab\u0414\u0435\u043d\u044c\u0433\u0438 \u0432 \u0444\u043e\u043d\u0434\u0430\u0445\u00bb: \u041f\u0440\u0438\u0442\u043e\u043a\u0438-\u041e\u0442\u0442\u043e\u043a\u0438 \u0438 \u0421\u0427\u0410.\\n\\n\u0411\u044b\u043b\u043e: \u043b\u0435\u0433\u0435\u043d\u0434\u0430 `\u041f\u0440\u0438\u0442\u043e\u043a \u0432 \u0444\u043e\u043d\u0434\u044b \u0430\u043a\u0446\u0438\u0439, \u043c\u043b\u0440\u0434 \u0440\u0443\u0431` / `\u0421\u0443\u043c\u043c\u0430\u0440\u043d\u0430\u044f \u0421\u0427\u0410 \u0444\u043e\u043d\u0434\u043e\u0432 \u0430\u043a\u0446\u0438\u0439, \u043c\u043b\u0440\u0434 \u0440\u0443\u0431`.\\n\u0421\u0442\u0430\u043b\u043e: \u043b\u0435\u0433\u0435\u043d\u0434\u0430 \u0431\u0435\u0437 \u0435\u0434\u0438\u043d\u0438\u0446\u044b, \u0430 `\u043c\u043b\u0440\u0434` \u0441\u0442\u043e\u0438\u0442 \u0441\u0440\u0430\u0437\u0443 \u043f\u043e\u0441\u043b\u0435 \u0441\u0430\u043c\u043e\u0433\u043e \u0432\u0435\u0440\u0445\u043d\u0435\u0433\u043e \u0447\u0438\u0441\u043b\u0430 \u043f\u0440\u0430\u0432\u043e\u0439 \u043e\u0441\u0438 (`+8.9 \u043c\u043b\u0440\u0434`) \u2014 \u0442\u0435\u043c \u0436\u0435 \u0448\u0440\u0438\u0444\u0442\u043e\u043c \u0438 \u0446\u0432\u0435\u0442\u043e\u043c, \u0447\u0442\u043e \u0438 \u0447\u0438\u0441\u043b\u0430 \u043e\u0441\u0438.\\n\\n\u0420\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0434\u043b\u044f \u0432\u0441\u0435\u0445 \u043a\u0430\u0442\u0435\u0433\u043e\u0440\u0438\u0439 \u0444\u043e\u043d\u0434\u043e\u0432 (\u0430\u043a\u0446\u0438\u0438, \u043e\u0431\u043b\u0438\u0433\u0430\u0446\u0438\u0438, \u0434\u0435\u043d\u0435\u0436\u043d\u044b\u0439 \u0440\u044b\u043d\u043e\u043a, \u0437\u043e\u043b\u043e\u0442\u043e \u0438 \u0442.\u0434.) \u2014 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u043a\u0430\u0442\u0435\u0433\u043e\u0440\u0438\u0438 \u043f\u043e\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0447\u0435\u0440\u0435\u0437 \u0440\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u043f\u0430\u0434\u0435\u0436.\\n\\n## \u0424\u0430\u0439\u043b\u044b\\n**\u041f\u0440\u0438\u0442\u043e\u043a\u0438-\u041e\u0442\u0442\u043e\u043a\u0438 (\u0433\u0438\u0441\u0442\u043e\u0433\u0440\u0430\u043c\u043c\u0430):**\\n- `FlowsHistogram.tsx` \u2014 `\u043c\u043b\u0440\u0434` \u0443 \u0432\u0435\u0440\u0445\u043d\u0435\u0433\u043e \u0442\u0438\u043a\u0430 \u043f\u0440\u0430\u0432\u043e\u0439 \u043e\u0441\u0438; \u0434\u0435\u0444\u043e\u043b\u0442\u043d\u044b\u0435 \u043f\u043e\u0434\u043f\u0438\u0441\u0438 \u043b\u0435\u0433\u0435\u043d\u0434\u044b \u0431\u0435\u0437 \u0435\u0434\u0438\u043d\u0438\u0446\u044b; `whiteSpace: nowrap`.\\n- `FundsMoneyPage.tsx` / `EmbedFundsMoney.tsx` \u2014 \u043b\u0435\u0433\u0435\u043d\u0434\u0430 \u0431\u0435\u0437 \u0435\u0434\u0438\u043d\u0438\u0446\u044b; \u0432 \u044d\u043c\u0431\u0435\u0434\u0435 \u043f\u0440\u0430\u0432\u044b\u0439 pad \u043e\u0441\u0438 `55 -> 78px`.\\n\\n**\u0421\u0427\u0410 (SimpleChart, \u043f\u0440\u0430\u0432\u0430\u044f \u043e\u0441\u044c):**\\n- `SimpleChart.tsx` \u2014 \u043d\u043e\u0432\u044b\u0439 \u043e\u043f\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u044b\u0439 \u043f\u0440\u043e\u043f `secondaryAxisUnit`: \u0435\u0434\u0438\u043d\u0438\u0446\u0430 \u0440\u0438\u0441\u0443\u0435\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u0443 \u0432\u0435\u0440\u0445\u043d\u0435\"\n  }\n]\nChanged files:\n[\n  {\n    \"id\": \"github-pr-file-file-c4a2c641a1dc0c74\",\n    \"filename\": \"frontend/src/components/SimpleChart.tsx\",\n    \"label\": \"ui_or_frontend\",\n    \"status\": \"modified\",\n    \"additions\": 31,\n    \"deletions\": 15,\n    \"changes\": 46,\n    \"blob_url\": \"https://github.com/Va3elina/moex-aggregator/blob/63bac4415d82af77b351119044fc35900f249be5/frontend%2Fsrc%2Fcomponents%2FSimpleChart.tsx\"\n  },\n  {\n    \"id\": \"github-pr-file-file-921ed453f0322b81\",\n    \"filename\": \"frontend/src/components/funds/FlowsHistogram.tsx\",\n    \"label\": \"ui_or_frontend\",\n    \"status\": \"modified\",\n    \"additions\": 11,\n    \"deletions\": 6,\n    \"changes\": 17,\n    \"blob_url\": \"https:/\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/Va3elina/moex-aggregator", "source_id": "comment-chain-pattern-bad_chains-58378f43b6e66023", "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": "Va3elina/moex-aggregator", "source_dataset": "comment_chain_patterns/bad_chains", "training_usage": "gold_candidate"}}}, {"ruleId": "foundry_bad_chain", "level": "error", "message": {"text": "Foundry mined bad chains: Va3elina/moex-aggregator"}, "properties": {"repobilityId": 441729, "scanner": "foundry_dataset", "fingerprint": "d914602bc23d7042ec29721d2a5c632948ab3146c52aca896a8e08892fa3a88a", "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": "Va3elina/moex-aggregator#77", "human_labels": ["ui_or_frontend", "ui_workflow_gap"], "issue_number": "77", "thread_label": "thread_has_human_issue_and_fix_context", "outcome_label": "self_attested_unverified", "source_backed": true, "max_confidence": 0.749, "repo_full_name": "Va3elina/moex-aggregator", "training_usage": "weak_supervision", "confidence_tier": "weak_supervision", "source_chain_id": "evidence-chain-issue_chain-5f84f407cb3688db", "helicopter_views": {"schemas": 2}, "artifact_families": {"ci": 3, "docs": 5}, "source_chain_kind": "issue_chain", "changed_file_count": 3, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {"ui_or_frontend": 3}, "linked_commit_count": 1, "helicopter_view_count": 2, "source_artifact_count": 8, "classification_reasons": ["source_graph_has_real_artifacts", "source_graph_has_verification_artifacts", "repo_has_isolated_helicopter_views", "link_quality_weak_supervision"], "linked_ci_commit_count": 0, "verification_artifact_count": 3, "design_schema_api_artifact_count": 0}, "text": "Comment chain pattern product: bad_chains\nRepo: Va3elina/moex-aggregator\nThread: Va3elina/moex-aggregator#77\nOutcome: self_attested_unverified\nThread label: thread_has_human_issue_and_fix_context\nSource graph label: source_backed_multi_signal_graph\nReasons: source_graph_has_real_artifacts, source_graph_has_verification_artifacts, repo_has_isolated_helicopter_views, link_quality_weak_supervision\nChain evidence:\nIssue/PR evidence chain: Va3elina/moex-aggregator#77\nRepo: Va3elina/moex-aggregator\nThread label: thread_has_human_issue_and_fix_context\nOutcome: self_attested_unverified\nComment count: 1\nLinked commit count: 1\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 3\nLabels: {'ui_workflow_gap': 1}\nPolarities: {'bad': 1}\nChanged file labels: {'ui_or_frontend': 3}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-112645e666926224\",\n    \"kind\": \"pull_request_body\",\n    \"label\": \"ui_workflow_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/Va3elina/moex-aggregator/pull/77\",\n    \"text\": \"GitHub feedback: ui_workflow_gap\\nPolarity: bad\\nKind: pull_request_body\\nRepo: Va3elina/moex-aggregator\\nAuthor: Va3elina (User)\\nURL: https://github.com/Va3elina/moex-aggregator/pull/77\\nTitle: feat(funds): \u041f\u0440\u0438\u0442\u043e\u043a\u0438-\u041e\u0442\u0442\u043e\u043a\u0438 \u0441\u043b\u0435\u0432\u0430, \u0421\u0427\u0410 \u0441\u043f\u0440\u0430\u0432\u0430 \u0432 \u0414\u0435\u043d\u044c\u0433\u0438 \u0432 \u0444\u043e\u043d\u0434\u0430\u0445\\nBody:\\n## \u0427\u0442\u043e\\n\\n\u0412 \u0438\u043d\u0434\u0438\u043a\u0430\u0442\u043e\u0440\u0435 \u00ab\u0414\u0435\u043d\u044c\u0433\u0438 \u0432 \u0444\u043e\u043d\u0434\u0430\u0445\u00bb \u043f\u043e\u043c\u0435\u043d\u044f\u043b \u043c\u0435\u0441\u0442\u0430\u043c\u0438 \u0440\u0435\u0436\u0438\u043c\u044b \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0430\u0442\u0435\u043b\u044f: \u0442\u0435\u043f\u0435\u0440\u044c **\u041f\u0440\u0438\u0442\u043e\u043a\u0438-\u041e\u0442\u0442\u043e\u043a\u0438 \u0441\u043b\u0435\u0432\u0430**, **\u0421\u0427\u0410 \u0441\u043f\u0440\u0430\u0432\u0430**.\\n\\n## \u0413\u0434\u0435\\n\\n\u0418\u0437\u043c\u0435\u043d\u0451\u043d \u043f\u043e\u0440\u044f\u0434\u043e\u043a \u043e\u043f\u0446\u0438\u0439 \u043d\u0430 \u0432\u0441\u0435\u0445 \u0442\u0440\u0451\u0445 \u043f\u043e\u0432\u0435\u0440\u0445\u043d\u043e\u0441\u0442\u044f\u0445, \u0447\u0442\u043e\u0431\u044b \u0431\u044b\u043b\u043e \u043a\u043e\u043d\u0441\u0438\u0441\u0442\u0435\u043d\u0442\u043d\u043e:\\n- \u0414\u0435\u0441\u043a\u0442\u043e\u043f \u2014 `frontend/src/pages/FundsMoneyPage.tsx` (SegmentedControl)\\n- \u041c\u043e\u0431\u0430\u0439\u043b \u2014 `frontend/src/pages/mobile/MobileFundsMoneyPage.tsx`\\n- Embed \u2014 `frontend/src/pages/embed/EmbedFundsMoney.tsx`\\n\\n\u041b\u043e\u0433\u0438\u043a\u0430, \u0434\u0435\u0444\u043e\u043b\u0442\u043d\u044b\u0439 \u0440\u0435\u0436\u0438\u043c (flows) \u0438 tier-\u0437\u0430\u043c\u043e\u043a \u043d\u0430 \u00ab\u041f\u0440\u0438\u0442\u043e\u043a\u0438-\u041e\u0442\u0442\u043e\u043a\u0438\u00bb \u043d\u0435 \u0442\u0440\u043e\u043d\u0443\u0442\u044b, \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u043e\u0440\u044f\u0434\u043e\u043a \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f.\\n\\n\ud83e\udd16 Generated with [Claude Code](https://claude.com/claude-code)\"\n  }\n]\nChanged files:\n[\n  {\n    \"id\": \"github-pr-file-file-c5e97abbe0803958\",\n    \"filename\": \"frontend/src/pages/FundsMoneyPage.tsx\",\n    \"label\": \"ui_or_frontend\",\n    \"status\": \"modified\",\n    \"additions\": 2,\n    \"deletions\": 2,\n    \"changes\": 4,\n    \"blob_url\": \"https://github.com/Va3elina/moex-aggregator/blob/9c578deaecaa21c11b9834b6f19bc6ba66f9d91c/frontend%2Fsrc%2Fpages%2FFundsMoneyPage.tsx\"\n  },\n  {\n    \"id\": \"github-pr-file-file-7b235c7e946a05f4\",\n    \"filename\": \"frontend/src/pages/embed/EmbedFundsMoney.tsx\",\n    \"label\": \"ui_or_frontend\",\n    \"status\": \"modified\",\n    \"additions\": 1,\n    \"deletions\": 1,\n    \"changes\": 2,\n    \"blob_url\": \"https://github.com/Va3elina/moex-aggregator/blob/9c578deaecaa21c11b9834b6f19bc6ba66f9d91c/frontend%2Fsrc%2Fpages%2Fembed%2FEmbedFundsMoney.tsx\"\n  },\n  {\n    \"id\": \"github-pr-file-file-34c5d4e664a4b98a\",\n    \"filename\": \"frontend/src/pages/mobile/MobileFundsMoneyPage.tsx\",\n    \"label\": \"ui_or_frontend\",\n    \"status\": \"modified\",\n    \"additions\": 1,\n    \"deletions\": 1,\n    \"changes\": 2,\n    \"blob_url\": \"https://github.com/Va3elin\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/Va3elina/moex-aggregator", "source_id": "comment-chain-pattern-bad_chains-54be6edf05dc5975", "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": "Va3elina/moex-aggregator", "source_dataset": "comment_chain_patterns/bad_chains", "training_usage": "weak_supervision"}}}, {"ruleId": "foundry_bad_chain", "level": "error", "message": {"text": "Foundry mined bad chains: Va3elina/moex-aggregator"}, "properties": {"repobilityId": 441728, "scanner": "foundry_dataset", "fingerprint": "98e36593f1a68727be6b16f7f861580142f5cd871896466b06e1c68181221e45", "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": "Va3elina/moex-aggregator#74", "human_labels": ["api_or_backend", "ui_or_frontend", "ui_workflow_gap"], "issue_number": "74", "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": "Va3elina/moex-aggregator", "training_usage": "negative_or_unresolved", "confidence_tier": "unresolved", "source_chain_id": "evidence-chain-issue_chain-114f82edbbaf9930", "helicopter_views": {"schemas": 2}, "artifact_families": {"ci": 3, "docs": 5}, "source_chain_kind": "issue_chain", "changed_file_count": 8, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {"api_or_backend": 1, "ui_or_frontend": 7}, "linked_commit_count": 0, "helicopter_view_count": 2, "source_artifact_count": 8, "classification_reasons": ["source_graph_has_real_artifacts", "source_graph_has_verification_artifacts", "repo_has_isolated_helicopter_views", "link_quality_unresolved"], "linked_ci_commit_count": 0, "verification_artifact_count": 3, "design_schema_api_artifact_count": 0}, "text": "Comment chain pattern product: bad_chains\nRepo: Va3elina/moex-aggregator\nThread: Va3elina/moex-aggregator#74\nOutcome: not_resolved_or_not_observed\nThread label: thread_has_human_issue_without_fix_context\nSource graph label: source_backed_multi_signal_graph\nReasons: source_graph_has_real_artifacts, source_graph_has_verification_artifacts, repo_has_isolated_helicopter_views, link_quality_unresolved\nChain evidence:\nIssue/PR evidence chain: Va3elina/moex-aggregator#74\nRepo: Va3elina/moex-aggregator\nThread label: thread_has_human_issue_without_fix_context\nOutcome: not_resolved_or_not_observed\nComment count: 1\nLinked commit count: 0\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 8\nLabels: {'ui_workflow_gap': 1}\nPolarities: {'bad': 1}\nChanged file labels: {'api_or_backend': 1, 'ui_or_frontend': 7}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-f9959808090ad27f\",\n    \"kind\": \"pull_request_body\",\n    \"label\": \"ui_workflow_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/Va3elina/moex-aggregator/pull/74\",\n    \"text\": \"GitHub feedback: ui_workflow_gap\\nPolarity: bad\\nKind: pull_request_body\\nRepo: Va3elina/moex-aggregator\\nAuthor: Va3elina (User)\\nURL: https://github.com/Va3elina/moex-aggregator/pull/74\\nTitle: feat(\u0441\u0438\u043b\u0430 \u0440\u044b\u043d\u043a\u0430): \u043f\u0435\u0440\u0438\u043e\u0434\u044b 10 \u0438 20 \u043b\u0435\u0442\\nBody:\\n## \u0427\u0442\u043e\\n\\n\u0412 \u0438\u043d\u0434\u0438\u043a\u0430\u0442\u043e\u0440 \u0421\u0438\u043b\u0430 \u0440\u044b\u043d\u043a\u0430 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u044b \u043f\u0435\u0440\u0438\u043e\u0434\u044b **10 \u043b\u0435\u0442** \u0438 **20 \u043b\u0435\u0442** \u043c\u0435\u0436\u0434\u0443 5\u041b \u0438 \u0412\u0441\u0451. \u0427\u0438\u043f\u044b \u043f\u043e\u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u0432 \u0434\u0435\u0441\u043a\u0442\u043e\u043f\u043d\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435, \u043c\u043e\u0431\u0438\u043b\u044c\u043d\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0438, embed-\u0432\u0438\u0434\u0436\u0435\u0442\u0435 \u0438 \u0432 \u0441\u0435\u043b\u0435\u043a\u0442\u043e\u0440\u0435 \u043f\u0435\u0440\u0438\u043e\u0434\u0430 CSV-\u044d\u043a\u0441\u043f\u043e\u0440\u0442\u0430.\\n\\n## \u0414\u043d\u0438 \u0438 \u0442\u0430\u0440\u0438\u0444\u044b\\n\\n| \u041f\u0435\u0440\u0438\u043e\u0434 | days | \u0422\u0430\u0440\u0438\u0444 |\\n|--------|------|-------|\\n| 1\u0413 | 365 | Free |\\n| 5\u041b | 1825 | Basic |\\n| **10\u041b** | **3650** | **Basic** |\\n| **20\u041b** | **7300** | **Pro** |\\n| \u0412\u0441\u0451 | 9000 | Pro |\\n\\n\u0413\u0435\u0439\u0442\u0438\u043d\u0433 \u043f\u043e `max_history_days` \u0443\u0436\u0435 \u043e\u043f\u0438\u0441\u0430\u043d \u0432 `features.py` (free 365 / basic 3650 / pro \u0431\u0435\u0437 \u043b\u0438\u043c\u0438\u0442\u0430). 10\u041b=3650 \u0440\u043e\u0432\u043d\u043e \u0443\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0432 Basic, 20\u041b=7300 \u0443\u0445\u043e\u0434\u0438\u0442 \u0432 Pro. \u041b\u043e\u0433\u0438\u043a\u0430 \u043d\u0430 \u0444\u0440\u043e\u043d\u0442\u0435 (`canUsePeriod`) \u0438 \u043d\u0430 \u0431\u044d\u043a\u0435 (`enforce_tier_limits`, \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0435 `days > max`) \u0441\u043e\u0432\u043f\u0430\u0434\u0430\u0435\u0442, \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0445 \u043f\u0440\u0430\u0432\u043e\u043a \u0442\u0430\u0440\u0438\u0444\u043e\u0432 \u043d\u0435 \u043f\u043e\u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043b\u043e\u0441\u044c.\\n\\n## \u0424\u0430\u0439\u043b\u044b\\n\\n\u0424\u0440\u043e\u043d\u0442: `StrengthPage`, `StrengthControls`, `MobileStrengthPage`, `EmbedStrength`, \u043f\u043b\u044e\u0441 \u043a\u0430\u0440\u0442\u044b \u043f\u0435\u0440\u0438\u043e\u0434\u043e\u0432 `accessControl.ts`, `TierFeaturesContext.tsx`, `csvPeriod.ts`.\\n\u0411\u044d\u043a: `exports.py` (breadth.csv).\\n\\n## \u041f\u043e\u043f\u0443\u0442\u043d\u043e\\n\\n- Mobile `\u0412\u0441\u044f \u0438\u0441\u0442\u043e\u0440\u0438\u044f` \u043f\u043e\u0434\u043d\u044f\u0442\u0430 \u0441 3650 \u0434\u043e \"\n  }\n]\nChanged files:\n[\n  {\n    \"id\": \"github-pr-file-file-6d6219d548e8348f\",\n    \"filename\": \"api/routers/exports.py\",\n    \"label\": \"api_or_backend\",\n    \"status\": \"modified\",\n    \"additions\": 1,\n    \"deletions\": 1,\n    \"changes\": 2,\n    \"blob_url\": \"https://github.com/Va3elina/moex-aggregator/blob/2581b5d3117d9fc294d3a326356f0a75954d27a7/api%2Frouters%2Fexports.py\"\n  },\n  {\n    \"id\": \"github-pr-file-file-35675fb47e13bb4a\",\n    \"filename\": \"frontend/src/components/strength/StrengthControls.tsx\",\n    \"label\": \"ui_or_frontend\",\n    \"status\": \"modified\",\n    \"additions\": 3,\n    \"deletions\": 1,\n    \"changes\": 4,\n    \"blob_url\": \"https://github.com/Va3elina/moex-aggregator\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/Va3elina/moex-aggregator", "source_id": "comment-chain-pattern-bad_chains-e4af0359dd9217cf", "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": "Va3elina/moex-aggregator", "source_dataset": "comment_chain_patterns/bad_chains", "training_usage": "negative_or_unresolved"}}}, {"ruleId": "foundry_bad_chain", "level": "error", "message": {"text": "Foundry mined bad chains: Va3elina/moex-aggregator"}, "properties": {"repobilityId": 441727, "scanner": "foundry_dataset", "fingerprint": "25798011137cc6d9457dae2ad498e47ed9dc63981490577e67645332862e23f7", "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": "Va3elina/moex-aggregator#73", "human_labels": ["api_integration_gap", "api_or_backend", "source_or_other"], "issue_number": "73", "thread_label": "thread_has_human_issue_and_fix_context", "outcome_label": "self_attested_unverified", "source_backed": true, "max_confidence": 0.82, "repo_full_name": "Va3elina/moex-aggregator", "training_usage": "gold_candidate", "confidence_tier": "high_confidence", "source_chain_id": "evidence-chain-issue_chain-8dade277797723bc", "helicopter_views": {"schemas": 2}, "artifact_families": {"ci": 3, "docs": 5}, "source_chain_kind": "issue_chain", "changed_file_count": 6, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {"api_or_backend": 4, "source_or_other": 2}, "linked_commit_count": 1, "helicopter_view_count": 2, "source_artifact_count": 8, "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": 3, "design_schema_api_artifact_count": 0}, "text": "Comment chain pattern product: bad_chains\nRepo: Va3elina/moex-aggregator\nThread: Va3elina/moex-aggregator#73\nOutcome: self_attested_unverified\nThread label: thread_has_human_issue_and_fix_context\nSource graph label: source_backed_multi_signal_graph\nReasons: source_graph_has_real_artifacts, source_graph_has_verification_artifacts, repo_has_isolated_helicopter_views, link_quality_high_confidence, high_risk_human_feedback_label\nChain evidence:\nIssue/PR evidence chain: Va3elina/moex-aggregator#73\nRepo: Va3elina/moex-aggregator\nThread label: thread_has_human_issue_and_fix_context\nOutcome: self_attested_unverified\nComment count: 1\nLinked commit count: 1\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 6\nLabels: {'api_integration_gap': 1}\nPolarities: {'bad': 1}\nChanged file labels: {'source_or_other': 2, 'api_or_backend': 4}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-d1a884a1309a2b02\",\n    \"kind\": \"pull_request_body\",\n    \"label\": \"api_integration_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/Va3elina/moex-aggregator/pull/73\",\n    \"text\": \"GitHub feedback: api_integration_gap\\nPolarity: bad\\nKind: pull_request_body\\nRepo: Va3elina/moex-aggregator\\nAuthor: Va3elina (User)\\nURL: https://github.com/Va3elina/moex-aggregator/pull/73\\nTitle: chore(funds): \u0443\u0434\u0430\u043b\u0438\u0442\u044c \u043d\u0435\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u0439 vim_intraday + \u043f\u0443\u043b\u044c\u0441 distributions\\nBody:\\n## \u0423\u0434\u0430\u043b\u0435\u043d\u0438\u0435 vim_intraday (\u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0441\u0430\u0439\u0442\u043e\u043c)\\n\u041f\u043e\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043d\u043e: `getFundIntraday` (api.ts) **\u043d\u0438\u0433\u0434\u0435 \u043d\u0435 \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f**, `/fund-trades/intraday` \u043d\u0435 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u0442\u0441\u044f \u043d\u0438 \u043e\u0434\u043d\u0438\u043c \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u043e\u043c \u2014 \u043d\u0435\u0434\u043e\u0434\u0435\u043b\u0430\u043d\u043d\u044b\u0439 \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442. \u0423\u0431\u0440\u0430\u043d\u043e: \u043f\u0430\u0440\u0441\u0435\u0440, \u043c\u0451\u0440\u0442\u0432\u044b\u0439 \u044d\u043d\u0434\u043f\u043e\u0438\u043d\u0442, \u043c\u043e\u0434\u0435\u043b\u044c+\u044d\u043a\u0441\u043f\u043e\u0440\u0442, \u0442\u0438\u043f\u044b/\u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0444\u0440\u043e\u043d\u0442\u0430. Host-cron \u0441\u043d\u0438\u043c\u0430\u0435\u0442\u0441\u044f \u043d\u0430 \u0441\u0435\u0440\u0432\u0435\u0440\u0435, \u0442\u0430\u0431\u043b\u0438\u0446\u0430 `fund_holdings_intraday` \u0434\u0440\u043e\u043f\u0430\u0435\u0442\u0441\u044f \u0441 pg_dump-\u0431\u044d\u043a\u0430\u043f\u043e\u043c.\\n\\n## distributions (\u0436\u0438\u0432\u0430\u044f \u0444\u0438\u0447\u0430) \u2014 \u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d + heartbeat\\n\u041a\u043e\u0440\u043c\u0438\u0442 total-return \u0434\u043e\u0445\u043e\u0434\u043d\u043e\u0441\u0442\u044c \u0444\u043e\u043d\u0434\u043e\u0432 (FundsTable/FundTradesPage). \u0414\u043e\u0431\u0430\u0432\u043b\u0435\u043d `record_pipeline_run` (host-cron \u0432\u043d\u0435 \u043e\u0440\u043a\u0435\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u0430) \u2192 \u043f\u043e\u0434 \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u043d\u0433\u043e\u043c.\\n\\n\u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430: py_compile \u043e\u043a, \u043d\u043e\u043b\u044c \u0432\u0438\u0441\u044f\u0447\u0438\u0445 \u0441\u0441\u044b\u043b\u043e\u043a (`fund_holdings_intraday`/`getFundIntraday`/`FundIntraday*`).\\n\\n\ud83e\udd16 Generated with [Claude Code](https://claude.com/claude-code)\"\n  }\n]\nChanged files:\n[\n  {\n    \"id\": \"github-pr-file-file-c0bb4c79abac0c76\",\n    \"filename\": \"Funds/fetch_distributions.py\",\n    \"label\": \"source_or_other\",\n    \"status\": \"modified\",\n    \"additions\": 12,\n    \"deletions\": 0,\n    \"changes\": 12,\n    \"blob_url\": \"https://github.com/Va3elina/moex-aggregator/blob/c0db466a6fb0330d55f263ae20a216d60421e4ac/Funds%2Ffetch_distributions.py\"\n  },\n  {\n    \"id\": \"github-pr-file-file-b9ffdd0b8095ba8b\",\n    \"filename\": \"Funds/vim_intraday.py\",\n    \"label\": \"source_or_other\",\n    \"status\": \"removed\",\n    \"additions\": 0,\n    \"deletions\": 226,\n    \"changes\": 226,\n    \"blob_url\": \"https://github.com/Va3elina/moex-aggregator/blob/d5ec780db076368e6f0eae801ecdec4784623bdf/Funds%2Fvim_intraday.py\"\n  },\n  {\n    \"id\": \"github-pr-file-file-536df397ff28a954\",\n    \"filename\": \"api/models/__init__.py\",\n    \"label\":\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/Va3elina/moex-aggregator", "source_id": "comment-chain-pattern-bad_chains-17639e1db8410744", "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": "Va3elina/moex-aggregator", "source_dataset": "comment_chain_patterns/bad_chains", "training_usage": "gold_candidate"}}}, {"ruleId": "foundry_bad_chain", "level": "error", "message": {"text": "Foundry mined bad chains: Va3elina/moex-aggregator"}, "properties": {"repobilityId": 441726, "scanner": "foundry_dataset", "fingerprint": "9f047308d111cc3ae7efe42414b7187c7bc84e41becd72d34194031d81643497", "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": "Va3elina/moex-aggregator#64", "human_labels": ["api_integration_gap"], "issue_number": "64", "thread_label": "thread_has_human_issue_and_fix_context", "outcome_label": "self_attested_unverified", "source_backed": true, "max_confidence": 0.82, "repo_full_name": "Va3elina/moex-aggregator", "training_usage": "gold_candidate", "confidence_tier": "high_confidence", "source_chain_id": "evidence-chain-issue_chain-c8a82765ff43c60a", "helicopter_views": {"schemas": 2}, "artifact_families": {"ci": 3, "docs": 5}, "source_chain_kind": "issue_chain", "changed_file_count": 0, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {}, "linked_commit_count": 1, "helicopter_view_count": 2, "source_artifact_count": 8, "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": 3, "design_schema_api_artifact_count": 0}, "text": "Comment chain pattern product: bad_chains\nRepo: Va3elina/moex-aggregator\nThread: Va3elina/moex-aggregator#64\nOutcome: self_attested_unverified\nThread label: thread_has_human_issue_and_fix_context\nSource graph label: source_backed_multi_signal_graph\nReasons: source_graph_has_real_artifacts, source_graph_has_verification_artifacts, repo_has_isolated_helicopter_views, link_quality_high_confidence, high_risk_human_feedback_label\nChain evidence:\nIssue/PR evidence chain: Va3elina/moex-aggregator#64\nRepo: Va3elina/moex-aggregator\nThread label: thread_has_human_issue_and_fix_context\nOutcome: self_attested_unverified\nComment count: 1\nLinked commit count: 1\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 0\nLabels: {'api_integration_gap': 1}\nPolarities: {'bad': 1}\nChanged file labels: {}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-308d0b43bd98edc5\",\n    \"kind\": \"pull_request_body\",\n    \"label\": \"api_integration_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/Va3elina/moex-aggregator/pull/64\",\n    \"text\": \"GitHub feedback: api_integration_gap\\nPolarity: bad\\nKind: pull_request_body\\nRepo: Va3elina/moex-aggregator\\nAuthor: Va3elina (User)\\nURL: https://github.com/Va3elina/moex-aggregator/pull/64\\nTitle: \u0421\u0435\u0437\u043e\u043d\u043d\u043e\u0441\u0442\u044c: \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u00ab\u0411\u0435\u0437 \u0432\u044b\u0431\u0440\u043e\u0441\u043e\u0432\u00bb / \u00ab\u0411\u0435\u0437 \u0434\u0438\u0432\u0433\u044d\u043f\u043e\u0432\u00bb \u0432\u043d\u0443\u0442\u0440\u0438 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043f\u0435\u0440\u0438\u043e\u0434\u0430\\nBody:\\n## \u0417\u0430\u0447\u0435\u043c\\n\\n\u041d\u0430 \u0433\u0440\u0430\u0444\u0438\u043a\u0435 \u0441\u0435\u0437\u043e\u043d\u043d\u043e\u0441\u0442\u0438 \u0442\u0443\u043c\u0431\u043b\u0435\u0440\u044b **\u00ab\u0411\u0435\u0437 \u0432\u044b\u0431\u0440\u043e\u0441\u043e\u0432\u00bb** \u0438 **\u00ab\u0411\u0435\u0437 \u0434\u0438\u0432\u0438\u0434\u0435\u043d\u0434\u043d\u044b\u0445 \u0433\u044d\u043f\u043e\u0432\u00bb** \u043d\u0435 \u043a\u043e\u043c\u0431\u0438\u043d\u0438\u0440\u043e\u0432\u0430\u043b\u0438\u0441\u044c \u0441 \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u044b\u043c \u043f\u0435\u0440\u0438\u043e\u0434\u043e\u043c. \u041d\u0430 \u0434\u0435\u0441\u043a\u0442\u043e\u043f\u0435 \u00ab\u0411\u0435\u0437 \u0432\u044b\u0431\u0440\u043e\u0441\u043e\u0432\u00bb \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u043b \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u0443\u044e \u0441\u0435\u0440\u0438\u044e-\u043c\u0435\u0434\u0438\u0430\u043d\u0443 \u043f\u043e **\u0432\u0441\u0435\u0439 \u0438\u0441\u0442\u043e\u0440\u0438\u0438**, \u0438\u0433\u043d\u043e\u0440\u0438\u0440\u0443\u044f `sinceYear` \u2014 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u043c\u0435\u0434\u0438\u0430\u043d\u0443 \u00ab\u0441 2000 \u0433\u043e\u0434\u0430\u00bb \u0431\u044b\u043b\u043e \u043d\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e (\u043d\u0430\u043f\u0440. IMOEX \u0432\u0441\u0435\u0433\u0434\u0430 \u0441\u0447\u0438\u0442\u0430\u043b\u0441\u044f \u0441 1997). `excludeDividends` \u0431\u044b\u043b \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u044b\u043c.\\n\\n## \u0427\u0442\u043e \u0441\u0434\u0435\u043b\u0430\u043d\u043e\\n\\n\u041e\u0431\u0435 \u043e\u043f\u0446\u0438\u0438 \u043f\u0435\u0440\u0435\u0435\u0445\u0430\u043b\u0438 \u0432 **\u0438\u043d\u0434\u0438\u0432\u0438\u0434\u0443\u0430\u043b\u044c\u043d\u044b\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043f\u0435\u0440\u0438\u043e\u0434\u0430**:\\n\\n- \u0414\u0435\u0441\u043a\u0442\u043e\u043f: \u0443 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0447\u0438\u043f\u0430 \u00ab\u041f\u0435\u0440\u0438\u043e\u0434 \u0441 YYYY\u00bb \u043f\u043e\u044f\u0432\u0438\u043b\u0430\u0441\u044c \u0448\u0435\u0441\u0442\u0435\u0440\u0451\u043d\u043a\u0430 \u2192 \u043f\u043e\u043f\u0430\u043f \u0441 \u0434\u0432\u0443\u043c\u044f \u0433\u0430\u043b\u043e\u0447\u043a\u0430\u043c\u0438 (\u0434\u0438\u0432\u0438\u0434\u0435\u043d\u0434\u044b \u0441\u043a\u0440\u044b\u0442\u044b \u0434\u043b\u044f \u0438\u043d\u0434\u0435\u043a\u0441\u043e\u0432/\u0432\u0430\u043b\u044e\u0442/\u0441\u044b\u0440\u044c\u044f).\\n- \u041c\u043e\u0431\u0438\u043b\u044c\u043d\u0430\u044f: \u043a\u0430\u0436\u0434\u044b\u0439 \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u044b\u0439 \u043f\u0435\u0440\u0438\u043e\u0434 \u0432 \u00ab\u041e\u043f\u0446\u0438\u044f\u0445\u00bb \u2014 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u0430\u044f \u0441\u0442\u0440\u043e\u043a\u0430 \u0441\u043e \u0441\u0432\u043e\u0438\u043c\u0438 \u0442\u0443\u043c\u0431\u043b\u0435\u0440\u0430\u043c\u0438; \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u044b\u0435 \u00ab\u041c\u0435\u0434\u0438\u0430\u043d\u0430\u00bb/\u00ab\u0411\u0435\u0437 \u0434\u0438\u0432\u0438\u0434\u0435\u043d\u0434\u043e\u0432\u00bb \u0443\u0431\u0440\u0430\u043d\u044b.\\n- \u0420\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u044b \u0434\u0443\u0431\u043b\u0438 \u0433\u043e\u0434\u0430 \u0441 \u0440\u0430\u0437\u043d\u044b\u043c\u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430\u043c\u0438: \u00ab\u0421 2000\u00bb \u0438 \u00ab\u0421 2000 \u00b7 \u043c\u0435\u0434\u0438\u0430\u043d\u0430\u00bb \u043c\u043e\u0436\u043d\u043e \u0434\u0435\u0440\u0436\u0430\u0442\u044c \u0440\u044f\u0434\u043e\u043c \u0434\u043b\u044f \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u044f.\\n- \u041a\u0430\u0436\u0434\u0430\u044f \u0441\u0435\u0440\u0438\u044f \u0437\u0430\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0441\u043e \u0441\u0432\u043e\u0438\u043c\u0438 `aggType` (median/avg) \u0438 `exclude_dividends`.\\n\\nEmbed-\u0432\u0438\u0434\u0436\u0435\u0442 \"\n  }\n]\nChanged files:\n[]\nLinked chain ids:\n[\"evidence-chain-comment_to_commit-babd58980a54463c\"]\nSource graph evidence:\nSource evidence repo graph summary\nRepo: Va3elina/moex-aggregator\nGraph label: source_backed_multi_signal_graph\nNodes: 14\nEdges: 22\nNode types: {\"cooccurrence_profile\": 1, \"github_repo_summary\": 1, \"helicopter_repo_view\": 2, \"repo\": 1, \"source_artifact\": 8, \"source_bundle\": 1}\nEdge types: {\"artifact_needs_claim_verification\": 5, \"artifact_supports_verification\": 3, \"repo_has_cooccurrence_profile\": 1, \"repo_has_github_evidence_summary\": 1, \"repo_has_schemas_helicopter_view\": 2, \"repo_has_source_artifact\": 8, \"repo_has_source_bundle\": 1, \"source_bundle_uses_cooccurrence_pro\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/Va3elina/moex-aggregator", "source_id": "comment-chain-pattern-bad_chains-436458a8cff290d2", "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": "Va3elina/moex-aggregator", "source_dataset": "comment_chain_patterns/bad_chains", "training_usage": "gold_candidate"}}}, {"ruleId": "foundry_bad_chain", "level": "error", "message": {"text": "Foundry mined bad chains: Va3elina/moex-aggregator"}, "properties": {"repobilityId": 441725, "scanner": "foundry_dataset", "fingerprint": "902e76bfe6a119362db519a20609e7c73bfd55ff55e708c81a3962ac3aa702d7", "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": "Va3elina/moex-aggregator#63", "human_labels": ["deployment_env_gap"], "issue_number": "63", "thread_label": "thread_has_human_issue_and_fix_context", "outcome_label": "self_attested_unverified", "source_backed": true, "max_confidence": 0.82, "repo_full_name": "Va3elina/moex-aggregator", "training_usage": "gold_candidate", "confidence_tier": "high_confidence", "source_chain_id": "evidence-chain-issue_chain-7904dc0a8bd5a00f", "helicopter_views": {"schemas": 2}, "artifact_families": {"ci": 3, "docs": 5}, "source_chain_kind": "issue_chain", "changed_file_count": 0, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {}, "linked_commit_count": 1, "helicopter_view_count": 2, "source_artifact_count": 8, "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": 3, "design_schema_api_artifact_count": 0}, "text": "Comment chain pattern product: bad_chains\nRepo: Va3elina/moex-aggregator\nThread: Va3elina/moex-aggregator#63\nOutcome: self_attested_unverified\nThread label: thread_has_human_issue_and_fix_context\nSource graph label: source_backed_multi_signal_graph\nReasons: source_graph_has_real_artifacts, source_graph_has_verification_artifacts, repo_has_isolated_helicopter_views, link_quality_high_confidence, high_risk_human_feedback_label\nChain evidence:\nIssue/PR evidence chain: Va3elina/moex-aggregator#63\nRepo: Va3elina/moex-aggregator\nThread label: thread_has_human_issue_and_fix_context\nOutcome: self_attested_unverified\nComment count: 1\nLinked commit count: 1\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 0\nLabels: {'deployment_env_gap': 1}\nPolarities: {'bad': 1}\nChanged file labels: {}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-2985718e3cf6d2a5\",\n    \"kind\": \"pull_request_body\",\n    \"label\": \"deployment_env_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/Va3elina/moex-aggregator/pull/63\",\n    \"text\": \"GitHub feedback: deployment_env_gap\\nPolarity: bad\\nKind: pull_request_body\\nRepo: Va3elina/moex-aggregator\\nAuthor: Va3elina (User)\\nURL: https://github.com/Va3elina/moex-aggregator/pull/63\\nTitle: feat(oi): \u0440\u0443\u0431\u043b\u0451\u0432\u044b\u0439 \u043e\u0431\u043e\u0440\u043e\u0442 \u0444\u044c\u044e\u0447\u0435\u0440\u0441\u043e\u0432 \u0432 \u043f\u043e\u0438\u0441\u043a\u0435 \u0430\u043a\u0442\u0438\u0432\u043e\u0432 (VALTODAY \u0441 ISS)\\nBody:\\n## \u041f\u0440\u043e\u0431\u043b\u0435\u043c\u0430\\n\u0412 \u043f\u043e\u0438\u0441\u043a\u0435 \u0430\u043a\u0442\u0438\u0432\u043e\u0432 \u043a\u043e\u043b\u043e\u043d\u043a\u0430 \u00ab\u041e\u0431\u044a\u0451\u043c\u00bb \u043f\u043e \u0444\u044c\u044e\u0447\u0435\u0440\u0441\u0430\u043c \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u043b\u0430 \u0447\u0438\u0441\u043b\u043e \u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442\u043e\u0432, \u0430 \u043d\u0435 \u0440\u0443\u0431\u043b\u0438. \u041f\u0440\u0438\u0447\u0438\u043d\u0430: \u0443 \u0444\u044c\u044e\u0447\u0435\u0440\u0441\u043d\u044b\u0445 \u0441\u0432\u0435\u0447\u0435\u0439 `candles.value = 0` (Algopack/ISS candles \u043e\u0442\u0434\u0430\u044e\u0442 \u0434\u043b\u044f \u0444\u044c\u044e\u0447\u0435\u0440\u0441\u043e\u0432 \u0442\u043e\u043b\u044c\u043a\u043e `volume` \u0432 \u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442\u0430\u0445), \u0438 \u0437\u0430\u043f\u0440\u043e\u0441 \u0432 `instruments.py` \u043f\u0430\u0434\u0430\u043b \u043d\u0430 `volume`. \u041d\u0430 Investing \u043f\u043e \u0442\u043e\u043c\u0443 \u0436\u0435 \u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442\u0443 \u043e\u0431\u043e\u0440\u043e\u0442 \u0432 \u0440\u0443\u0431\u043b\u044f\u0445 (\u0434\u0435\u0441\u044f\u0442\u043a\u0438 \u043c\u043b\u0440\u0434) \u2014 \u043d\u0435\u0441\u043e\u043f\u043e\u0441\u0442\u0430\u0432\u0438\u043c\u043e \u0441 \u0442\u0435\u043c, \u0447\u0442\u043e \u0432\u0438\u0434\u0435\u043b \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c.\\n\\n## \u0420\u0435\u0448\u0435\u043d\u0438\u0435\\nMOEX \u043e\u0442\u0434\u0430\u0451\u0442 \u0440\u0443\u0431\u043b\u0451\u0432\u044b\u0439 \u043e\u0431\u043e\u0440\u043e\u0442 \u0432 `marketdata.VALTODAY` (engine=futures/forts) \u043e\u0434\u043d\u0438\u043c bulk-\u0437\u0430\u043f\u0440\u043e\u0441\u043e\u043c \u043f\u043e \u0432\u0441\u0435\u043c \u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442\u0430\u043c (\u043f\u0440\u043e\u0432\u0435\u0440\u0435\u043d\u043e: 494 \u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442\u0430, \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0432 \u043c\u043b\u0440\u0434 \u20bd).\\n\\n- \u041d\u043e\u0432\u044b\u0439 \u0441\u043a\u0440\u0438\u043f\u0442 `Candles/fetch_futures_turnover.py`: \u0442\u044f\u043d\u0435\u0442 `VALTODAY` \u0441 \u043f\u0443\u0431\u043b\u0438\u0447\u043d\u043e\u0433\u043e ISS (\u0431\u0435\u0441\u043f\u043b\u0430\u0442\u043d\u043e, \u0431\u0435\u0437 \u043a\u043b\u044e\u0447\u0430) \u0438 \u043f\u0438\u0448\u0435\u0442 \u0432 `candles.value` \u0434\u043d\u0435\u0432\u043d\u043e\u0439 \u0441\u0432\u0435\u0447\u0438 **\u0442\u0435\u043a\u0443\u0449\u0435\u0433\u043e** \u0434\u043d\u044f \u043f\u043e \u043a\u0430\u0436\u0434\u043e\u043c\u0443 \u0444\u044c\u044e\u0447\u0435\u0440\u0441\u043d\u043e\u043c\u0443 \u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442\u0443.\\n- `instruments.py` \u0443\u0436\u0435 \u043f\u0440\u0435\u0434\u043f\u043e\u0447\u0438\u0442\u0430\u0435\u0442 `value`, \u043a\u043e\u0433\u0434\u0430 \u043e\u043d > 0 (`CASE WHEN value>0 THEN value ELSE volume`) \u2014 \u043f\u043e\u0438\u0441\u043a \u0441\u0430\u043c \u043d\u0430\u0447\u043d\u0451\u0442 \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u0440\u0443\u0431\u043b\u0438, \u0444\u0440\u043e\u043d\u0442 \u043d\u0435 \u0442\u0440\u043e\u0433\u0430\u0435\u0442\u0441\u044f.\\n- \u0412\u044b\u0445\u043e\u0434\u043d\u044b\u0435/\u043f\u0440\u0430\u0437\u0434\"\n  }\n]\nChanged files:\n[]\nLinked chain ids:\n[\"evidence-chain-comment_to_commit-ec3922a28cd505f6\"]\nSource graph evidence:\nSource evidence repo graph summary\nRepo: Va3elina/moex-aggregator\nGraph label: source_backed_multi_signal_graph\nNodes: 14\nEdges: 22\nNode types: {\"cooccurrence_profile\": 1, \"github_repo_summary\": 1, \"helicopter_repo_view\": 2, \"repo\": 1, \"source_artifact\": 8, \"source_bundle\": 1}\nEdge types: {\"artifact_needs_claim_verification\": 5, \"artifact_supports_verification\": 3, \"repo_has_cooccurrence_profile\": 1, \"repo_has_github_evidence_summary\": 1, \"repo_has_schemas_helicopter_view\": 2, \"repo_has_source_artifact\": 8, \"repo_has_source_bundle\": 1, \"source_bundle_uses_cooccurrence_profile\":\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/Va3elina/moex-aggregator", "source_id": "comment-chain-pattern-bad_chains-945a87feab929572", "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": "Va3elina/moex-aggregator", "source_dataset": "comment_chain_patterns/bad_chains", "training_usage": "gold_candidate"}}}, {"ruleId": "foundry_bad_chain", "level": "error", "message": {"text": "Foundry mined bad chains: Va3elina/moex-aggregator"}, "properties": {"repobilityId": 441724, "scanner": "foundry_dataset", "fingerprint": "6530398fb359636942f1da5b04a64c68697b19118579dae6bff71fa08e979f63", "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": "Va3elina/moex-aggregator#54", "human_labels": ["mock_placeholder"], "issue_number": "54", "thread_label": "thread_has_human_issue_and_fix_context", "outcome_label": "self_attested_unverified", "source_backed": true, "max_confidence": 0.82, "repo_full_name": "Va3elina/moex-aggregator", "training_usage": "gold_candidate", "confidence_tier": "high_confidence", "source_chain_id": "evidence-chain-issue_chain-1fca74ff89bb851e", "helicopter_views": {"schemas": 2}, "artifact_families": {"ci": 3, "docs": 5}, "source_chain_kind": "issue_chain", "changed_file_count": 0, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {}, "linked_commit_count": 1, "helicopter_view_count": 2, "source_artifact_count": 8, "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": 3, "design_schema_api_artifact_count": 0}, "text": "Comment chain pattern product: bad_chains\nRepo: Va3elina/moex-aggregator\nThread: Va3elina/moex-aggregator#54\nOutcome: self_attested_unverified\nThread label: thread_has_human_issue_and_fix_context\nSource graph label: source_backed_multi_signal_graph\nReasons: source_graph_has_real_artifacts, source_graph_has_verification_artifacts, repo_has_isolated_helicopter_views, link_quality_high_confidence, high_risk_human_feedback_label\nChain evidence:\nIssue/PR evidence chain: Va3elina/moex-aggregator#54\nRepo: Va3elina/moex-aggregator\nThread label: thread_has_human_issue_and_fix_context\nOutcome: self_attested_unverified\nComment count: 1\nLinked commit count: 1\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 0\nLabels: {'mock_placeholder': 1}\nPolarities: {'bad': 1}\nChanged file labels: {}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-c4c96a5db7ee79f5\",\n    \"kind\": \"pull_request_body\",\n    \"label\": \"mock_placeholder\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/Va3elina/moex-aggregator/pull/54\",\n    \"text\": \"GitHub feedback: mock_placeholder\\nPolarity: bad\\nKind: pull_request_body\\nRepo: Va3elina/moex-aggregator\\nAuthor: Va3elina (User)\\nURL: https://github.com/Va3elina/moex-aggregator/pull/54\\nTitle: feat(bot): \u0432\u044b\u0431\u043e\u0440 \u043f\u043e \u0438\u043d\u0434\u0438\u043a\u0430\u0442\u043e\u0440\u0443 (\u041e\u0418/\u0424\u043e\u043d\u0434\u044b) + \u043f\u043e\u0447\u0438\u043d\u043a\u0430 \u043f\u043e\u0434\u043f\u0438\u0441\u0438 \u0444\u043e\u043d\u0434-\u0430\u043b\u0435\u0440\u0442\u0430\\nBody:\\n## \u0427\u0442\u043e\\n\u0422\u0435\u043b\u0435\u0433\u0440\u0430\u043c-\u0431\u043e\u0442 `@framesignalbot` (host-side `signals/alert_bot.py`), \u0434\u0432\u0430 \u043f\u0443\u043d\u043a\u0442\u0430 \u043f\u043e \u0437\u0430\u043f\u0440\u043e\u0441\u0443.\\n\\n### 1. \u0412\u044b\u0431\u043e\u0440 \u043f\u043e \u0438\u043d\u0434\u0438\u043a\u0430\u0442\u043e\u0440\u0443\\n\u00ab\u041c\u043e\u0438 \u0430\u043b\u0435\u0440\u0442\u044b\u00bb \u0431\u043e\u043b\u044c\u0448\u0435 \u043d\u0435 \u0432\u044b\u0432\u0430\u043b\u0438\u0432\u0430\u0435\u0442 \u0432\u0441\u0435 117 \u0430\u043b\u0435\u0440\u0442\u043e\u0432 \u043f\u043b\u043e\u0441\u043a\u0438\u043c \u0441\u043f\u0438\u0441\u043a\u043e\u043c. \u041d\u043e\u0432\u044b\u0439 \u043a\u043e\u0440\u0435\u043d\u044c \u2014 **picker \u0438\u0437 \u0434\u0432\u0443\u0445 \u0440\u0430\u0437\u0434\u0435\u043b\u043e\u0432** \u0441\u043e \u0441\u0447\u0451\u0442\u0447\u0438\u043a\u0430\u043c\u0438:\\n- `\ud83d\udd13 \u041e\u0442\u043a\u0440\u044b\u0442\u044b\u0435 \u043f\u043e\u0437\u0438\u0446\u0438\u0438 (N)` \u00b7 `\ud83d\udcb0 \u0424\u043e\u043d\u0434\u044b (M)`\\n\\n\u0422\u0430\u043f \u0432\u0435\u0434\u0451\u0442 \u0432 \u0441\u043f\u0438\u0441\u043e\u043a \u0440\u0430\u0437\u0434\u0435\u043b\u0430 (\u043f\u0430\u0433\u0438\u043d\u0430\u0446\u0438\u044f \u043f\u043e 25, \u00ab\u0441\u0442\u0440 X/Y\u00bb + \u00ab\u2190 \u0420\u0430\u0437\u0434\u0435\u043b\u044b\u00bb). \u041a\u0430\u0440\u0442\u043e\u0447\u043a\u0430 \u00ab\u2190 \u041a \u0441\u043f\u0438\u0441\u043a\u0443\u00bb \u0438 \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u0435 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u044e\u0442 \u0432 \u0440\u0430\u0437\u0434\u0435\u043b \u0441\u0430\u043c\u043e\u0433\u043e \u0430\u043b\u0435\u0440\u0442\u0430.\\n\\n### 2. \u041f\u043e\u0447\u0438\u043d\u043a\u0430 \u043f\u043e\u0434\u043f\u0438\u0441\u0438 \u0444\u043e\u043d\u0434-\u0430\u043b\u0435\u0440\u0442\u0430\\n\u0411\u044b\u043b\u043e: `\ud83d\udfe2 all > 2\u20bd` (\u0441\u044b\u0440\u043e\u0439 `asset='all'`, \u0435\u0434\u0438\u043d\u0438\u0446\u0430 \u00ab\u20bd\u00bb \u0432\u043c\u0435\u0441\u0442\u043e \u043a\u0440\u0430\u0442\u043d\u043e\u0441\u0442\u0438, \u0438\u043d\u0434\u0438\u043a\u0430\u0442\u043e\u0440 \u0442\u0440\u0430\u043a\u0442\u043e\u0432\u0430\u043b\u0441\u044f \u043a\u0430\u043a \u00ab\u0426\u0435\u043d\u0430 \u0444\u044c\u044e\u0447\u0435\u0440\u0441\u0430\u00bb).\\n\\n\u0421\u0442\u0430\u043b\u043e:\\n- \u0412 \u0441\u043f\u0438\u0441\u043a\u0435: `\ud83d\udfe2 \u0412\u0441\u0435 \u0444\u043e\u043d\u0434\u044b \u00b7 \u043f\u043e\u0442\u043e\u043a >2\u00d7`\\n- \u041a\u0430\u0440\u0442\u043e\u0447\u043a\u0430: `\ud83d\udd14 \u0412\u0441\u0435 \u0444\u043e\u043d\u0434\u044b` / *\u0410\u043d\u043e\u043c\u0430\u043b\u044c\u043d\u044b\u0439 \u043f\u043e\u0442\u043e\u043a* / \u00ab\u043f\u043e\u0442\u043e\u043a \u0434\u0435\u043d\u0435\u0433 \u0432 \u0444\u043e\u043d\u0434\u044b \u0431\u043e\u043b\u044c\u0448\u0435 \u043e\u0431\u044b\u0447\u043d\u043e\u0433\u043e \u0432 2\u00d7\u00bb / \u00ab\u041f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435: 0.71\u00d7\u00bb\\n\\n\u0411\u0435\u0440\u0451\u0442\u0441\u044f `asset_name` (\u043c\u0435\u0442\u043a\u0430 \u0432\u044b\u0431\u043e\u0440\u0430), \u0434\u043b\u044f \u0441\u0442\u0430\u0440\u044b\u0445 \u0430\u043b\u0435\u0440\u0442\u043e\u0432 \u043f\u043e \u043a\u0430\u0442\u0435\u0433\u043e\u0440\u0438\u0438 \u2014 fallback `_FUND_ASSET_NAME`. \u0415\u0434\u0438\u043d\u0438\u0446\u0430 `funds_flow` \u2192 \u00ab\u00d7\u00bb.\\n\\n## \u041a\u0430\u043a\\n- `_view_list_root` (picker) + `_view_list\"\n  }\n]\nChanged files:\n[]\nLinked chain ids:\n[\"evidence-chain-comment_to_commit-1ef886c329f8932c\"]\nSource graph evidence:\nSource evidence repo graph summary\nRepo: Va3elina/moex-aggregator\nGraph label: source_backed_multi_signal_graph\nNodes: 14\nEdges: 22\nNode types: {\"cooccurrence_profile\": 1, \"github_repo_summary\": 1, \"helicopter_repo_view\": 2, \"repo\": 1, \"source_artifact\": 8, \"source_bundle\": 1}\nEdge types: {\"artifact_needs_claim_verification\": 5, \"artifact_supports_verification\": 3, \"repo_has_cooccurrence_profile\": 1, \"repo_has_github_evidence_summary\": 1, \"repo_has_schemas_helicopter_view\": 2, \"repo_has_source_artifact\": 8, \"repo_has_source_bundle\": 1, \"source_bundle_uses_cooccurrence_pro\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/Va3elina/moex-aggregator", "source_id": "comment-chain-pattern-bad_chains-d89a355ccd60d85d", "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": "Va3elina/moex-aggregator", "source_dataset": "comment_chain_patterns/bad_chains", "training_usage": "gold_candidate"}}}, {"ruleId": "foundry_bad_chain", "level": "error", "message": {"text": "Foundry mined bad chains: Va3elina/moex-aggregator"}, "properties": {"repobilityId": 441723, "scanner": "foundry_dataset", "fingerprint": "2445c59d30c56585827f664682ce1e8d1df314426c93b3011026728150f866db", "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": "Va3elina/moex-aggregator#29", "human_labels": ["api_integration_gap", "security_auth_secret"], "issue_number": "29", "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": "Va3elina/moex-aggregator", "training_usage": "negative_or_unresolved", "confidence_tier": "unresolved", "source_chain_id": "evidence-chain-issue_chain-d543530832e81f69", "helicopter_views": {"schemas": 2}, "artifact_families": {"ci": 3, "docs": 5}, "source_chain_kind": "issue_chain", "changed_file_count": 0, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {}, "linked_commit_count": 0, "helicopter_view_count": 2, "source_artifact_count": 8, "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": 3, "design_schema_api_artifact_count": 0}, "text": "Comment chain pattern product: bad_chains\nRepo: Va3elina/moex-aggregator\nThread: Va3elina/moex-aggregator#29\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: Va3elina/moex-aggregator#29\nRepo: Va3elina/moex-aggregator\nThread label: thread_has_human_issue_without_fix_context\nOutcome: not_resolved_or_not_observed\nComment count: 2\nLinked commit count: 0\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 0\nLabels: {'security_auth_secret': 1, 'api_integration_gap': 1}\nPolarities: {'bad': 2}\nChanged file labels: {}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-c082642f6de2cb07\",\n    \"kind\": \"pull_request_body\",\n    \"label\": \"security_auth_secret\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/Va3elina/moex-aggregator/pull/29\",\n    \"text\": \"GitHub feedback: security_auth_secret\\nPolarity: bad\\nKind: pull_request_body\\nRepo: Va3elina/moex-aggregator\\nAuthor: dependabot[bot] (Bot)\\nURL: https://github.com/Va3elina/moex-aggregator/pull/29\\nTitle: chore(deps): Bump react-router-dom from 7.10.1 to 7.17.0 in /frontend\\nBody:\\nBumps [react-router-dom](https://github.com/remix-run/react-router/tree/HEAD/packages/react-router-dom) from 7.10.1 to 7.17.0.\\n<details>\\n<summary>Changelog</summary>\\n<p><em>Sourced from <a href=\\\"https://github.com/remix-run/react-router/blob/main/packages/react-router-dom/CHANGELOG.md\\\">react-router-dom's changelog</a>.</em></p>\\n<blockquote>\\n<h2>v7.17.0</h2>\\n<h3>Patch Changes</h3>\\n<ul>\\n<li>Updated dependencies:\\n<ul>\\n<li><a href=\\\"https://github.com/remix-run/react-router/releases/tag/react-router@7.17.0\\\"><code>react-router@7.17.0</code></a></li>\\n</ul>\\n</li>\\n</ul>\\n<h2>v7.16.0</h2>\\n<h3>Patch Changes</h3>\\n<ul>\\n<li>Remove stale/invalid <code>unpkg</code> field from <code>package.json</code>. This was removed from other packages with the release of v7 but missed in the <code>react-router-dom</code> re-export package (<a href=\\\"https://redirect.github.com/remix-run/react-router/pull/15075\\\">#15075</a>)</li>\\n<li>Updated \"\n  },\n  {\n    \"id\": \"github-feedback-comment-b32c0c65fac0df5c\",\n    \"kind\": \"issue_comment\",\n    \"label\": \"api_integration_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/Va3elina/moex-aggregator/pull/29#issuecomment-4710271927\",\n    \"text\": \"GitHub feedback: api_integration_gap\\nPolarity: bad\\nKind: issue_comment\\nRepo: Va3elina/moex-aggregator\\nAuthor: dependabot[bot] (Bot)\\nURL: https://github.com/Va3elina/moex-aggregator/pull/29#issuecomment-4710271927\\nTitle: \\nBody:\\n### Labels\\n\\nThe following labels could not be found: `dependencies`, `frontend`. Please create them before Dependabot can add them to a pull request.\\n\\n\\nP\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/Va3elina/moex-aggregator", "source_id": "comment-chain-pattern-bad_chains-75e3b16b1be47855", "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": "Va3elina/moex-aggregator", "source_dataset": "comment_chain_patterns/bad_chains", "training_usage": "negative_or_unresolved"}}}, {"ruleId": "foundry_bad_chain", "level": "error", "message": {"text": "Foundry mined bad chains: Va3elina/moex-aggregator"}, "properties": {"repobilityId": 441722, "scanner": "foundry_dataset", "fingerprint": "df617db0bf3af27958c2cb7ea20890f7ea4c07c5e4eac9d5f040af70d90593d1", "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": "Va3elina/moex-aggregator#28", "human_labels": ["api_integration_gap", "dependency_or_build", "test_ci_gap"], "issue_number": "28", "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": "Va3elina/moex-aggregator", "training_usage": "negative_or_unresolved", "confidence_tier": "unresolved", "source_chain_id": "evidence-chain-issue_chain-4c00747150c95f3b", "helicopter_views": {"schemas": 2}, "artifact_families": {"ci": 3, "docs": 5}, "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": 2, "source_artifact_count": 8, "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": 3, "design_schema_api_artifact_count": 0}, "text": "Comment chain pattern product: bad_chains\nRepo: Va3elina/moex-aggregator\nThread: Va3elina/moex-aggregator#28\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: Va3elina/moex-aggregator#28\nRepo: Va3elina/moex-aggregator\nThread label: thread_has_human_issue_without_fix_context\nOutcome: not_resolved_or_not_observed\nComment count: 2\nLinked commit count: 0\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 2\nLabels: {'test_ci_gap': 1, 'api_integration_gap': 1}\nPolarities: {'bad': 2}\nChanged file labels: {'dependency_or_build': 2}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-1fd13632db6ff1d2\",\n    \"kind\": \"pull_request_body\",\n    \"label\": \"test_ci_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/Va3elina/moex-aggregator/pull/28\",\n    \"text\": \"GitHub feedback: test_ci_gap\\nPolarity: bad\\nKind: pull_request_body\\nRepo: Va3elina/moex-aggregator\\nAuthor: dependabot[bot] (Bot)\\nURL: https://github.com/Va3elina/moex-aggregator/pull/28\\nTitle: chore(deps-dev): bump eslint from 9.39.1 to 10.5.0 in /frontend\\nBody:\\nBumps [eslint](https://github.com/eslint/eslint) from 9.39.1 to 10.5.0.\\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.5.0</h2>\\n<h2>Features</h2>\\n<ul>\\n<li><a href=\\\"https://github.com/eslint/eslint/commit/5ca8c5278edea1fd84d3ba83d8ea3f52fb3831ad\\\"><code>5ca8c52</code></a> feat: correct stack tracking in max-nested-callbacks (<a href=\\\"https://redirect.github.com/eslint/eslint/issues/20973\\\">#20973</a>) (Pixel998)</li>\\n<li><a href=\\\"https://github.com/eslint/eslint/commit/b5657837604fa5e8cf1278074782025cadd34b6c\\\"><code>b565783</code></a> feat: report no-with violations at the with keyword (<a href=\\\"https://redirect.github.com/eslint/eslint/issues/20971\\\">#20971</a>) (Pixel998)</li>\\n<li><a href=\\\"https://github.com/eslint/eslint/commit/2ce032fbc72a1a80c024c084a4f382fb6dece684\\\"><code>2ce032f</code></a> feat: report \"\n  },\n  {\n    \"id\": \"github-feedback-comment-3a872f94d9193267\",\n    \"kind\": \"issue_comment\",\n    \"label\": \"api_integration_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/Va3elina/moex-aggregator/pull/28#issuecomment-4710271108\",\n    \"text\": \"GitHub feedback: api_integration_gap\\nPolarity: bad\\nKind: issue_comment\\nRepo: Va3elina/moex-aggregator\\nAuthor: dependabot[bot] (Bot)\\nURL: https://github.com/Va3elina/moex-aggregator/pull/28#issuecomment-4710271108\\nTitle: \\nBody:\\n### Labels\\n\\nThe following labels could not be found: `dependencies`, `frontend`. Please create them before Dependabot can add them to a pull request.\\n\\\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/Va3elina/moex-aggregator", "source_id": "comment-chain-pattern-bad_chains-f6cfde28dd8a3e41", "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": "Va3elina/moex-aggregator", "source_dataset": "comment_chain_patterns/bad_chains", "training_usage": "negative_or_unresolved"}}}, {"ruleId": "foundry_bad_chain", "level": "error", "message": {"text": "Foundry mined bad chains: Va3elina/moex-aggregator"}, "properties": {"repobilityId": 441721, "scanner": "foundry_dataset", "fingerprint": "554a4592ac52d0f56d7b5077c09583f287075fd5c4a20a92b39c3e2be1427ecf", "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": "Va3elina/moex-aggregator#27", "human_labels": ["api_integration_gap", "dependency_or_build"], "issue_number": "27", "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": "Va3elina/moex-aggregator", "training_usage": "negative_or_unresolved", "confidence_tier": "unresolved", "source_chain_id": "evidence-chain-issue_chain-aa6d8c1497a8c39c", "helicopter_views": {"schemas": 2}, "artifact_families": {"ci": 3, "docs": 5}, "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": 2, "source_artifact_count": 8, "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": 3, "design_schema_api_artifact_count": 0}, "text": "Comment chain pattern product: bad_chains\nRepo: Va3elina/moex-aggregator\nThread: Va3elina/moex-aggregator#27\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: Va3elina/moex-aggregator#27\nRepo: Va3elina/moex-aggregator\nThread label: thread_has_human_issue_without_fix_context\nOutcome: not_resolved_or_not_observed\nComment count: 2\nLinked commit count: 0\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 2\nLabels: {'api_integration_gap': 2}\nPolarities: {'bad': 2}\nChanged file labels: {'dependency_or_build': 2}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-744d146f075f0680\",\n    \"kind\": \"pull_request_body\",\n    \"label\": \"api_integration_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/Va3elina/moex-aggregator/pull/27\",\n    \"text\": \"GitHub feedback: api_integration_gap\\nPolarity: bad\\nKind: pull_request_body\\nRepo: Va3elina/moex-aggregator\\nAuthor: dependabot[bot] (Bot)\\nURL: https://github.com/Va3elina/moex-aggregator/pull/27\\nTitle: chore(deps-dev): bump vite from 7.2.7 to 8.0.16 in /frontend\\nBody:\\nBumps [vite](https://github.com/vitejs/vite/tree/HEAD/packages/vite) from 7.2.7 to 8.0.16.\\n<details>\\n<summary>Release notes</summary>\\n<p><em>Sourced from <a href=\\\"https://github.com/vitejs/vite/releases\\\">vite's releases</a>.</em></p>\\n<blockquote>\\n<h2>v8.0.16</h2>\\n<p>Please refer to <a href=\\\"https://github.com/vitejs/vite/blob/v8.0.16/packages/vite/CHANGELOG.md\\\">CHANGELOG.md</a> for details.</p>\\n<h2>v8.0.15</h2>\\n<p>Please refer to <a href=\\\"https://github.com/vitejs/vite/blob/v8.0.15/packages/vite/CHANGELOG.md\\\">CHANGELOG.md</a> for details.</p>\\n<h2>v8.0.14</h2>\\n<p>Please refer to <a href=\\\"https://github.com/vitejs/vite/blob/v8.0.14/packages/vite/CHANGELOG.md\\\">CHANGELOG.md</a> for details.</p>\\n<h2>v8.0.13</h2>\\n<p>Please refer to <a href=\\\"https://github.com/vitejs/vite/blob/v8.0.13/packages/vite/CHANGELOG.md\\\">CHANGELOG.md</a> for details.</p>\\n<h2>v8.0.12</h2>\\n<p>Please refer to <a href=\\\"https://github.com/vitejs/vite/blob/v\"\n  },\n  {\n    \"id\": \"github-feedback-comment-4e532c02c3921294\",\n    \"kind\": \"issue_comment\",\n    \"label\": \"api_integration_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/Va3elina/moex-aggregator/pull/27#issuecomment-4710270528\",\n    \"text\": \"GitHub feedback: api_integration_gap\\nPolarity: bad\\nKind: issue_comment\\nRepo: Va3elina/moex-aggregator\\nAuthor: dependabot[bot] (Bot)\\nURL: https://github.com/Va3elina/moex-aggregator/pull/27#issuecomment-4710270528\\nTitle: \\nBody:\\n### Labels\\n\\nThe following labels could not be found: `dependencies`, `frontend`. Please create them before Dependabot can add them to a pull request.\\n\\n\\nPlea\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/Va3elina/moex-aggregator", "source_id": "comment-chain-pattern-bad_chains-d381f0977cf7ffaa", "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": "Va3elina/moex-aggregator", "source_dataset": "comment_chain_patterns/bad_chains", "training_usage": "negative_or_unresolved"}}}, {"ruleId": "foundry_bad_chain", "level": "error", "message": {"text": "Foundry mined bad chains: Va3elina/moex-aggregator"}, "properties": {"repobilityId": 441720, "scanner": "foundry_dataset", "fingerprint": "726b11786d42f9426e2fd62712302bb7e33e2d7eec10da880ab2a6a6aad4fff1", "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": "Va3elina/moex-aggregator#26", "human_labels": ["api_integration_gap", "security_auth_secret"], "issue_number": "26", "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": "Va3elina/moex-aggregator", "training_usage": "negative_or_unresolved", "confidence_tier": "unresolved", "source_chain_id": "evidence-chain-issue_chain-838550df149e1bb7", "helicopter_views": {"schemas": 2}, "artifact_families": {"ci": 3, "docs": 5}, "source_chain_kind": "issue_chain", "changed_file_count": 0, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {}, "linked_commit_count": 0, "helicopter_view_count": 2, "source_artifact_count": 8, "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": 3, "design_schema_api_artifact_count": 0}, "text": "Comment chain pattern product: bad_chains\nRepo: Va3elina/moex-aggregator\nThread: Va3elina/moex-aggregator#26\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: Va3elina/moex-aggregator#26\nRepo: Va3elina/moex-aggregator\nThread label: thread_has_human_issue_without_fix_context\nOutcome: not_resolved_or_not_observed\nComment count: 2\nLinked commit count: 0\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 0\nLabels: {'security_auth_secret': 1, 'api_integration_gap': 1}\nPolarities: {'bad': 2}\nChanged file labels: {}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-bfa6a090ff1ad2bf\",\n    \"kind\": \"pull_request_body\",\n    \"label\": \"security_auth_secret\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/Va3elina/moex-aggregator/pull/26\",\n    \"text\": \"GitHub feedback: security_auth_secret\\nPolarity: bad\\nKind: pull_request_body\\nRepo: Va3elina/moex-aggregator\\nAuthor: dependabot[bot] (Bot)\\nURL: https://github.com/Va3elina/moex-aggregator/pull/26\\nTitle: chore(deps-dev): Bump eslint-plugin-react-refresh from 0.4.24 to 0.5.3 in /frontend\\nBody:\\nBumps [eslint-plugin-react-refresh](https://github.com/ArnaudBarre/eslint-plugin-react-refresh) from 0.4.24 to 0.5.3.\\n<details>\\n<summary>Release notes</summary>\\n<p><em>Sourced from <a href=\\\"https://github.com/ArnaudBarre/eslint-plugin-react-refresh/releases\\\">eslint-plugin-react-refresh's releases</a>.</em></p>\\n<blockquote>\\n<h2>v0.5.3</h2>\\n<ul>\\n<li>Fix check for non component class exported via <code>export { }</code> <a href=\\\"https://redirect.github.com/ArnaudBarre/eslint-plugin-react-refresh/pull/110\\\">#110</a> (fixes <a href=\\\"https://redirect.github.com/ArnaudBarre/eslint-plugin-react-refresh/issues/109\\\">#109</a>)</li>\\n</ul>\\n<h2>v0.5.2</h2>\\n<ul>\\n<li>Support nested function calls for extraHOCs (actually fixes <a href=\\\"https://redirect.github.com/ArnaudBarre/eslint-plugin-react-refresh/issues/104\\\">#104</a>)</li>\\n</ul>\\n<h2>v0.5.1</h2>\\n<ul>\\n<li>Mark ESLint v10 as supported</li>\\n<li>Support false pos\"\n  },\n  {\n    \"id\": \"github-feedback-comment-28b95cb6c0a633bb\",\n    \"kind\": \"issue_comment\",\n    \"label\": \"api_integration_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/Va3elina/moex-aggregator/pull/26#issuecomment-4710269715\",\n    \"text\": \"GitHub feedback: api_integration_gap\\nPolarity: bad\\nKind: issue_comment\\nRepo: Va3elina/moex-aggregator\\nAuthor: dependabot[bot] (Bot)\\nURL: https://github.com/Va3elina/moex-aggregator/pull/26#issuecomment-4710269715\\nTitle: \\nBody:\\n### Labels\\n\\nThe following labels could not be found: `dependencies`, `frontend`. Please create them before Dependabot can add them to a pull request.\\n\\n\\nP\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/Va3elina/moex-aggregator", "source_id": "comment-chain-pattern-bad_chains-364535a01a8028cc", "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": "Va3elina/moex-aggregator", "source_dataset": "comment_chain_patterns/bad_chains", "training_usage": "negative_or_unresolved"}}}, {"ruleId": "foundry_bad_chain", "level": "error", "message": {"text": "Foundry mined bad chains: Va3elina/moex-aggregator"}, "properties": {"repobilityId": 441719, "scanner": "foundry_dataset", "fingerprint": "224de68d41606ed985e884d935a2c1f2c51ecd0de787d3f9fcd7814918d090b9", "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": "Va3elina/moex-aggregator#25", "human_labels": ["api_integration_gap", "runtime_failure"], "issue_number": "25", "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": "Va3elina/moex-aggregator", "training_usage": "negative_or_unresolved", "confidence_tier": "unresolved", "source_chain_id": "evidence-chain-issue_chain-590adbbf09432fd3", "helicopter_views": {"schemas": 2}, "artifact_families": {"ci": 3, "docs": 5}, "source_chain_kind": "issue_chain", "changed_file_count": 0, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {}, "linked_commit_count": 0, "helicopter_view_count": 2, "source_artifact_count": 8, "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": 3, "design_schema_api_artifact_count": 0}, "text": "Comment chain pattern product: bad_chains\nRepo: Va3elina/moex-aggregator\nThread: Va3elina/moex-aggregator#25\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: Va3elina/moex-aggregator#25\nRepo: Va3elina/moex-aggregator\nThread label: thread_has_human_issue_without_fix_context\nOutcome: not_resolved_or_not_observed\nComment count: 2\nLinked commit count: 0\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 0\nLabels: {'runtime_failure': 1, 'api_integration_gap': 1}\nPolarities: {'bad': 2}\nChanged file labels: {}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-581ee56ae9ef5780\",\n    \"kind\": \"pull_request_body\",\n    \"label\": \"runtime_failure\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/Va3elina/moex-aggregator/pull/25\",\n    \"text\": \"GitHub feedback: runtime_failure\\nPolarity: bad\\nKind: pull_request_body\\nRepo: Va3elina/moex-aggregator\\nAuthor: dependabot[bot] (Bot)\\nURL: https://github.com/Va3elina/moex-aggregator/pull/25\\nTitle: chore(deps): Bump sqlalchemy from 2.0.44 to 2.0.51\\nBody:\\nBumps [sqlalchemy](https://github.com/sqlalchemy/sqlalchemy) from 2.0.44 to 2.0.51.\\n<details>\\n<summary>Release notes</summary>\\n<p><em>Sourced from <a href=\\\"https://github.com/sqlalchemy/sqlalchemy/releases\\\">sqlalchemy's releases</a>.</em></p>\\n<blockquote>\\n<h1>2.0.51</h1>\\n<p>Released: June 15, 2026</p>\\n<h2>orm</h2>\\n<ul>\\n<li>\\n<p><strong>[orm] [bug]</strong> Fixed issue where <code>_orm.subqueryload()</code> combined with\\n<code>PropComparator.of_type()</code> and <code>PropComparator.and_()</code> would\\nsilently drop the additional filter criteria, causing all related objects\\nto be loaded instead of only those matching the filter.  The\\n<code>LoaderCriteriaOption</code> was being constructed against the base\\nentity rather than the effective entity indicated by\\n<code>PropComparator.of_type()</code>.  Pull request courtesy Arya Rizky.</p>\\n<p>References: <a href=\\\"https://www.sqlalchemy.org/trac/ticket/13207\\\">#13207</a></p>\\n</li>\\n<li>\\n<p><st\"\n  },\n  {\n    \"id\": \"github-feedback-comment-4d57e4707dc3e1b1\",\n    \"kind\": \"issue_comment\",\n    \"label\": \"api_integration_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/Va3elina/moex-aggregator/pull/25#issuecomment-4710269227\",\n    \"text\": \"GitHub feedback: api_integration_gap\\nPolarity: bad\\nKind: issue_comment\\nRepo: Va3elina/moex-aggregator\\nAuthor: dependabot[bot] (Bot)\\nURL: https://github.com/Va3elina/moex-aggregator/pull/25#issuecomment-4710269227\\nTitle: \\nBody:\\n### Labels\\n\\nThe following labels could not be found: `dependencies`, `python`. Please create them before Dependabot can add them to a pull request.\\n\\n\\nPlease fix th\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/Va3elina/moex-aggregator", "source_id": "comment-chain-pattern-bad_chains-386911fe3370f2fe", "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": "Va3elina/moex-aggregator", "source_dataset": "comment_chain_patterns/bad_chains", "training_usage": "negative_or_unresolved"}}}, {"ruleId": "foundry_bad_chain", "level": "error", "message": {"text": "Foundry mined bad chains: Va3elina/moex-aggregator"}, "properties": {"repobilityId": 441718, "scanner": "foundry_dataset", "fingerprint": "d4fd30cd7d9d5f177603d664cd68bfe36760b52115d04ed6bc4d7be64b310f54", "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": "Va3elina/moex-aggregator#23", "human_labels": ["api_integration_gap", "test_ci_gap"], "issue_number": "23", "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": "Va3elina/moex-aggregator", "training_usage": "negative_or_unresolved", "confidence_tier": "unresolved", "source_chain_id": "evidence-chain-issue_chain-8a470278809df05d", "helicopter_views": {"schemas": 2}, "artifact_families": {"ci": 3, "docs": 5}, "source_chain_kind": "issue_chain", "changed_file_count": 0, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {}, "linked_commit_count": 0, "helicopter_view_count": 2, "source_artifact_count": 8, "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": 3, "design_schema_api_artifact_count": 0}, "text": "Comment chain pattern product: bad_chains\nRepo: Va3elina/moex-aggregator\nThread: Va3elina/moex-aggregator#23\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: Va3elina/moex-aggregator#23\nRepo: Va3elina/moex-aggregator\nThread label: thread_has_human_issue_without_fix_context\nOutcome: not_resolved_or_not_observed\nComment count: 2\nLinked commit count: 0\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 0\nLabels: {'test_ci_gap': 1, 'api_integration_gap': 1}\nPolarities: {'bad': 2}\nChanged file labels: {}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-338c46f681440c74\",\n    \"kind\": \"pull_request_body\",\n    \"label\": \"test_ci_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/Va3elina/moex-aggregator/pull/23\",\n    \"text\": \"GitHub feedback: test_ci_gap\\nPolarity: bad\\nKind: pull_request_body\\nRepo: Va3elina/moex-aggregator\\nAuthor: dependabot[bot] (Bot)\\nURL: https://github.com/Va3elina/moex-aggregator/pull/23\\nTitle: chore(deps-dev): Bump @eslint/js from 9.39.1 to 10.0.1 in /frontend\\nBody:\\nBumps [@eslint/js](https://github.com/eslint/eslint/tree/HEAD/packages/js) from 9.39.1 to 10.0.1.\\n<details>\\n<summary>Release notes</summary>\\n<p><em>Sourced from <a href=\\\"https://github.com/eslint/eslint/releases\\\">@\u200beslint/js's releases</a>.</em></p>\\n<blockquote>\\n<h2>v10.0.1</h2>\\n<h2>Bug Fixes</h2>\\n<ul>\\n<li><a href=\\\"https://github.com/eslint/eslint/commit/c87d5bded54c5cf491eb04c24c9d09bbbd42c23e\\\"><code>c87d5bd</code></a> fix: update eslint (<a href=\\\"https://github.com/eslint/eslint/tree/HEAD/packages/js/issues/20531\\\">#20531</a>) (renovate[bot])</li>\\n<li><a href=\\\"https://github.com/eslint/eslint/commit/d84100115c14691691058f00779c94e74fca946a\\\"><code>d841001</code></a> fix: update <code>minimatch</code> to <code>10.2.1</code> to address security vulnerabilities (<a href=\\\"https://github.com/eslint/eslint/tree/HEAD/packages/js/issues/20519\\\">#20519</a>) (\ub8e8\ubc00LuMir)</li>\\n<li><a href=\\\"https://github.com/eslint/eslint/commit/04c214\"\n  },\n  {\n    \"id\": \"github-feedback-comment-1ace3873cbced587\",\n    \"kind\": \"issue_comment\",\n    \"label\": \"api_integration_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/Va3elina/moex-aggregator/pull/23#issuecomment-4710268509\",\n    \"text\": \"GitHub feedback: api_integration_gap\\nPolarity: bad\\nKind: issue_comment\\nRepo: Va3elina/moex-aggregator\\nAuthor: dependabot[bot] (Bot)\\nURL: https://github.com/Va3elina/moex-aggregator/pull/23#issuecomment-4710268509\\nTitle: \\nBody:\\n### Labels\\n\\nThe following labels could not be found: `dependencies`, `frontend`. Please create them before Dependabot can add them to a pull request.\\n\\n\\nPlease fix the above i\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/Va3elina/moex-aggregator", "source_id": "comment-chain-pattern-bad_chains-8e138d5ca806c337", "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": "Va3elina/moex-aggregator", "source_dataset": "comment_chain_patterns/bad_chains", "training_usage": "negative_or_unresolved"}}}, {"ruleId": "foundry_bad_chain", "level": "error", "message": {"text": "Foundry mined bad chains: Va3elina/moex-aggregator"}, "properties": {"repobilityId": 441717, "scanner": "foundry_dataset", "fingerprint": "43db655658f21cd9e18a9156d3b942e9f169ea80298979b418e57b8658e7beaa", "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": "Va3elina/moex-aggregator#22", "human_labels": ["api_integration_gap", "security_auth_secret"], "issue_number": "22", "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": "Va3elina/moex-aggregator", "training_usage": "negative_or_unresolved", "confidence_tier": "unresolved", "source_chain_id": "evidence-chain-issue_chain-c9ea8e3f3534745f", "helicopter_views": {"schemas": 2}, "artifact_families": {"ci": 3, "docs": 5}, "source_chain_kind": "issue_chain", "changed_file_count": 0, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {}, "linked_commit_count": 0, "helicopter_view_count": 2, "source_artifact_count": 8, "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": 3, "design_schema_api_artifact_count": 0}, "text": "Comment chain pattern product: bad_chains\nRepo: Va3elina/moex-aggregator\nThread: Va3elina/moex-aggregator#22\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: Va3elina/moex-aggregator#22\nRepo: Va3elina/moex-aggregator\nThread label: thread_has_human_issue_without_fix_context\nOutcome: not_resolved_or_not_observed\nComment count: 2\nLinked commit count: 0\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 0\nLabels: {'security_auth_secret': 1, 'api_integration_gap': 1}\nPolarities: {'bad': 2}\nChanged file labels: {}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-a02257f435246a06\",\n    \"kind\": \"pull_request_body\",\n    \"label\": \"security_auth_secret\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/Va3elina/moex-aggregator/pull/22\",\n    \"text\": \"GitHub feedback: security_auth_secret\\nPolarity: bad\\nKind: pull_request_body\\nRepo: Va3elina/moex-aggregator\\nAuthor: dependabot[bot] (Bot)\\nURL: https://github.com/Va3elina/moex-aggregator/pull/22\\nTitle: chore(deps): Bump pydantic-core from 2.41.5 to 2.47.0\\nBody:\\nBumps [pydantic-core](https://github.com/pydantic/pydantic) from 2.41.5 to 2.47.0.\\n<details>\\n<summary>Commits</summary>\\n<ul>\\n<li>See full diff in <a href=\\\"https://github.com/pydantic/pydantic/commits\\\">compare view</a></li>\\n</ul>\\n</details>\\n<br />\\n\\n\\n[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=pydantic-core&package-manager=pip&previous-version=2.41.5&new-version=2.47.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\\n\\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\\n\\n[//]: # (dependabot-automerge-start)\\n[//]: # (dependabot-automerge-end)\\n\\n---\\n\\n<details>\\n<summary>Dependabot commands and options</summary>\\n<br />\\n\\nYou can trigger Dependabot actions by commenting\"\n  },\n  {\n    \"id\": \"github-feedback-comment-fc312e88cd900aa3\",\n    \"kind\": \"issue_comment\",\n    \"label\": \"api_integration_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/Va3elina/moex-aggregator/pull/22#issuecomment-4710268307\",\n    \"text\": \"GitHub feedback: api_integration_gap\\nPolarity: bad\\nKind: issue_comment\\nRepo: Va3elina/moex-aggregator\\nAuthor: dependabot[bot] (Bot)\\nURL: https://github.com/Va3elina/moex-aggregator/pull/22#issuecomment-4710268307\\nTitle: \\nBody:\\n### Labels\\n\\nThe following labels could not be found: `dependencies`, `python`. Please create them before Dependabot can add them to a pull request.\\n\\n\\nPl\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/Va3elina/moex-aggregator", "source_id": "comment-chain-pattern-bad_chains-7aa4586f20a0f551", "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": "Va3elina/moex-aggregator", "source_dataset": "comment_chain_patterns/bad_chains", "training_usage": "negative_or_unresolved"}}}, {"ruleId": "foundry_bad_chain", "level": "error", "message": {"text": "Foundry mined bad chains: Va3elina/moex-aggregator"}, "properties": {"repobilityId": 441716, "scanner": "foundry_dataset", "fingerprint": "9f04f22b504c465e4462a6c9831f4fee96f44f3d7f197a6300f0705bf09110cd", "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": "Va3elina/moex-aggregator#21", "human_labels": ["api_integration_gap", "test_ci_gap"], "issue_number": "21", "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": "Va3elina/moex-aggregator", "training_usage": "negative_or_unresolved", "confidence_tier": "unresolved", "source_chain_id": "evidence-chain-issue_chain-f5c8d653661a6a8e", "helicopter_views": {"schemas": 2}, "artifact_families": {"ci": 3, "docs": 5}, "source_chain_kind": "issue_chain", "changed_file_count": 0, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {}, "linked_commit_count": 0, "helicopter_view_count": 2, "source_artifact_count": 8, "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": 3, "design_schema_api_artifact_count": 0}, "text": "Comment chain pattern product: bad_chains\nRepo: Va3elina/moex-aggregator\nThread: Va3elina/moex-aggregator#21\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: Va3elina/moex-aggregator#21\nRepo: Va3elina/moex-aggregator\nThread label: thread_has_human_issue_without_fix_context\nOutcome: not_resolved_or_not_observed\nComment count: 2\nLinked commit count: 0\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 0\nLabels: {'test_ci_gap': 1, 'api_integration_gap': 1}\nPolarities: {'bad': 2}\nChanged file labels: {}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-c807cf4dbc76959e\",\n    \"kind\": \"pull_request_body\",\n    \"label\": \"test_ci_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/Va3elina/moex-aggregator/pull/21\",\n    \"text\": \"GitHub feedback: test_ci_gap\\nPolarity: bad\\nKind: pull_request_body\\nRepo: Va3elina/moex-aggregator\\nAuthor: dependabot[bot] (Bot)\\nURL: https://github.com/Va3elina/moex-aggregator/pull/21\\nTitle: chore(deps): Bump urllib3 from 2.5.0 to 2.7.0\\nBody:\\nBumps [urllib3](https://github.com/urllib3/urllib3) from 2.5.0 to 2.7.0.\\n<details>\\n<summary>Release notes</summary>\\n<p><em>Sourced from <a href=\\\"https://github.com/urllib3/urllib3/releases\\\">urllib3's releases</a>.</em></p>\\n<blockquote>\\n<h2>2.7.0</h2>\\n<h2>\ud83d\ude80 urllib3 is fundraising for HTTP/2 support</h2>\\n<p><a href=\\\"https://sethmlarson.dev/urllib3-is-fundraising-for-http2-support\\\">urllib3 is raising ~$40,000 USD</a> to release HTTP/2 support and ensure long-term sustainable maintenance of the project after a sharp decline in financial support. If your company or organization uses Python and would benefit from HTTP/2 support in Requests, pip, cloud SDKs, and thousands of other projects <a href=\\\"https://opencollective.com/urllib3\\\">please consider contributing financially</a> to ensure HTTP/2 support is developed sustainably and maintained for the long-haul.</p>\\n<p>Thank you for your support.</p>\\n<h2>Security</h2>\\n<p>Addressed high-severity securi\"\n  },\n  {\n    \"id\": \"github-feedback-comment-d5b25034d1e95f7a\",\n    \"kind\": \"issue_comment\",\n    \"label\": \"api_integration_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/Va3elina/moex-aggregator/pull/21#issuecomment-4710267437\",\n    \"text\": \"GitHub feedback: api_integration_gap\\nPolarity: bad\\nKind: issue_comment\\nRepo: Va3elina/moex-aggregator\\nAuthor: dependabot[bot] (Bot)\\nURL: https://github.com/Va3elina/moex-aggregator/pull/21#issuecomment-4710267437\\nTitle: \\nBody:\\n### Labels\\n\\nThe following labels could not be found: `dependencies`, `python`. Please create them before Dependabot can add them to a pull request.\\n\\n\\nPlease fix the above issues o\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/Va3elina/moex-aggregator", "source_id": "comment-chain-pattern-bad_chains-1d205f7fad4980b3", "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": "Va3elina/moex-aggregator", "source_dataset": "comment_chain_patterns/bad_chains", "training_usage": "negative_or_unresolved"}}}, {"ruleId": "foundry_bad_chain", "level": "error", "message": {"text": "Foundry mined bad chains: Va3elina/moex-aggregator"}, "properties": {"repobilityId": 441715, "scanner": "foundry_dataset", "fingerprint": "a407333e33e1908ef8d8a59b623a39b70a167b5e10af1ef706a8fa1fd509b5bc", "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": "Va3elina/moex-aggregator#20", "human_labels": ["api_integration_gap", "test_ci_gap"], "issue_number": "20", "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": "Va3elina/moex-aggregator", "training_usage": "negative_or_unresolved", "confidence_tier": "unresolved", "source_chain_id": "evidence-chain-issue_chain-ad4ec48935029d90", "helicopter_views": {"schemas": 2}, "artifact_families": {"ci": 3, "docs": 5}, "source_chain_kind": "issue_chain", "changed_file_count": 0, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {}, "linked_commit_count": 0, "helicopter_view_count": 2, "source_artifact_count": 8, "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": 3, "design_schema_api_artifact_count": 0}, "text": "Comment chain pattern product: bad_chains\nRepo: Va3elina/moex-aggregator\nThread: Va3elina/moex-aggregator#20\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: Va3elina/moex-aggregator#20\nRepo: Va3elina/moex-aggregator\nThread label: thread_has_human_issue_without_fix_context\nOutcome: not_resolved_or_not_observed\nComment count: 2\nLinked commit count: 0\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 0\nLabels: {'test_ci_gap': 1, 'api_integration_gap': 1}\nPolarities: {'bad': 2}\nChanged file labels: {}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-32ab938759298103\",\n    \"kind\": \"pull_request_body\",\n    \"label\": \"test_ci_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/Va3elina/moex-aggregator/pull/20\",\n    \"text\": \"GitHub feedback: test_ci_gap\\nPolarity: bad\\nKind: pull_request_body\\nRepo: Va3elina/moex-aggregator\\nAuthor: dependabot[bot] (Bot)\\nURL: https://github.com/Va3elina/moex-aggregator/pull/20\\nTitle: chore(deps): Update yfinance requirement from >=1.3.0 to >=1.4.1\\nBody:\\nUpdates the requirements on [yfinance](https://github.com/ranaroussi/yfinance) to permit the latest version.\\n<details>\\n<summary>Release notes</summary>\\n<p><em>Sourced from <a href=\\\"https://github.com/ranaroussi/yfinance/releases\\\">yfinance's releases</a>.</em></p>\\n<blockquote>\\n<h2>1.4.1</h2>\\n<h3>Patches</h3>\\n<ul>\\n<li>Preserve Date/Datetime index name in yf.download() output <a href=\\\"https://redirect.github.com/ranaroussi/yfinance/issues/2832\\\">#2832</a></li>\\n</ul>\\n<p>Thanks <a href=\\\"https://github.com/dokson\\\"><code>@\u200bdokson</code></a></p>\\n</blockquote>\\n</details>\\n<details>\\n<summary>Changelog</summary>\\n<p><em>Sourced from <a href=\\\"https://github.com/ranaroussi/yfinance/blob/main/CHANGELOG.rst\\\">yfinance's changelog</a>.</em></p>\\n<blockquote>\\n<h2>1.4.1</h2>\\n<p>Fix</p>\\n<ul>\\n<li>Preserve Date/Datetime index name in yf.download() output <a href=\\\"https://redirect.github.com/ranaroussi/yfinance/issues/2832\\\">#2832</a></li>\\n</ul>\\n<h2>1\"\n  },\n  {\n    \"id\": \"github-feedback-comment-f53b890c2926451b\",\n    \"kind\": \"issue_comment\",\n    \"label\": \"api_integration_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/Va3elina/moex-aggregator/pull/20#issuecomment-4710266628\",\n    \"text\": \"GitHub feedback: api_integration_gap\\nPolarity: bad\\nKind: issue_comment\\nRepo: Va3elina/moex-aggregator\\nAuthor: dependabot[bot] (Bot)\\nURL: https://github.com/Va3elina/moex-aggregator/pull/20#issuecomment-4710266628\\nTitle: \\nBody:\\n### Labels\\n\\nThe following labels could not be found: `dependencies`, `python`. Please create them before Dependabot can add them to a pull request.\\n\\n\\nPlease fix th\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/Va3elina/moex-aggregator", "source_id": "comment-chain-pattern-bad_chains-395f90f1f37b6e2b", "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": "Va3elina/moex-aggregator", "source_dataset": "comment_chain_patterns/bad_chains", "training_usage": "negative_or_unresolved"}}}, {"ruleId": "foundry_bad_chain", "level": "error", "message": {"text": "Foundry mined bad chains: Va3elina/moex-aggregator"}, "properties": {"repobilityId": 441714, "scanner": "foundry_dataset", "fingerprint": "6feff8c7725f3e57da3c518da1271d5473ffc945d51041d49b2391b93a34331d", "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": "Va3elina/moex-aggregator#2", "human_labels": ["api_integration_gap"], "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": "Va3elina/moex-aggregator", "training_usage": "negative_or_unresolved", "confidence_tier": "unresolved", "source_chain_id": "evidence-chain-issue_chain-a0734e33d8080947", "helicopter_views": {"schemas": 2}, "artifact_families": {"ci": 3, "docs": 5}, "source_chain_kind": "issue_chain", "changed_file_count": 0, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {}, "linked_commit_count": 0, "helicopter_view_count": 2, "source_artifact_count": 8, "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": 3, "design_schema_api_artifact_count": 0}, "text": "Comment chain pattern product: bad_chains\nRepo: Va3elina/moex-aggregator\nThread: Va3elina/moex-aggregator#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: Va3elina/moex-aggregator#2\nRepo: Va3elina/moex-aggregator\nThread label: thread_has_human_issue_without_fix_context\nOutcome: not_resolved_or_not_observed\nComment count: 1\nLinked commit count: 0\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 0\nLabels: {'api_integration_gap': 1}\nPolarities: {'bad': 1}\nChanged file labels: {}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-7b30a8c5240d14d0\",\n    \"kind\": \"pull_request_body\",\n    \"label\": \"api_integration_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/Va3elina/moex-aggregator/pull/2\",\n    \"text\": \"GitHub feedback: api_integration_gap\\nPolarity: bad\\nKind: pull_request_body\\nRepo: Va3elina/moex-aggregator\\nAuthor: Va3elina (User)\\nURL: https://github.com/Va3elina/moex-aggregator/pull/2\\nTitle: RiskRates: \u0438\u043d\u0434\u0435\u043a\u0441 \u0441\u0442\u0440\u0430\u0445\u0430 \u043d\u0430 \u0441\u0442\u0430\u0432\u043a\u0430\u0445 \u0440\u0438\u0441\u043a\u0430 \u041d\u041a\u0426 + PineScript\\nBody:\\n## \u0427\u0442\u043e \u044d\u0442\u043e\\n\\n\u00ab\u0418\u043d\u0434\u0435\u043a\u0441 \u0441\u0442\u0440\u0430\u0445\u0430\u00bb \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 **\u0441\u0442\u0430\u0432\u043e\u043a \u0440\u0438\u0441\u043a\u0430 \u041d\u041a\u0426/MOEX**. \u041d\u041a\u0426 \u043f\u043e\u0432\u044b\u0448\u0430\u0435\u0442 \u0441\u0442\u0430\u0432\u043a\u0443 \u043f\u0440\u0438 \u0440\u043e\u0441\u0442\u0435 \u0432\u043e\u043b\u0430\u0442\u0438\u043b\u044c\u043d\u043e\u0441\u0442\u0438/\u0441\u0442\u0440\u0435\u0441\u0441\u0430 \u2192 \u0432\u044b\u0441\u043e\u043a\u0430\u044f \u0441\u0442\u0430\u0432\u043a\u0430 = \u0441\u0442\u0440\u0430\u0445, \u043d\u0438\u0437\u043a\u0430\u044f = \u043f\u043e\u043a\u043e\u0439/\u0436\u0430\u0434\u043d\u043e\u0441\u0442\u044c. \u0420\u044f\u0434 \u0441\u0442\u0443\u043f\u0435\u043d\u0447\u0430\u0442\u044b\u0439 (\u043c\u0435\u043d\u044f\u0435\u0442\u0441\u044f \u0440\u0435\u0434\u043a\u043e, \u0441\u043a\u0430\u0447\u043a\u0430\u043c\u0438).\\n\\n## \u0418\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u0438 (ISS MOEX, \u0431\u0435\u0441\u043f\u043b\u0430\u0442\u043d\u043e, \u0431\u0435\u0437 \u043a\u043b\u044e\u0447\u0430)\\n\\n| \u0418\u0441\u0442\u043e\u0447\u043d\u0438\u043a | \u041f\u043e\u043b\u0435 | \u0413\u043b\u0443\u0431\u0438\u043d\u0430 |\\n|---|---|---|\\n| `rms/engines/futures/objects/limits` | `mr1/mr2/mr3` (\u0441\u0442\u0430\u0432\u043a\u0430 \u0440\u044b\u043d\u043e\u0447\u043d\u043e\u0433\u043e \u0440\u0438\u0441\u043a\u0430) | \u0441 2018-05-22 |\\n| `rms/engines/currency/objects/marketrates` | `discount` (\u0434\u0438\u0441\u043a\u043e\u043d\u0442) | \u0441 2014-12-26 |\\n\\n## \u0421\u043e\u0441\u0442\u0430\u0432 PR\\n\\n- **`fetch_risk_rates.py`** \u2014 async-\u0441\u0431\u043e\u0440\u0449\u0438\u043a \u0434\u043d\u0435\u0432\u043d\u044b\u0445 \u0440\u044f\u0434\u043e\u0432 \u043d\u0430 \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u0443\u044e \u0433\u043b\u0443\u0431\u0438\u043d\u0443 (limits + currency).\\n- **`build_indicators.py`** \u2014 \u043f\u043e\u0441\u0442\u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0430: tidy-CSV, breakpoint'\u044b, \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u044f PineScript.\\n- **`datasets/breakpoints.json`** \u2014 \u0442\u043e\u0447\u043a\u0438 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0441\u0442\u0430\u0432\u043a\u0438 \u043f\u043e 7 \u0430\u043a\u0442\u0438\u0432\u0430\u043c.\\n- **`pine/*.pine`** \u2014 \u0433\u043e\u0442\u043e\u0432\u044b\u0435 \u0438\u043d\u0434\u0438\u043a\u0430\u0442\u043e\u0440\u044b \u0434\u043b\u044f TradingView (\u0441\u0442\u0443\u043f\u0435\u043d\u0447\u0430\u0442\u044b\u0439 \u0440\u044f\u0434, \u0442\u043e\u0447\u043d\u044b\u0435 \u0434\u0430\u0442\u044b \u043f\u0435\u0440\u0435\u043b\u043e\u043c\u043e\u0432).\\n\\n## \u041f\u043e\u043a\u0440\u044b\u0442\u0438\u0435\\n\\n| \u0410\u043a\u0442\u0438\u0432 | \u041a\u043e\u0434 | \u0413\u043b\u0443\u0431\u0438\u043d\u0430 | \u0414\u0438\u0430\u043f\u0430\u0437\u043e\u043d \u0441\u0442\u0430\u0432\u043a\u0438 |\\n|---|---|---|---|\"\n  }\n]\nChanged files:\n[]\nLinked chain ids:\n[\"evidence-chain-comment_to_commit-f49b59c5679b29e3\"]\nSource graph evidence:\nSource evidence repo graph summary\nRepo: Va3elina/moex-aggregator\nGraph label: source_backed_multi_signal_graph\nNodes: 14\nEdges: 22\nNode types: {\"cooccurrence_profile\": 1, \"github_repo_summary\": 1, \"helicopter_repo_view\": 2, \"repo\": 1, \"source_artifact\": 8, \"source_bundle\": 1}\nEdge types: {\"artifact_needs_claim_verification\": 5, \"artifact_supports_verification\": 3, \"repo_has_cooccurrence_profile\": 1, \"repo_has_github_evidence_summary\": 1, \"repo_has_schemas_helicopter_view\": 2, \"repo_has_source_artifact\": 8, \"repo_has_source_bundle\": 1, \"source_bundle_uses_\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/Va3elina/moex-aggregator", "source_id": "comment-chain-pattern-bad_chains-cb37587d382bc6c8", "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": "Va3elina/moex-aggregator", "source_dataset": "comment_chain_patterns/bad_chains", "training_usage": "negative_or_unresolved"}}}, {"ruleId": "foundry_bad_chain", "level": "error", "message": {"text": "Foundry mined bad chains: Va3elina/moex-aggregator"}, "properties": {"repobilityId": 441713, "scanner": "foundry_dataset", "fingerprint": "00ce1c3402eea9bb49990b35aa06d93beda9e239661ddf658f106b75e5bd8c87", "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": "Va3elina/moex-aggregator#19", "human_labels": ["test_ci_gap"], "issue_number": "19", "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": "Va3elina/moex-aggregator", "training_usage": "negative_or_unresolved", "confidence_tier": "unresolved", "source_chain_id": "evidence-chain-issue_chain-2260962ddbcb5d25", "helicopter_views": {"schemas": 2}, "artifact_families": {"ci": 3, "docs": 5}, "source_chain_kind": "issue_chain", "changed_file_count": 0, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {}, "linked_commit_count": 0, "helicopter_view_count": 2, "source_artifact_count": 8, "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": 3, "design_schema_api_artifact_count": 0}, "text": "Comment chain pattern product: bad_chains\nRepo: Va3elina/moex-aggregator\nThread: Va3elina/moex-aggregator#19\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: Va3elina/moex-aggregator#19\nRepo: Va3elina/moex-aggregator\nThread label: thread_has_human_issue_without_fix_context\nOutcome: not_resolved_or_not_observed\nComment count: 2\nLinked commit count: 0\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 0\nLabels: {'test_ci_gap': 2}\nPolarities: {'bad': 2}\nChanged file labels: {}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-c043320307783d99\",\n    \"kind\": \"pull_request_body\",\n    \"label\": \"test_ci_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/Va3elina/moex-aggregator/pull/19\",\n    \"text\": \"GitHub feedback: test_ci_gap\\nPolarity: bad\\nKind: pull_request_body\\nRepo: Va3elina/moex-aggregator\\nAuthor: dependabot[bot] (Bot)\\nURL: https://github.com/Va3elina/moex-aggregator/pull/19\\nTitle: chore(deps): Bump actions/checkout from 4.3.1 to 6.0.3\\nBody:\\nBumps [actions/checkout](https://github.com/actions/checkout) from 4.3.1 to 6.0.3.\\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.3</h2>\\n<h2>What's Changed</h2>\\n<ul>\\n<li>Update changelog by <a href=\\\"https://github.com/ericsciple\\\"><code>@\u200bericsciple</code></a> in <a href=\\\"https://redirect.github.com/actions/checkout/pull/2357\\\">actions/checkout#2357</a></li>\\n<li>fix: expand merge commit SHA regex and add SHA-256 test cases by <a href=\\\"https://github.com/yaananth\\\"><code>@\u200byaananth</code></a> in <a href=\\\"https://redirect.github.com/actions/checkout/pull/2414\\\">actions/checkout#2414</a></li>\\n<li>Fix checkout init for SHA-256 repositories by <a href=\\\"https://github.com/yaananth\\\"><code>@\u200byaananth</code></a> in <a href=\\\"https://redirect.github.com/actions/checkout/pull/2439\\\">actions/checkout#2439</a></li>\\n<li>\"\n  },\n  {\n    \"id\": \"github-feedback-comment-108f51cdd25713df\",\n    \"kind\": \"issue_comment\",\n    \"label\": \"test_ci_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/Va3elina/moex-aggregator/pull/19#issuecomment-4710264494\",\n    \"text\": \"GitHub feedback: test_ci_gap\\nPolarity: bad\\nKind: issue_comment\\nRepo: Va3elina/moex-aggregator\\nAuthor: dependabot[bot] (Bot)\\nURL: https://github.com/Va3elina/moex-aggregator/pull/19#issuecomment-4710264494\\nTitle: \\nBody:\\n### Labels\\n\\nThe following labels could not be found: `ci`, `dependencies`. Please create them before Dependabot can add them to a pull request.\\n\\n\\nPlease fix the above issues or remove invalid values from `dependa\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/Va3elina/moex-aggregator", "source_id": "comment-chain-pattern-bad_chains-92a16c3a9c430841", "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": "Va3elina/moex-aggregator", "source_dataset": "comment_chain_patterns/bad_chains", "training_usage": "negative_or_unresolved"}}}, {"ruleId": "foundry_bad_chain", "level": "error", "message": {"text": "Foundry mined bad chains: Va3elina/moex-aggregator"}, "properties": {"repobilityId": 441712, "scanner": "foundry_dataset", "fingerprint": "45629a935911712a51348c8934a1cc2c4dd45a85b6532d65d18b472923d91b85", "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": "Va3elina/moex-aggregator#18", "human_labels": ["build_install_failure", "test_ci_gap"], "issue_number": "18", "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": "Va3elina/moex-aggregator", "training_usage": "negative_or_unresolved", "confidence_tier": "unresolved", "source_chain_id": "evidence-chain-issue_chain-285b03cf921e92d3", "helicopter_views": {"schemas": 2}, "artifact_families": {"ci": 3, "docs": 5}, "source_chain_kind": "issue_chain", "changed_file_count": 0, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {}, "linked_commit_count": 0, "helicopter_view_count": 2, "source_artifact_count": 8, "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": 3, "design_schema_api_artifact_count": 0}, "text": "Comment chain pattern product: bad_chains\nRepo: Va3elina/moex-aggregator\nThread: Va3elina/moex-aggregator#18\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: Va3elina/moex-aggregator#18\nRepo: Va3elina/moex-aggregator\nThread label: thread_has_human_issue_without_fix_context\nOutcome: not_resolved_or_not_observed\nComment count: 2\nLinked commit count: 0\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 0\nLabels: {'build_install_failure': 1, 'test_ci_gap': 1}\nPolarities: {'bad': 2}\nChanged file labels: {}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-9d2a23291c6e2bc2\",\n    \"kind\": \"pull_request_body\",\n    \"label\": \"build_install_failure\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/Va3elina/moex-aggregator/pull/18\",\n    \"text\": \"GitHub feedback: build_install_failure\\nPolarity: bad\\nKind: pull_request_body\\nRepo: Va3elina/moex-aggregator\\nAuthor: dependabot[bot] (Bot)\\nURL: https://github.com/Va3elina/moex-aggregator/pull/18\\nTitle: chore(deps): Bump actions/setup-node from 4.4.0 to 6.4.0\\nBody:\\nBumps [actions/setup-node](https://github.com/actions/setup-node) from 4.4.0 to 6.4.0.\\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.4.0</h2>\\n<h2>What's Changed</h2>\\n<h3>Dependency updates:</h3>\\n<ul>\\n<li>Upgrade <a href=\\\"https://github.com/actions\\\"><code>@\u200bactions</code></a> dependencies by <a href=\\\"https://github.com/Copilot\\\"><code>@\u200bCopilot</code></a> in <a href=\\\"https://redirect.github.com/actions/setup-node/pull/1525\\\">actions/setup-node#1525</a></li>\\n<li>Update Node.js versions in versions.yml and bump package to v6.4.0  by <a href=\\\"https://github.com/priya-kinthali\\\"><code>@\u200bpriya-kinthali</code></a> in <a href=\\\"https://redirect.github.com/actions/setup-node/pull/1533\\\">actions/setup-node#1533</a></li>\\n</ul>\\n<h2>New Contributors</h2>\\n<ul>\\n<li><a href=\\\"https://github.com/Copilot\\\"><cod\"\n  },\n  {\n    \"id\": \"github-feedback-comment-eaf33b03f215c9df\",\n    \"kind\": \"issue_comment\",\n    \"label\": \"test_ci_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/Va3elina/moex-aggregator/pull/18#issuecomment-4710263883\",\n    \"text\": \"GitHub feedback: test_ci_gap\\nPolarity: bad\\nKind: issue_comment\\nRepo: Va3elina/moex-aggregator\\nAuthor: dependabot[bot] (Bot)\\nURL: https://github.com/Va3elina/moex-aggregator/pull/18#issuecomment-4710263883\\nTitle: \\nBody:\\n### Labels\\n\\nThe following labels could not be found: `ci`, `dependencies`. Please create them before Dependabot can add them to a pull request.\\n\\n\\nPlease fix the above issu\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/Va3elina/moex-aggregator", "source_id": "comment-chain-pattern-bad_chains-d2ee15611f49c6a0", "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": "Va3elina/moex-aggregator", "source_dataset": "comment_chain_patterns/bad_chains", "training_usage": "negative_or_unresolved"}}}, {"ruleId": "foundry_bad_chain", "level": "error", "message": {"text": "Foundry mined bad chains: Va3elina/moex-aggregator"}, "properties": {"repobilityId": 441711, "scanner": "foundry_dataset", "fingerprint": "231a41f0f8fe70baacbd3dcd67b880229aa058f950174504f32b7a240cc04b7f", "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": "Va3elina/moex-aggregator#17", "human_labels": ["test_ci_gap"], "issue_number": "17", "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": "Va3elina/moex-aggregator", "training_usage": "negative_or_unresolved", "confidence_tier": "unresolved", "source_chain_id": "evidence-chain-issue_chain-b22170c3c9698be3", "helicopter_views": {"schemas": 2}, "artifact_families": {"ci": 3, "docs": 5}, "source_chain_kind": "issue_chain", "changed_file_count": 0, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {}, "linked_commit_count": 0, "helicopter_view_count": 2, "source_artifact_count": 8, "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": 3, "design_schema_api_artifact_count": 0}, "text": "Comment chain pattern product: bad_chains\nRepo: Va3elina/moex-aggregator\nThread: Va3elina/moex-aggregator#17\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: Va3elina/moex-aggregator#17\nRepo: Va3elina/moex-aggregator\nThread label: thread_has_human_issue_without_fix_context\nOutcome: not_resolved_or_not_observed\nComment count: 2\nLinked commit count: 0\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 0\nLabels: {'test_ci_gap': 2}\nPolarities: {'bad': 2}\nChanged file labels: {}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-cdad7655d898a7af\",\n    \"kind\": \"pull_request_body\",\n    \"label\": \"test_ci_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/Va3elina/moex-aggregator/pull/17\",\n    \"text\": \"GitHub feedback: test_ci_gap\\nPolarity: bad\\nKind: pull_request_body\\nRepo: Va3elina/moex-aggregator\\nAuthor: dependabot[bot] (Bot)\\nURL: https://github.com/Va3elina/moex-aggregator/pull/17\\nTitle: chore(deps): Bump appleboy/ssh-action from 1.2.0 to 1.2.5\\nBody:\\nBumps [appleboy/ssh-action](https://github.com/appleboy/ssh-action) from 1.2.0 to 1.2.5.\\n<details>\\n<summary>Release notes</summary>\\n<p><em>Sourced from <a href=\\\"https://github.com/appleboy/ssh-action/releases\\\">appleboy/ssh-action's releases</a>.</em></p>\\n<blockquote>\\n<h2>v1.2.5</h2>\\n<h2>Changelog</h2>\\n<h3>Refactor</h3>\\n<ul>\\n<li>0ff4204d59e8e51228ff73bce53f80d53301dee2: refactor: streamline output handling for GITHUB_OUTPUT in workflows (<a href=\\\"https://redirect.github.com/appleboy/ssh-action/issues/404\\\">#404</a>) (<a href=\\\"https://github.com/appleboy\\\"><code>@\u200bappleboy</code></a>)</li>\\n</ul>\\n<h3>Documentation updates</h3>\\n<ul>\\n<li>23bd972bfcf52bf00cbb7f7f62b2bb06c2efa5b4: docs: update README and assets for new SSH agent workflow (<a href=\\\"https://github.com/appleboy\\\"><code>@\u200bappleboy</code></a>)</li>\\n<li>8e460a28f2d26993d9be77c5fc1442e9d6ba2e7f: docs: improve documentation table formatting for output descriptions (<a href=\\\"https:/\"\n  },\n  {\n    \"id\": \"github-feedback-comment-13058f7e4e5ad5ff\",\n    \"kind\": \"issue_comment\",\n    \"label\": \"test_ci_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/Va3elina/moex-aggregator/pull/17#issuecomment-4710263444\",\n    \"text\": \"GitHub feedback: test_ci_gap\\nPolarity: bad\\nKind: issue_comment\\nRepo: Va3elina/moex-aggregator\\nAuthor: dependabot[bot] (Bot)\\nURL: https://github.com/Va3elina/moex-aggregator/pull/17#issuecomment-4710263444\\nTitle: \\nBody:\\n### Labels\\n\\nThe following labels could not be found: `ci`, `dependencies`. Please create them before Dependabot can add them to a pull request.\\n\\n\\nPlease fix the above issues or remove invalid values from `dependabo\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/Va3elina/moex-aggregator", "source_id": "comment-chain-pattern-bad_chains-70ce5fb7b0766abe", "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": "Va3elina/moex-aggregator", "source_dataset": "comment_chain_patterns/bad_chains", "training_usage": "negative_or_unresolved"}}}, {"ruleId": "foundry_bad_chain", "level": "error", "message": {"text": "Foundry mined bad chains: Va3elina/moex-aggregator"}, "properties": {"repobilityId": 441710, "scanner": "foundry_dataset", "fingerprint": "2eeeb4bc317bf0e84e01aba37dd6f54234e5cc740ff3ab8b616a9a4a56293dc9", "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": "Va3elina/moex-aggregator#16", "human_labels": ["security_auth_secret", "test_ci_gap"], "issue_number": "16", "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": "Va3elina/moex-aggregator", "training_usage": "negative_or_unresolved", "confidence_tier": "unresolved", "source_chain_id": "evidence-chain-issue_chain-624f73e99d22dead", "helicopter_views": {"schemas": 2}, "artifact_families": {"ci": 3, "docs": 5}, "source_chain_kind": "issue_chain", "changed_file_count": 0, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {}, "linked_commit_count": 0, "helicopter_view_count": 2, "source_artifact_count": 8, "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": 3, "design_schema_api_artifact_count": 0}, "text": "Comment chain pattern product: bad_chains\nRepo: Va3elina/moex-aggregator\nThread: Va3elina/moex-aggregator#16\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: Va3elina/moex-aggregator#16\nRepo: Va3elina/moex-aggregator\nThread label: thread_has_human_issue_without_fix_context\nOutcome: not_resolved_or_not_observed\nComment count: 2\nLinked commit count: 0\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 0\nLabels: {'security_auth_secret': 1, 'test_ci_gap': 1}\nPolarities: {'bad': 2}\nChanged file labels: {}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-8a2efe57e66db5e0\",\n    \"kind\": \"pull_request_body\",\n    \"label\": \"security_auth_secret\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/Va3elina/moex-aggregator/pull/16\",\n    \"text\": \"GitHub feedback: security_auth_secret\\nPolarity: bad\\nKind: pull_request_body\\nRepo: Va3elina/moex-aggregator\\nAuthor: dependabot[bot] (Bot)\\nURL: https://github.com/Va3elina/moex-aggregator/pull/16\\nTitle: chore(deps): Bump actions/setup-python from 5.6.0 to 6.2.0\\nBody:\\nBumps [actions/setup-python](https://github.com/actions/setup-python) from 5.6.0 to 6.2.0.\\n<details>\\n<summary>Release notes</summary>\\n<p><em>Sourced from <a href=\\\"https://github.com/actions/setup-python/releases\\\">actions/setup-python's releases</a>.</em></p>\\n<blockquote>\\n<h2>v6.2.0</h2>\\n<h2>What's Changed</h2>\\n<h3>Dependency Upgrades</h3>\\n<ul>\\n<li>Upgrade dependencies to Node 24 compatible versions by <a href=\\\"https://github.com/salmanmkc\\\"><code>@\u200bsalmanmkc</code></a> in <a href=\\\"https://redirect.github.com/actions/setup-python/pull/1259\\\">actions/setup-python#1259</a></li>\\n<li>Upgrade urllib3 from 2.5.0 to 2.6.3 in <code>/__tests__/data</code> by <a href=\\\"https://github.com/dependabot\\\"><code>@\u200bdependabot</code></a> in <a href=\\\"https://redirect.github.com/actions/setup-python/pull/1253\\\">actions/setup-python#1253</a> and <a href=\\\"https://redirect.github.com/actions/setup-python/pull/1264\\\">actions/setup-python#1264</a></li>\"\n  },\n  {\n    \"id\": \"github-feedback-comment-bbaa2fa1ad0d70fd\",\n    \"kind\": \"issue_comment\",\n    \"label\": \"test_ci_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/Va3elina/moex-aggregator/pull/16#issuecomment-4710263031\",\n    \"text\": \"GitHub feedback: test_ci_gap\\nPolarity: bad\\nKind: issue_comment\\nRepo: Va3elina/moex-aggregator\\nAuthor: dependabot[bot] (Bot)\\nURL: https://github.com/Va3elina/moex-aggregator/pull/16#issuecomment-4710263031\\nTitle: \\nBody:\\n### Labels\\n\\nThe following labels could not be found: `ci`, `dependencies`. Please create them before Dependabot can add them to a pull request.\\n\\n\\nPlease fix the above issues or re\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/Va3elina/moex-aggregator", "source_id": "comment-chain-pattern-bad_chains-e98a12088f784563", "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": "Va3elina/moex-aggregator", "source_dataset": "comment_chain_patterns/bad_chains", "training_usage": "negative_or_unresolved"}}}, {"ruleId": "foundry_bad_chain", "level": "error", "message": {"text": "Foundry mined bad chains: Va3elina/moex-aggregator"}, "properties": {"repobilityId": 441709, "scanner": "foundry_dataset", "fingerprint": "7712f79debea774586fdda0016bf1b369f269024c10a21247ae92a1867cd6b92", "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": "Va3elina/moex-aggregator#15", "human_labels": ["test_ci_gap"], "issue_number": "15", "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": "Va3elina/moex-aggregator", "training_usage": "negative_or_unresolved", "confidence_tier": "unresolved", "source_chain_id": "evidence-chain-issue_chain-6776f552054cbc6d", "helicopter_views": {"schemas": 2}, "artifact_families": {"ci": 3, "docs": 5}, "source_chain_kind": "issue_chain", "changed_file_count": 0, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {}, "linked_commit_count": 0, "helicopter_view_count": 2, "source_artifact_count": 8, "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": 3, "design_schema_api_artifact_count": 0}, "text": "Comment chain pattern product: bad_chains\nRepo: Va3elina/moex-aggregator\nThread: Va3elina/moex-aggregator#15\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: Va3elina/moex-aggregator#15\nRepo: Va3elina/moex-aggregator\nThread label: thread_has_human_issue_without_fix_context\nOutcome: not_resolved_or_not_observed\nComment count: 2\nLinked commit count: 0\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 0\nLabels: {'test_ci_gap': 2}\nPolarities: {'bad': 2}\nChanged file labels: {}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-1f6db67fce33bb93\",\n    \"kind\": \"pull_request_body\",\n    \"label\": \"test_ci_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/Va3elina/moex-aggregator/pull/15\",\n    \"text\": \"GitHub feedback: test_ci_gap\\nPolarity: bad\\nKind: pull_request_body\\nRepo: Va3elina/moex-aggregator\\nAuthor: dependabot[bot] (Bot)\\nURL: https://github.com/Va3elina/moex-aggregator/pull/15\\nTitle: chore(deps): Bump gitleaks/gitleaks-action from 2.3.9 to 3.0.0\\nBody:\\nBumps [gitleaks/gitleaks-action](https://github.com/gitleaks/gitleaks-action) from 2.3.9 to 3.0.0.\\n<details>\\n<summary>Release notes</summary>\\n<p><em>Sourced from <a href=\\\"https://github.com/gitleaks/gitleaks-action/releases\\\">gitleaks/gitleaks-action's releases</a>.</em></p>\\n<blockquote>\\n<h2>v3.0.0</h2>\\n<h2>What's changed</h2>\\n<p>gitleaks-action v3 migrates the runtime from Node 20 to Node 24. <strong>No changes to inputs, outputs, or behavior.</strong> Update your workflow from <code>gitleaks/gitleaks-action@v2</code> to <code>gitleaks/gitleaks-action@v3</code>.</p>\\n<h3>Migration</h3>\\n<pre lang=\\\"yaml\\\"><code># Before\\n- uses: gitleaks/gitleaks-action@v2\\n<h1>After</h1>\\n<ul>\\n<li>uses: gitleaks/gitleaks-action@v3<br />\\n</code></pre></li>\\n</ul>\\n<h3>Why</h3>\\n<p>GitHub is deprecating the Node 20 runtime for Actions:</p>\\n<ul>\\n<li><strong>June 2, 2026:</strong> GitHub flips the runner default to Node 24. Workflows using <code>gitleaks-\"\n  },\n  {\n    \"id\": \"github-feedback-comment-d153061d2ad02ca5\",\n    \"kind\": \"issue_comment\",\n    \"label\": \"test_ci_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/Va3elina/moex-aggregator/pull/15#issuecomment-4710262597\",\n    \"text\": \"GitHub feedback: test_ci_gap\\nPolarity: bad\\nKind: issue_comment\\nRepo: Va3elina/moex-aggregator\\nAuthor: dependabot[bot] (Bot)\\nURL: https://github.com/Va3elina/moex-aggregator/pull/15#issuecomment-4710262597\\nTitle: \\nBody:\\n### Labels\\n\\nThe following labels could not be found: `ci`, `dependencies`. Please create them before Dependabot can add them to a pull request.\\n\\n\\nPlease fix the above issues or remove invalid values from `dependabo\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/Va3elina/moex-aggregator", "source_id": "comment-chain-pattern-bad_chains-f79164fcafdae763", "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": "Va3elina/moex-aggregator", "source_dataset": "comment_chain_patterns/bad_chains", "training_usage": "negative_or_unresolved"}}}, {"ruleId": "foundry_bad_chain", "level": "error", "message": {"text": "Foundry mined bad chains: Va3elina/moex-aggregator"}, "properties": {"repobilityId": 441708, "scanner": "foundry_dataset", "fingerprint": "1f1ac103af5958e4a7f924c153bebf03f88ae624ff8e02dcfb3bb27f5d4740f0", "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": "Va3elina/moex-aggregator#1", "human_labels": ["agent_instruction_gap", "security_auth_secret"], "issue_number": "1", "thread_label": "thread_has_human_issue_without_fix_context", "outcome_label": "not_resolved_or_not_observed", "source_backed": true, "max_confidence": 0.0, "repo_full_name": "Va3elina/moex-aggregator", "training_usage": "negative_or_unresolved", "confidence_tier": "unresolved", "source_chain_id": "evidence-chain-issue_chain-d252f998d9949f85", "helicopter_views": {"schemas": 2}, "artifact_families": {"ci": 3, "docs": 5}, "source_chain_kind": "issue_chain", "changed_file_count": 0, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {}, "linked_commit_count": 0, "helicopter_view_count": 2, "source_artifact_count": 8, "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": 3, "design_schema_api_artifact_count": 0}, "text": "Comment chain pattern product: bad_chains\nRepo: Va3elina/moex-aggregator\nThread: Va3elina/moex-aggregator#1\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: Va3elina/moex-aggregator#1\nRepo: Va3elina/moex-aggregator\nThread label: thread_has_human_issue_without_fix_context\nOutcome: not_resolved_or_not_observed\nComment count: 2\nLinked commit count: 0\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 0\nLabels: {'agent_instruction_gap': 1, 'security_auth_secret': 1}\nPolarities: {'bad': 2}\nChanged file labels: {}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-f272fa7d33db26db\",\n    \"kind\": \"pull_request_body\",\n    \"label\": \"agent_instruction_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/Va3elina/moex-aggregator/pull/1\",\n    \"text\": \"GitHub feedback: agent_instruction_gap\\nPolarity: bad\\nKind: pull_request_body\\nRepo: Va3elina/moex-aggregator\\nAuthor: Va3elina (User)\\nURL: https://github.com/Va3elina/moex-aggregator/pull/1\\nTitle: Full project review\\nBody:\\n## Full project code review\\n\\nPR \u0434\u043b\u044f \u0440\u0435\u0432\u044c\u044e \u0432\u0441\u0435\u0433\u043e \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u0446\u0435\u043b\u0438\u043a\u043e\u043c.\\nBase \u2014 \u043f\u0435\u0440\u0432\u044b\u0439 \u043a\u043e\u043c\u043c\u0438\u0442, head \u2014 main, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 diff \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u043f\u043e\u0447\u0442\u0438 \u0432\u0435\u0441\u044c \u043a\u043e\u0434.\\n\\n\ud83e\udd16 Generated with [Claude Code](https://claude.ai/code)\"\n  },\n  {\n    \"id\": \"github-feedback-comment-63422316c373fcff\",\n    \"kind\": \"issue_comment\",\n    \"label\": \"security_auth_secret\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/Va3elina/moex-aggregator/pull/1#issuecomment-4120767535\",\n    \"text\": \"GitHub feedback: security_auth_secret\\nPolarity: bad\\nKind: issue_comment\\nRepo: Va3elina/moex-aggregator\\nAuthor: Va3elina (User)\\nURL: https://github.com/Va3elina/moex-aggregator/pull/1#issuecomment-4120767535\\nTitle: \\nBody:\\n### Code review\\n\\nFound 4 issues:\\n\\n1. **`backup_db.sh` sends production `.env` with all secrets via Telegram** \u2014 The backup script unconditionally uploads the `.env` file (containing JWT secrets, DB passwords, OAuth credentials) as a Telegram document. Anyone with access to the bot token or admin chat gets all production secrets.\\n\\nhttps://github.com/Va3elina/moex-aggregator/blob/51a2a90a478d876a5894ed4fe98ee92fc062fa7d/backup_db.sh#L46-L53\\n\\n2. **`POST /api/heatmap/refresh` has no authentication** \u2014 Any anonymous user can trigger `REFRESH MATERIALIZED VIEW` on the database. This is a DoS vector and exposes a privileged admin operation without any access control.\\n\\nhttps://github.com/Va3elina/moex-aggregator/blob/51a2a90a478d876a5894ed4fe98ee92fc062fa7d/api/routers/heatmap.py#L96-L111\\n\\n3. **SQL injection via f-string in `NOTIFY` payload** \u2014 `conn.execute(text(f\\\"NOTIFY data_updated, '{payload}'\\\"))` interpolates a JSON string directly into SQL. Sh\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/Va3elina/moex-aggregator", "source_id": "comment-chain-pattern-bad_chains-e7ad0af28e17d4dd", "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": "Va3elina/moex-aggregator", "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: Va3elina/moex-aggregator"}, "properties": {"repobilityId": 454973, "scanner": "foundry_dataset", "fingerprint": "7ea8e68c017a6df67833b2695a81127d5fb3bf717b2a41250ce4a1fe62e6071f", "category": "auth", "severity": "critical", "confidence": 0.78, "triageState": "open", "verdict": "needs_review", "isResolved": false, "reason": "Imported from mined Foundry/Fable5 evidence with real GitHub/source provenance. Review source_id before acting.", "evidence": {"meta": {"kind": "graph_query_record", "title": "Security/auth changes without enough guardrails", "intent": "Assumption-check security/auth examples requiring stronger tests or CI.", "labels": {"security_or_secrets": 1, "security_auth_secret": 1, "claimed_resolved_unverified": 3, "issue_or_pull_request_thread": 1, "human_reported_issue_then_fix_attempt": 1, "thread_has_human_issue_and_fix_context": 2}, "source": "graph_query_export", "motif_id": "security_auth_without_guardrails", "outcomes": {"claimed_resolved_unverified": 6}, "polarity": "bad", "query_id": "security_auth_guardrail_gaps", "severity": "critical", "ci_labels": {}, "synthetic": false, "edge_count": 12, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 1, "thread_has_comment": 1, "chain_has_link_quality": 3, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 1, "comment_chain_links_commit": 1, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 1}, "node_count": 10, "node_types": {"repo": 1, "commit": 1, "thread": 1, "comment": 1, "fix_outcome": 1, "issue_chain": 1, "link_quality": 3, "comment_chain": 1}, "query_type": "motif_query", "thread_key": "Va3elina/moex-aggregator#65", "issue_number": "65", "quality_tiers": {"high_confidence": 3}, "repo_full_name": "Va3elina/moex-aggregator", "training_usage": "assumption_check", "source_motif_id": "graph-pattern-motif-thread-d39b5094aa9b2cee", "graph_gold_label": "supported_by_high_confidence_link", "changed_file_labels": {}}, "text": "Graph query export: Security/auth changes without enough guardrails\nQuery id: security_auth_guardrail_gaps\nQuery type: motif_query\nIntent: Assumption-check security/auth examples requiring stronger tests or CI.\nMotif: security_auth_without_guardrails\nTraining usage: assumption_check\nGraph gold label: supported_by_high_confidence_link\nRepo: Va3elina/moex-aggregator\nThread: Va3elina/moex-aggregator#65\nEvidence:\nGraph motif: Security/auth change without enough guardrails\nMotif id: security_auth_without_guardrails\nPolarity: bad\nTraining usage: assumption_check\nSeverity: critical\nRepo: Va3elina/moex-aggregator\nThread: Va3elina/moex-aggregator#65\nGraph gold label: supported_by_high_confidence_link\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: Va3elina/moex-aggregator#65\nRepo: Va3elina/moex-aggregator\nIssue/PR number: 65\nGraph consistency label: supported_by_high_confidence_link\nNodes: 10\nEdges: 12\nNode types: {'link_quality': 3, 'thread': 1, 'repo': 1, 'comment': 1, 'comment_chain': 1, 'commit': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'chain_has_link_quality': 3, 'repo_has_thread': 1, 'thread_has_comment': 1, 'thread_has_comment_chain': 1, 'comment_has_chain': 1, 'comment_chain_links_commit': 1, 'thread_has_issue_chain': 1, 'issue_chain_has_comment_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'claimed_resolved_unverified': 3, 'thread_has_human_issue_and_fix_context': 2, 'issue_or_pull_request_thread': 1, 'security_auth_secret': 1, 'human_reported_issue_then_fix_attempt': 1, 'security_or_secrets': 1}\nOutcomes: {'claimed_resolved_unverified': 6}\nQuality tiers: {'high_confidence': 3}\nCI labels: {}\nCurriculum targets:\n- Train auth boundary repair with tests, permission matrices, and secret-handling checks.\n- Keep risky auth changes separate from ordinary bug-fix examples.\nAssumption checks:\n- Are auth/permission paths covered by tests?\n- Are secrets, CORS, or access rules verified rather than summarized?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/Va3elina/moex-aggregator", "source_id": "graph-query-motif_query-08e4b5fd12121c67", "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": "Va3elina/moex-aggregator", "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: Va3elina/moex-aggregator"}, "properties": {"repobilityId": 454972, "scanner": "foundry_dataset", "fingerprint": "8877f6cfd8c0c541e8b43d590f7797d6f6d3ac6e5bed1fc687471147bd098b59", "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": {"api_integration_gap": 1, "security_auth_secret": 1, "issue_or_pull_request_thread": 1, "not_resolved_or_not_observed": 4, "human_reported_issue_no_linked_fix": 2, "thread_has_human_issue_without_fix_context": 2}, "source": "graph_query_export", "motif_id": "security_auth_without_guardrails", "outcomes": {"not_resolved_or_not_observed": 8}, "polarity": "bad", "query_id": "security_auth_guardrail_gaps", "severity": "critical", "ci_labels": {}, "synthetic": false, "edge_count": 16, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 2, "thread_has_comment": 2, "chain_has_link_quality": 4, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 2, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 2}, "node_count": 12, "node_types": {"repo": 1, "thread": 1, "comment": 2, "fix_outcome": 1, "issue_chain": 1, "link_quality": 4, "comment_chain": 2}, "query_type": "motif_query", "thread_key": "Va3elina/moex-aggregator#29", "issue_number": "29", "quality_tiers": {"unresolved": 4}, "repo_full_name": "Va3elina/moex-aggregator", "training_usage": "assumption_check", "source_motif_id": "graph-pattern-motif-thread-a86238fc4b1c89e0", "graph_gold_label": "needs_more_evidence", "changed_file_labels": {}}, "text": "Graph query export: Security/auth changes without enough guardrails\nQuery id: security_auth_guardrail_gaps\nQuery type: motif_query\nIntent: Assumption-check security/auth examples requiring stronger tests or CI.\nMotif: security_auth_without_guardrails\nTraining usage: assumption_check\nGraph gold label: needs_more_evidence\nRepo: Va3elina/moex-aggregator\nThread: Va3elina/moex-aggregator#29\nEvidence:\nGraph motif: Security/auth change without enough guardrails\nMotif id: security_auth_without_guardrails\nPolarity: bad\nTraining usage: assumption_check\nSeverity: critical\nRepo: Va3elina/moex-aggregator\nThread: Va3elina/moex-aggregator#29\nGraph gold label: needs_more_evidence\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: Va3elina/moex-aggregator#29\nRepo: Va3elina/moex-aggregator\nIssue/PR number: 29\nGraph consistency label: needs_more_evidence\nNodes: 12\nEdges: 16\nNode types: {'link_quality': 4, 'comment': 2, 'comment_chain': 2, 'thread': 1, 'repo': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'chain_has_link_quality': 4, 'thread_has_comment': 2, 'thread_has_comment_chain': 2, 'comment_has_chain': 2, 'issue_chain_has_comment_chain': 2, 'repo_has_thread': 1, 'thread_has_issue_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'not_resolved_or_not_observed': 4, 'human_reported_issue_no_linked_fix': 2, 'thread_has_human_issue_without_fix_context': 2, 'issue_or_pull_request_thread': 1, 'security_auth_secret': 1, 'api_integration_gap': 1}\nOutcomes: {'not_resolved_or_not_observed': 8}\nQuality tiers: {'unresolved': 4}\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/Va3elina/moex-aggregator", "source_id": "graph-query-motif_query-6368d6f27bc11689", "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": "Va3elina/moex-aggregator", "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: Va3elina/moex-aggregator"}, "properties": {"repobilityId": 454971, "scanner": "foundry_dataset", "fingerprint": "3df76a60e4482309e65155d6e92684f288c9c1210c36c7bd5cfe2bc3730367de", "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": {"api_integration_gap": 1, "security_auth_secret": 1, "issue_or_pull_request_thread": 1, "not_resolved_or_not_observed": 4, "human_reported_issue_no_linked_fix": 2, "thread_has_human_issue_without_fix_context": 2}, "source": "graph_query_export", "motif_id": "security_auth_without_guardrails", "outcomes": {"not_resolved_or_not_observed": 8}, "polarity": "bad", "query_id": "security_auth_guardrail_gaps", "severity": "critical", "ci_labels": {}, "synthetic": false, "edge_count": 16, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 2, "thread_has_comment": 2, "chain_has_link_quality": 4, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 2, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 2}, "node_count": 12, "node_types": {"repo": 1, "thread": 1, "comment": 2, "fix_outcome": 1, "issue_chain": 1, "link_quality": 4, "comment_chain": 2}, "query_type": "motif_query", "thread_key": "Va3elina/moex-aggregator#26", "issue_number": "26", "quality_tiers": {"unresolved": 4}, "repo_full_name": "Va3elina/moex-aggregator", "training_usage": "assumption_check", "source_motif_id": "graph-pattern-motif-thread-19b0ab780355c5bf", "graph_gold_label": "needs_more_evidence", "changed_file_labels": {}}, "text": "Graph query export: Security/auth changes without enough guardrails\nQuery id: security_auth_guardrail_gaps\nQuery type: motif_query\nIntent: Assumption-check security/auth examples requiring stronger tests or CI.\nMotif: security_auth_without_guardrails\nTraining usage: assumption_check\nGraph gold label: needs_more_evidence\nRepo: Va3elina/moex-aggregator\nThread: Va3elina/moex-aggregator#26\nEvidence:\nGraph motif: Security/auth change without enough guardrails\nMotif id: security_auth_without_guardrails\nPolarity: bad\nTraining usage: assumption_check\nSeverity: critical\nRepo: Va3elina/moex-aggregator\nThread: Va3elina/moex-aggregator#26\nGraph gold label: needs_more_evidence\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: Va3elina/moex-aggregator#26\nRepo: Va3elina/moex-aggregator\nIssue/PR number: 26\nGraph consistency label: needs_more_evidence\nNodes: 12\nEdges: 16\nNode types: {'link_quality': 4, 'comment': 2, 'comment_chain': 2, 'thread': 1, 'repo': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'chain_has_link_quality': 4, 'thread_has_comment': 2, 'thread_has_comment_chain': 2, 'comment_has_chain': 2, 'issue_chain_has_comment_chain': 2, 'repo_has_thread': 1, 'thread_has_issue_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'not_resolved_or_not_observed': 4, 'human_reported_issue_no_linked_fix': 2, 'thread_has_human_issue_without_fix_context': 2, 'issue_or_pull_request_thread': 1, 'security_auth_secret': 1, 'api_integration_gap': 1}\nOutcomes: {'not_resolved_or_not_observed': 8}\nQuality tiers: {'unresolved': 4}\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/Va3elina/moex-aggregator", "source_id": "graph-query-motif_query-fccdd5e9992b7c46", "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": "Va3elina/moex-aggregator", "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: Va3elina/moex-aggregator"}, "properties": {"repobilityId": 454970, "scanner": "foundry_dataset", "fingerprint": "03333b07586344d81fc31f1f226767f32459504a5a63410be5e924260aa7fbaa", "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": {"api_integration_gap": 1, "security_auth_secret": 1, "issue_or_pull_request_thread": 1, "not_resolved_or_not_observed": 4, "human_reported_issue_no_linked_fix": 2, "thread_has_human_issue_without_fix_context": 2}, "source": "graph_query_export", "motif_id": "security_auth_without_guardrails", "outcomes": {"not_resolved_or_not_observed": 8}, "polarity": "bad", "query_id": "security_auth_guardrail_gaps", "severity": "critical", "ci_labels": {}, "synthetic": false, "edge_count": 16, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 2, "thread_has_comment": 2, "chain_has_link_quality": 4, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 2, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 2}, "node_count": 12, "node_types": {"repo": 1, "thread": 1, "comment": 2, "fix_outcome": 1, "issue_chain": 1, "link_quality": 4, "comment_chain": 2}, "query_type": "motif_query", "thread_key": "Va3elina/moex-aggregator#22", "issue_number": "22", "quality_tiers": {"unresolved": 4}, "repo_full_name": "Va3elina/moex-aggregator", "training_usage": "assumption_check", "source_motif_id": "graph-pattern-motif-thread-871bb381fc5813c3", "graph_gold_label": "needs_more_evidence", "changed_file_labels": {}}, "text": "Graph query export: Security/auth changes without enough guardrails\nQuery id: security_auth_guardrail_gaps\nQuery type: motif_query\nIntent: Assumption-check security/auth examples requiring stronger tests or CI.\nMotif: security_auth_without_guardrails\nTraining usage: assumption_check\nGraph gold label: needs_more_evidence\nRepo: Va3elina/moex-aggregator\nThread: Va3elina/moex-aggregator#22\nEvidence:\nGraph motif: Security/auth change without enough guardrails\nMotif id: security_auth_without_guardrails\nPolarity: bad\nTraining usage: assumption_check\nSeverity: critical\nRepo: Va3elina/moex-aggregator\nThread: Va3elina/moex-aggregator#22\nGraph gold label: needs_more_evidence\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: Va3elina/moex-aggregator#22\nRepo: Va3elina/moex-aggregator\nIssue/PR number: 22\nGraph consistency label: needs_more_evidence\nNodes: 12\nEdges: 16\nNode types: {'link_quality': 4, 'comment': 2, 'comment_chain': 2, 'thread': 1, 'repo': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'chain_has_link_quality': 4, 'thread_has_comment': 2, 'thread_has_comment_chain': 2, 'comment_has_chain': 2, 'issue_chain_has_comment_chain': 2, 'repo_has_thread': 1, 'thread_has_issue_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'not_resolved_or_not_observed': 4, 'human_reported_issue_no_linked_fix': 2, 'thread_has_human_issue_without_fix_context': 2, 'issue_or_pull_request_thread': 1, 'security_auth_secret': 1, 'api_integration_gap': 1}\nOutcomes: {'not_resolved_or_not_observed': 8}\nQuality tiers: {'unresolved': 4}\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/Va3elina/moex-aggregator", "source_id": "graph-query-motif_query-cd7482a1c9b5a5b6", "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": "Va3elina/moex-aggregator", "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: Va3elina/moex-aggregator"}, "properties": {"repobilityId": 454969, "scanner": "foundry_dataset", "fingerprint": "032efb56db3af4660b1d0418c2a43d5c0f5b7344885851cb31f7c0d5287a082d", "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, "security_auth_secret": 1, "issue_or_pull_request_thread": 1, "not_resolved_or_not_observed": 4, "human_reported_issue_no_linked_fix": 2, "thread_has_human_issue_without_fix_context": 2}, "source": "graph_query_export", "motif_id": "security_auth_without_guardrails", "outcomes": {"not_resolved_or_not_observed": 8}, "polarity": "bad", "query_id": "security_auth_guardrail_gaps", "severity": "critical", "ci_labels": {}, "synthetic": false, "edge_count": 16, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 2, "thread_has_comment": 2, "chain_has_link_quality": 4, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 2, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 2}, "node_count": 12, "node_types": {"repo": 1, "thread": 1, "comment": 2, "fix_outcome": 1, "issue_chain": 1, "link_quality": 4, "comment_chain": 2}, "query_type": "motif_query", "thread_key": "Va3elina/moex-aggregator#16", "issue_number": "16", "quality_tiers": {"unresolved": 4}, "repo_full_name": "Va3elina/moex-aggregator", "training_usage": "assumption_check", "source_motif_id": "graph-pattern-motif-thread-c95ceaf139592653", "graph_gold_label": "needs_more_evidence", "changed_file_labels": {}}, "text": "Graph query export: Security/auth changes without enough guardrails\nQuery id: security_auth_guardrail_gaps\nQuery type: motif_query\nIntent: Assumption-check security/auth examples requiring stronger tests or CI.\nMotif: security_auth_without_guardrails\nTraining usage: assumption_check\nGraph gold label: needs_more_evidence\nRepo: Va3elina/moex-aggregator\nThread: Va3elina/moex-aggregator#16\nEvidence:\nGraph motif: Security/auth change without enough guardrails\nMotif id: security_auth_without_guardrails\nPolarity: bad\nTraining usage: assumption_check\nSeverity: critical\nRepo: Va3elina/moex-aggregator\nThread: Va3elina/moex-aggregator#16\nGraph gold label: needs_more_evidence\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: Va3elina/moex-aggregator#16\nRepo: Va3elina/moex-aggregator\nIssue/PR number: 16\nGraph consistency label: needs_more_evidence\nNodes: 12\nEdges: 16\nNode types: {'link_quality': 4, 'comment': 2, 'comment_chain': 2, 'thread': 1, 'repo': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'chain_has_link_quality': 4, 'thread_has_comment': 2, 'thread_has_comment_chain': 2, 'comment_has_chain': 2, 'issue_chain_has_comment_chain': 2, 'repo_has_thread': 1, 'thread_has_issue_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'not_resolved_or_not_observed': 4, 'human_reported_issue_no_linked_fix': 2, 'thread_has_human_issue_without_fix_context': 2, 'issue_or_pull_request_thread': 1, 'security_auth_secret': 1, 'test_ci_gap': 1}\nOutcomes: {'not_resolved_or_not_observed': 8}\nQuality tiers: {'unresolved': 4}\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/Va3elina/moex-aggregator", "source_id": "graph-query-motif_query-148c8e24ffa01135", "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": "Va3elina/moex-aggregator", "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: Va3elina/moex-aggregator"}, "properties": {"repobilityId": 454968, "scanner": "foundry_dataset", "fingerprint": "da932418b72b96ec336d41f7f6c1ce48a14ffdf82212cb9be213db8658c51231", "category": "auth", "severity": "critical", "confidence": 0.78, "triageState": "open", "verdict": "needs_review", "isResolved": false, "reason": "Imported from mined Foundry/Fable5 evidence with real GitHub/source provenance. Review source_id before acting.", "evidence": {"meta": {"kind": "graph_query_record", "title": "Security/auth changes without enough guardrails", "intent": "Assumption-check security/auth examples requiring stronger tests or CI.", "labels": {"security_auth_secret": 1, "agent_instruction_gap": 1, "issue_or_pull_request_thread": 1, "not_resolved_or_not_observed": 4, "human_reported_issue_no_linked_fix": 2, "thread_has_human_issue_without_fix_context": 2}, "source": "graph_query_export", "motif_id": "security_auth_without_guardrails", "outcomes": {"not_resolved_or_not_observed": 8}, "polarity": "bad", "query_id": "security_auth_guardrail_gaps", "severity": "critical", "ci_labels": {}, "synthetic": false, "edge_count": 16, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 2, "thread_has_comment": 2, "chain_has_link_quality": 4, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 2, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 2}, "node_count": 12, "node_types": {"repo": 1, "thread": 1, "comment": 2, "fix_outcome": 1, "issue_chain": 1, "link_quality": 4, "comment_chain": 2}, "query_type": "motif_query", "thread_key": "Va3elina/moex-aggregator#1", "issue_number": "1", "quality_tiers": {"unresolved": 4}, "repo_full_name": "Va3elina/moex-aggregator", "training_usage": "assumption_check", "source_motif_id": "graph-pattern-motif-thread-9508462dda1b0c11", "graph_gold_label": "needs_more_evidence", "changed_file_labels": {}}, "text": "Graph query export: Security/auth changes without enough guardrails\nQuery id: security_auth_guardrail_gaps\nQuery type: motif_query\nIntent: Assumption-check security/auth examples requiring stronger tests or CI.\nMotif: security_auth_without_guardrails\nTraining usage: assumption_check\nGraph gold label: needs_more_evidence\nRepo: Va3elina/moex-aggregator\nThread: Va3elina/moex-aggregator#1\nEvidence:\nGraph motif: Security/auth change without enough guardrails\nMotif id: security_auth_without_guardrails\nPolarity: bad\nTraining usage: assumption_check\nSeverity: critical\nRepo: Va3elina/moex-aggregator\nThread: Va3elina/moex-aggregator#1\nGraph gold label: needs_more_evidence\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: Va3elina/moex-aggregator#1\nRepo: Va3elina/moex-aggregator\nIssue/PR number: 1\nGraph consistency label: needs_more_evidence\nNodes: 12\nEdges: 16\nNode types: {'link_quality': 4, 'comment': 2, 'comment_chain': 2, 'thread': 1, 'repo': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'chain_has_link_quality': 4, 'thread_has_comment': 2, 'thread_has_comment_chain': 2, 'comment_has_chain': 2, 'issue_chain_has_comment_chain': 2, 'repo_has_thread': 1, 'thread_has_issue_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'not_resolved_or_not_observed': 4, 'human_reported_issue_no_linked_fix': 2, 'thread_has_human_issue_without_fix_context': 2, 'issue_or_pull_request_thread': 1, 'agent_instruction_gap': 1, 'security_auth_secret': 1}\nOutcomes: {'not_resolved_or_not_observed': 8}\nQuality tiers: {'unresolved': 4}\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/Va3elina/moex-aggregator", "source_id": "graph-query-motif_query-1e75a82d13a8a035", "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": "Va3elina/moex-aggregator", "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: Va3elina/moex-aggregator"}, "properties": {"repobilityId": 451097, "scanner": "foundry_dataset", "fingerprint": "a097cd3864cb76a83fbcb8050f2235e54ebd68f71a9012ba62a1d8c03aa5f68f", "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": {"ui_or_frontend": 6, "generated_provenance": 4, "agent_instruction_gap": 1, "ci_pending_or_incomplete": 1, "self_attested_unverified": 3, "issue_or_pull_request_thread": 1, "thread_has_human_issue_and_fix_context": 2, "self_attested_or_generated_fix_unverified": 1}, "source": "graph_query_export", "motif_id": "mock_as_real_or_placeholder", "outcomes": {"self_attested_unverified": 6}, "polarity": "bad", "query_id": "mock_as_real_or_placeholder", "severity": "critical", "ci_labels": {"ci_pending_or_incomplete": 2}, "synthetic": false, "edge_count": 34, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 1, "thread_has_comment": 1, "thread_touches_file": 6, "comment_chain_has_ci": 1, "chain_has_link_quality": 3, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "issue_chain_touches_file": 6, "thread_has_comment_chain": 1, "comment_chain_links_commit": 4, "comment_chain_touches_file": 6, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 1}, "node_count": 20, "node_types": {"repo": 1, "commit": 4, "thread": 1, "comment": 1, "pr_file": 6, "ci_summary": 1, "fix_outcome": 1, "issue_chain": 1, "link_quality": 3, "comment_chain": 1}, "query_type": "motif_query", "thread_key": "Va3elina/moex-aggregator#86", "issue_number": "86", "quality_tiers": {"high_confidence": 3}, "repo_full_name": "Va3elina/moex-aggregator", "training_usage": "hard_negative", "source_motif_id": "graph-pattern-motif-thread-972680075bf836f3", "graph_gold_label": "supported_by_high_confidence_link", "changed_file_labels": {"ui_or_frontend": 24}}, "text": "Graph query export: Mock, sample, placeholder, or self-attested behavior treated as real\nQuery id: mock_as_real_or_placeholder\nQuery type: motif_query\nIntent: Hard negatives for fake completeness and missing real data paths.\nMotif: mock_as_real_or_placeholder\nTraining usage: hard_negative\nGraph gold label: supported_by_high_confidence_link\nRepo: Va3elina/moex-aggregator\nThread: Va3elina/moex-aggregator#86\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: Va3elina/moex-aggregator\nThread: Va3elina/moex-aggregator#86\nGraph gold label: supported_by_high_confidence_link\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: Va3elina/moex-aggregator#86\nRepo: Va3elina/moex-aggregator\nIssue/PR number: 86\nGraph consistency label: supported_by_high_confidence_link\nNodes: 20\nEdges: 34\nNode types: {'pr_file': 6, 'commit': 4, 'link_quality': 3, 'thread': 1, 'repo': 1, 'comment': 1, 'comment_chain': 1, 'ci_summary': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'thread_touches_file': 6, 'comment_chain_touches_file': 6, 'issue_chain_touches_file': 6, 'comment_chain_links_commit': 4, 'chain_has_link_quality': 3, 'repo_has_thread': 1, 'thread_has_comment': 1, 'thread_has_comment_chain': 1, 'comment_has_chain': 1, 'comment_chain_has_ci': 1, 'thread_has_issue_chain': 1, 'issue_chain_has_comment_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'ui_or_frontend': 6, 'generated_provenance': 4, 'self_attested_unverified': 3, 'thread_has_human_issue_and_fix_context': 2, 'issue_or_pull_request_thread': 1, 'agent_instruction_gap': 1, 'self_attested_or_generated_fix_unverified': 1, 'ci_pending_or_incomplete': 1}\nOutcomes: {'self_attested_unverified': 6}\nQuality tiers: {'high_confidence': 3}\nCI labels: {'ci_pending_or_incomplete': 2}\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/Va3elina/moex-aggregator", "source_id": "graph-query-motif_query-c5e1f754bce2e6ff", "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": "Va3elina/moex-aggregator", "source_dataset": "graph_queries/mock_as_real_or_placeholder", "training_usage": "hard_negative"}}}, {"ruleId": "foundry_fake_real_gap", "level": "error", "message": {"text": "Foundry mined mock as real or placeholder: Va3elina/moex-aggregator"}, "properties": {"repobilityId": 451096, "scanner": "foundry_dataset", "fingerprint": "60c7ff211a74ad5746e72e28171d0bf05e7e8ff2f25232cd734e821af3b12cf9", "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": {"api_or_backend": 1, "generated_provenance": 2, "agent_instruction_gap": 1, "ci_pending_or_incomplete": 1, "self_attested_unverified": 3, "issue_or_pull_request_thread": 1, "thread_has_human_issue_and_fix_context": 2, "self_attested_or_generated_fix_unverified": 1}, "source": "graph_query_export", "motif_id": "mock_as_real_or_placeholder", "outcomes": {"self_attested_unverified": 6}, "polarity": "bad", "query_id": "mock_as_real_or_placeholder", "severity": "critical", "ci_labels": {"ci_pending_or_incomplete": 2}, "synthetic": false, "edge_count": 17, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 1, "thread_has_comment": 1, "thread_touches_file": 1, "comment_chain_has_ci": 1, "chain_has_link_quality": 3, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "issue_chain_touches_file": 1, "thread_has_comment_chain": 1, "comment_chain_links_commit": 2, "comment_chain_touches_file": 1, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 1}, "node_count": 13, "node_types": {"repo": 1, "commit": 2, "thread": 1, "comment": 1, "pr_file": 1, "ci_summary": 1, "fix_outcome": 1, "issue_chain": 1, "link_quality": 3, "comment_chain": 1}, "query_type": "motif_query", "thread_key": "Va3elina/moex-aggregator#85", "issue_number": "85", "quality_tiers": {"high_confidence": 3}, "repo_full_name": "Va3elina/moex-aggregator", "training_usage": "hard_negative", "source_motif_id": "graph-pattern-motif-thread-1179b5bec5dbae18", "graph_gold_label": "supported_by_high_confidence_link", "changed_file_labels": {"api_or_backend": 4}}, "text": "Graph query export: Mock, sample, placeholder, or self-attested behavior treated as real\nQuery id: mock_as_real_or_placeholder\nQuery type: motif_query\nIntent: Hard negatives for fake completeness and missing real data paths.\nMotif: mock_as_real_or_placeholder\nTraining usage: hard_negative\nGraph gold label: supported_by_high_confidence_link\nRepo: Va3elina/moex-aggregator\nThread: Va3elina/moex-aggregator#85\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: Va3elina/moex-aggregator\nThread: Va3elina/moex-aggregator#85\nGraph gold label: supported_by_high_confidence_link\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: Va3elina/moex-aggregator#85\nRepo: Va3elina/moex-aggregator\nIssue/PR number: 85\nGraph consistency label: supported_by_high_confidence_link\nNodes: 13\nEdges: 17\nNode types: {'link_quality': 3, 'commit': 2, 'thread': 1, 'repo': 1, 'comment': 1, 'pr_file': 1, 'comment_chain': 1, 'ci_summary': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'chain_has_link_quality': 3, 'comment_chain_links_commit': 2, 'repo_has_thread': 1, 'thread_has_comment': 1, 'thread_touches_file': 1, 'thread_has_comment_chain': 1, 'comment_has_chain': 1, 'comment_chain_has_ci': 1, 'comment_chain_touches_file': 1, 'thread_has_issue_chain': 1, 'issue_chain_has_comment_chain': 1, 'issue_chain_touches_file': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'self_attested_unverified': 3, 'generated_provenance': 2, 'thread_has_human_issue_and_fix_context': 2, 'issue_or_pull_request_thread': 1, 'agent_instruction_gap': 1, 'api_or_backend': 1, 'self_attested_or_generated_fix_unverified': 1, 'ci_pending_or_incomplete': 1}\nOutcomes: {'self_attested_unverified': 6}\nQuality tiers: {'high_confidence': 3}\nCI labels: {'ci_pending_or_incomplete': 2}\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/Va3elina/moex-aggregator", "source_id": "graph-query-motif_query-ff3ed7517855a8a1", "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": "Va3elina/moex-aggregator", "source_dataset": "graph_queries/mock_as_real_or_placeholder", "training_usage": "hard_negative"}}}, {"ruleId": "foundry_fake_real_gap", "level": "error", "message": {"text": "Foundry mined mock as real or placeholder: Va3elina/moex-aggregator"}, "properties": {"repobilityId": 451095, "scanner": "foundry_dataset", "fingerprint": "d3988985962eebd88872a1b7a1ceb0ffc0002039e3726a692c4f4d463832f943", "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": {"ui_or_frontend": 4, "generated_provenance": 3, "agent_instruction_gap": 1, "ci_pending_or_incomplete": 1, "self_attested_unverified": 3, "issue_or_pull_request_thread": 1, "thread_has_human_issue_and_fix_context": 2, "self_attested_or_generated_fix_unverified": 1}, "source": "graph_query_export", "motif_id": "mock_as_real_or_placeholder", "outcomes": {"self_attested_unverified": 6}, "polarity": "bad", "query_id": "mock_as_real_or_placeholder", "severity": "critical", "ci_labels": {"ci_pending_or_incomplete": 2}, "synthetic": false, "edge_count": 27, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 1, "thread_has_comment": 1, "thread_touches_file": 4, "comment_chain_has_ci": 1, "chain_has_link_quality": 3, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "issue_chain_touches_file": 4, "thread_has_comment_chain": 1, "comment_chain_links_commit": 3, "comment_chain_touches_file": 4, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 1}, "node_count": 17, "node_types": {"repo": 1, "commit": 3, "thread": 1, "comment": 1, "pr_file": 4, "ci_summary": 1, "fix_outcome": 1, "issue_chain": 1, "link_quality": 3, "comment_chain": 1}, "query_type": "motif_query", "thread_key": "Va3elina/moex-aggregator#79", "issue_number": "79", "quality_tiers": {"high_confidence": 3}, "repo_full_name": "Va3elina/moex-aggregator", "training_usage": "hard_negative", "source_motif_id": "graph-pattern-motif-thread-82e9d93c94294a0d", "graph_gold_label": "supported_by_high_confidence_link", "changed_file_labels": {"ui_or_frontend": 16}}, "text": "Graph query export: Mock, sample, placeholder, or self-attested behavior treated as real\nQuery id: mock_as_real_or_placeholder\nQuery type: motif_query\nIntent: Hard negatives for fake completeness and missing real data paths.\nMotif: mock_as_real_or_placeholder\nTraining usage: hard_negative\nGraph gold label: supported_by_high_confidence_link\nRepo: Va3elina/moex-aggregator\nThread: Va3elina/moex-aggregator#79\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: Va3elina/moex-aggregator\nThread: Va3elina/moex-aggregator#79\nGraph gold label: supported_by_high_confidence_link\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: Va3elina/moex-aggregator#79\nRepo: Va3elina/moex-aggregator\nIssue/PR number: 79\nGraph consistency label: supported_by_high_confidence_link\nNodes: 17\nEdges: 27\nNode types: {'pr_file': 4, 'commit': 3, 'link_quality': 3, 'thread': 1, 'repo': 1, 'comment': 1, 'comment_chain': 1, 'ci_summary': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'thread_touches_file': 4, 'comment_chain_touches_file': 4, 'issue_chain_touches_file': 4, 'comment_chain_links_commit': 3, 'chain_has_link_quality': 3, 'repo_has_thread': 1, 'thread_has_comment': 1, 'thread_has_comment_chain': 1, 'comment_has_chain': 1, 'comment_chain_has_ci': 1, 'thread_has_issue_chain': 1, 'issue_chain_has_comment_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'ui_or_frontend': 4, 'generated_provenance': 3, 'self_attested_unverified': 3, 'thread_has_human_issue_and_fix_context': 2, 'issue_or_pull_request_thread': 1, 'agent_instruction_gap': 1, 'self_attested_or_generated_fix_unverified': 1, 'ci_pending_or_incomplete': 1}\nOutcomes: {'self_attested_unverified': 6}\nQuality tiers: {'high_confidence': 3}\nCI labels: {'ci_pending_or_incomplete': 2}\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/Va3elina/moex-aggregator", "source_id": "graph-query-motif_query-e1005ce544d40235", "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": "Va3elina/moex-aggregator", "source_dataset": "graph_queries/mock_as_real_or_placeholder", "training_usage": "hard_negative"}}}, {"ruleId": "foundry_fake_real_gap", "level": "error", "message": {"text": "Foundry mined mock as real or placeholder: Va3elina/moex-aggregator"}, "properties": {"repobilityId": 451094, "scanner": "foundry_dataset", "fingerprint": "88905c210919342bfb8f1c38edc0eca3699bfe5e2670369545cb0b139aad4ad7", "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": {"ui_or_frontend": 4, "generated_provenance": 3, "agent_instruction_gap": 1, "ci_pending_or_incomplete": 1, "self_attested_unverified": 3, "issue_or_pull_request_thread": 1, "thread_has_human_issue_and_fix_context": 2, "self_attested_or_generated_fix_unverified": 1}, "source": "graph_query_export", "motif_id": "mock_as_real_or_placeholder", "outcomes": {"self_attested_unverified": 6}, "polarity": "bad", "query_id": "mock_as_real_or_placeholder", "severity": "critical", "ci_labels": {"ci_pending_or_incomplete": 2}, "synthetic": false, "edge_count": 27, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 1, "thread_has_comment": 1, "thread_touches_file": 4, "comment_chain_has_ci": 1, "chain_has_link_quality": 3, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "issue_chain_touches_file": 4, "thread_has_comment_chain": 1, "comment_chain_links_commit": 3, "comment_chain_touches_file": 4, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 1}, "node_count": 17, "node_types": {"repo": 1, "commit": 3, "thread": 1, "comment": 1, "pr_file": 4, "ci_summary": 1, "fix_outcome": 1, "issue_chain": 1, "link_quality": 3, "comment_chain": 1}, "query_type": "motif_query", "thread_key": "Va3elina/moex-aggregator#78", "issue_number": "78", "quality_tiers": {"high_confidence": 3}, "repo_full_name": "Va3elina/moex-aggregator", "training_usage": "hard_negative", "source_motif_id": "graph-pattern-motif-thread-74528b006b437b86", "graph_gold_label": "supported_by_high_confidence_link", "changed_file_labels": {"ui_or_frontend": 16}}, "text": "Graph query export: Mock, sample, placeholder, or self-attested behavior treated as real\nQuery id: mock_as_real_or_placeholder\nQuery type: motif_query\nIntent: Hard negatives for fake completeness and missing real data paths.\nMotif: mock_as_real_or_placeholder\nTraining usage: hard_negative\nGraph gold label: supported_by_high_confidence_link\nRepo: Va3elina/moex-aggregator\nThread: Va3elina/moex-aggregator#78\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: Va3elina/moex-aggregator\nThread: Va3elina/moex-aggregator#78\nGraph gold label: supported_by_high_confidence_link\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: Va3elina/moex-aggregator#78\nRepo: Va3elina/moex-aggregator\nIssue/PR number: 78\nGraph consistency label: supported_by_high_confidence_link\nNodes: 17\nEdges: 27\nNode types: {'pr_file': 4, 'commit': 3, 'link_quality': 3, 'thread': 1, 'repo': 1, 'comment': 1, 'comment_chain': 1, 'ci_summary': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'thread_touches_file': 4, 'comment_chain_touches_file': 4, 'issue_chain_touches_file': 4, 'comment_chain_links_commit': 3, 'chain_has_link_quality': 3, 'repo_has_thread': 1, 'thread_has_comment': 1, 'thread_has_comment_chain': 1, 'comment_has_chain': 1, 'comment_chain_has_ci': 1, 'thread_has_issue_chain': 1, 'issue_chain_has_comment_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'ui_or_frontend': 4, 'generated_provenance': 3, 'self_attested_unverified': 3, 'thread_has_human_issue_and_fix_context': 2, 'issue_or_pull_request_thread': 1, 'agent_instruction_gap': 1, 'self_attested_or_generated_fix_unverified': 1, 'ci_pending_or_incomplete': 1}\nOutcomes: {'self_attested_unverified': 6}\nQuality tiers: {'high_confidence': 3}\nCI labels: {'ci_pending_or_incomplete': 2}\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/Va3elina/moex-aggregator", "source_id": "graph-query-motif_query-7a4c2e197a597742", "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": "Va3elina/moex-aggregator", "source_dataset": "graph_queries/mock_as_real_or_placeholder", "training_usage": "hard_negative"}}}, {"ruleId": "foundry_fake_real_gap", "level": "error", "message": {"text": "Foundry mined mock as real or placeholder: Va3elina/moex-aggregator"}, "properties": {"repobilityId": 451093, "scanner": "foundry_dataset", "fingerprint": "49d9015821967b9ffcc585003e0a1dfa1e720c2683234ce1800f694700e10f0c", "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": {"ui_or_frontend": 3, "ui_workflow_gap": 1, "generated_provenance": 1, "self_attested_unverified": 3, "issue_or_pull_request_thread": 1, "thread_has_human_issue_and_fix_context": 2, "self_attested_or_generated_fix_unverified": 1}, "source": "graph_query_export", "motif_id": "mock_as_real_or_placeholder", "outcomes": {"self_attested_unverified": 6}, "polarity": "bad", "query_id": "mock_as_real_or_placeholder", "severity": "critical", "ci_labels": {}, "synthetic": false, "edge_count": 21, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 1, "thread_has_comment": 1, "thread_touches_file": 3, "chain_has_link_quality": 3, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "issue_chain_touches_file": 3, "thread_has_comment_chain": 1, "comment_chain_links_commit": 1, "comment_chain_touches_file": 3, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 1}, "node_count": 13, "node_types": {"repo": 1, "commit": 1, "thread": 1, "comment": 1, "pr_file": 3, "fix_outcome": 1, "issue_chain": 1, "link_quality": 3, "comment_chain": 1}, "query_type": "motif_query", "thread_key": "Va3elina/moex-aggregator#77", "issue_number": "77", "quality_tiers": {"weak_supervision": 3}, "repo_full_name": "Va3elina/moex-aggregator", "training_usage": "hard_negative", "source_motif_id": "graph-pattern-motif-thread-c5637d336e28da0f", "graph_gold_label": "weak_supervision_needs_review", "changed_file_labels": {"ui_or_frontend": 12}}, "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: Va3elina/moex-aggregator\nThread: Va3elina/moex-aggregator#77\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: Va3elina/moex-aggregator\nThread: Va3elina/moex-aggregator#77\nGraph gold label: weak_supervision_needs_review\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: Va3elina/moex-aggregator#77\nRepo: Va3elina/moex-aggregator\nIssue/PR number: 77\nGraph consistency label: weak_supervision_needs_review\nNodes: 13\nEdges: 21\nNode types: {'pr_file': 3, 'link_quality': 3, 'thread': 1, 'repo': 1, 'comment': 1, 'comment_chain': 1, 'commit': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'thread_touches_file': 3, 'comment_chain_touches_file': 3, 'chain_has_link_quality': 3, 'issue_chain_touches_file': 3, 'repo_has_thread': 1, 'thread_has_comment': 1, 'thread_has_comment_chain': 1, 'comment_has_chain': 1, 'comment_chain_links_commit': 1, 'thread_has_issue_chain': 1, 'issue_chain_has_comment_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'ui_or_frontend': 3, 'self_attested_unverified': 3, 'thread_has_human_issue_and_fix_context': 2, 'issue_or_pull_request_thread': 1, 'ui_workflow_gap': 1, 'self_attested_or_generated_fix_unverified': 1, 'generated_provenance': 1}\nOutcomes: {'self_attested_unverified': 6}\nQuality tiers: {'weak_supervision': 3}\nCI labels: {}\nCurriculum targets:\n- Train real-data plumbing and mock-removal tasks from source to UI.\n- Use as hard negatives for dashboards or apps claiming real runs without provenance.\nAssumption checks:\n- Is user-visible behavior backed by real storage/API/CI artifacts?\n- Are placeholders, sample data, or generated claims still in a production path?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/Va3elina/moex-aggregator", "source_id": "graph-query-motif_query-585433b1346a2c59", "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": "Va3elina/moex-aggregator", "source_dataset": "graph_queries/mock_as_real_or_placeholder", "training_usage": "hard_negative"}}}, {"ruleId": "foundry_fake_real_gap", "level": "error", "message": {"text": "Foundry mined mock as real or placeholder: Va3elina/moex-aggregator"}, "properties": {"repobilityId": 451092, "scanner": "foundry_dataset", "fingerprint": "2191c1425625e6e548a8d17a61eb317a28c187bf1cc4c4b528e88fe79075992a", "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": {"api_or_backend": 4, "source_or_other": 2, "api_integration_gap": 1, "generated_provenance": 1, "self_attested_unverified": 3, "issue_or_pull_request_thread": 1, "thread_has_human_issue_and_fix_context": 2, "self_attested_or_generated_fix_unverified": 1}, "source": "graph_query_export", "motif_id": "mock_as_real_or_placeholder", "outcomes": {"self_attested_unverified": 6}, "polarity": "bad", "query_id": "mock_as_real_or_placeholder", "severity": "critical", "ci_labels": {}, "synthetic": false, "edge_count": 30, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 1, "thread_has_comment": 1, "thread_touches_file": 6, "chain_has_link_quality": 3, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "issue_chain_touches_file": 6, "thread_has_comment_chain": 1, "comment_chain_links_commit": 1, "comment_chain_touches_file": 6, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 1}, "node_count": 16, "node_types": {"repo": 1, "commit": 1, "thread": 1, "comment": 1, "pr_file": 6, "fix_outcome": 1, "issue_chain": 1, "link_quality": 3, "comment_chain": 1}, "query_type": "motif_query", "thread_key": "Va3elina/moex-aggregator#73", "issue_number": "73", "quality_tiers": {"high_confidence": 3}, "repo_full_name": "Va3elina/moex-aggregator", "training_usage": "hard_negative", "source_motif_id": "graph-pattern-motif-thread-cd79500b2e9e7ed8", "graph_gold_label": "supported_by_high_confidence_link", "changed_file_labels": {"api_or_backend": 16, "source_or_other": 8}}, "text": "Graph query export: Mock, sample, placeholder, or self-attested behavior treated as real\nQuery id: mock_as_real_or_placeholder\nQuery type: motif_query\nIntent: Hard negatives for fake completeness and missing real data paths.\nMotif: mock_as_real_or_placeholder\nTraining usage: hard_negative\nGraph gold label: supported_by_high_confidence_link\nRepo: Va3elina/moex-aggregator\nThread: Va3elina/moex-aggregator#73\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: Va3elina/moex-aggregator\nThread: Va3elina/moex-aggregator#73\nGraph gold label: supported_by_high_confidence_link\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: Va3elina/moex-aggregator#73\nRepo: Va3elina/moex-aggregator\nIssue/PR number: 73\nGraph consistency label: supported_by_high_confidence_link\nNodes: 16\nEdges: 30\nNode types: {'pr_file': 6, 'link_quality': 3, 'thread': 1, 'repo': 1, 'comment': 1, 'comment_chain': 1, 'commit': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'thread_touches_file': 6, 'comment_chain_touches_file': 6, 'issue_chain_touches_file': 6, 'chain_has_link_quality': 3, 'repo_has_thread': 1, 'thread_has_comment': 1, 'thread_has_comment_chain': 1, 'comment_has_chain': 1, 'comment_chain_links_commit': 1, 'thread_has_issue_chain': 1, 'issue_chain_has_comment_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'api_or_backend': 4, 'self_attested_unverified': 3, 'source_or_other': 2, 'thread_has_human_issue_and_fix_context': 2, 'issue_or_pull_request_thread': 1, 'api_integration_gap': 1, 'self_attested_or_generated_fix_unverified': 1, 'generated_provenance': 1}\nOutcomes: {'self_attested_unverified': 6}\nQuality tiers: {'high_confidence': 3}\nCI labels: {}\nCurriculum targets:\n- Train real-data plumbing and mock-removal tasks from source to UI.\n- Use as hard negatives for dashboards or apps claiming real runs without provenance.\nAssumption checks:\n- Is user-visible behavior backed by real storage/API/CI artifacts?\n- Are placeholders, sample data, or generated claims still in a production path?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/Va3elina/moex-aggregator", "source_id": "graph-query-motif_query-91efa5d0d2e0e285", "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": "Va3elina/moex-aggregator", "source_dataset": "graph_queries/mock_as_real_or_placeholder", "training_usage": "hard_negative"}}}, {"ruleId": "foundry_fake_real_gap", "level": "error", "message": {"text": "Foundry mined mock as real or placeholder: Va3elina/moex-aggregator"}, "properties": {"repobilityId": 451091, "scanner": "foundry_dataset", "fingerprint": "d0636bba679d8bca8ef4d2513667b410b4c03e59a8dbf603e915cbdc7d3eca97", "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": {"api_integration_gap": 1, "generated_provenance": 1, "self_attested_unverified": 3, "issue_or_pull_request_thread": 1, "thread_has_human_issue_and_fix_context": 2, "self_attested_or_generated_fix_unverified": 1}, "source": "graph_query_export", "motif_id": "mock_as_real_or_placeholder", "outcomes": {"self_attested_unverified": 6}, "polarity": "bad", "query_id": "mock_as_real_or_placeholder", "severity": "critical", "ci_labels": {}, "synthetic": false, "edge_count": 12, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 1, "thread_has_comment": 1, "chain_has_link_quality": 3, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 1, "comment_chain_links_commit": 1, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 1}, "node_count": 10, "node_types": {"repo": 1, "commit": 1, "thread": 1, "comment": 1, "fix_outcome": 1, "issue_chain": 1, "link_quality": 3, "comment_chain": 1}, "query_type": "motif_query", "thread_key": "Va3elina/moex-aggregator#64", "issue_number": "64", "quality_tiers": {"high_confidence": 3}, "repo_full_name": "Va3elina/moex-aggregator", "training_usage": "hard_negative", "source_motif_id": "graph-pattern-motif-thread-2a6087542bca936d", "graph_gold_label": "supported_by_high_confidence_link", "changed_file_labels": {}}, "text": "Graph query export: Mock, sample, placeholder, or self-attested behavior treated as real\nQuery id: mock_as_real_or_placeholder\nQuery type: motif_query\nIntent: Hard negatives for fake completeness and missing real data paths.\nMotif: mock_as_real_or_placeholder\nTraining usage: hard_negative\nGraph gold label: supported_by_high_confidence_link\nRepo: Va3elina/moex-aggregator\nThread: Va3elina/moex-aggregator#64\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: Va3elina/moex-aggregator\nThread: Va3elina/moex-aggregator#64\nGraph gold label: supported_by_high_confidence_link\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: Va3elina/moex-aggregator#64\nRepo: Va3elina/moex-aggregator\nIssue/PR number: 64\nGraph consistency label: supported_by_high_confidence_link\nNodes: 10\nEdges: 12\nNode types: {'link_quality': 3, 'thread': 1, 'repo': 1, 'comment': 1, 'comment_chain': 1, 'commit': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'chain_has_link_quality': 3, 'repo_has_thread': 1, 'thread_has_comment': 1, 'thread_has_comment_chain': 1, 'comment_has_chain': 1, 'comment_chain_links_commit': 1, 'thread_has_issue_chain': 1, 'issue_chain_has_comment_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'self_attested_unverified': 3, 'thread_has_human_issue_and_fix_context': 2, 'issue_or_pull_request_thread': 1, 'api_integration_gap': 1, 'self_attested_or_generated_fix_unverified': 1, 'generated_provenance': 1}\nOutcomes: {'self_attested_unverified': 6}\nQuality tiers: {'high_confidence': 3}\nCI labels: {}\nCurriculum targets:\n- Train real-data plumbing and mock-removal tasks from source to UI.\n- Use as hard negatives for dashboards or apps claiming real runs without provenance.\nAssumption checks:\n- Is user-visible behavior backed by real storage/API/CI artifacts?\n- Are placeholders, sample data, or generated claims still in a production path?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/Va3elina/moex-aggregator", "source_id": "graph-query-motif_query-8e4cbd227df6978c", "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": "Va3elina/moex-aggregator", "source_dataset": "graph_queries/mock_as_real_or_placeholder", "training_usage": "hard_negative"}}}, {"ruleId": "foundry_fake_real_gap", "level": "error", "message": {"text": "Foundry mined mock as real or placeholder: Va3elina/moex-aggregator"}, "properties": {"repobilityId": 451090, "scanner": "foundry_dataset", "fingerprint": "fafe8cff9b8d248274a41694b6158a1538178b4031c70897e306dba56ac43c56", "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": {"deployment_env_gap": 1, "generated_provenance": 1, "self_attested_unverified": 3, "issue_or_pull_request_thread": 1, "thread_has_human_issue_and_fix_context": 2, "self_attested_or_generated_fix_unverified": 1}, "source": "graph_query_export", "motif_id": "mock_as_real_or_placeholder", "outcomes": {"self_attested_unverified": 6}, "polarity": "bad", "query_id": "mock_as_real_or_placeholder", "severity": "critical", "ci_labels": {}, "synthetic": false, "edge_count": 12, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 1, "thread_has_comment": 1, "chain_has_link_quality": 3, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 1, "comment_chain_links_commit": 1, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 1}, "node_count": 10, "node_types": {"repo": 1, "commit": 1, "thread": 1, "comment": 1, "fix_outcome": 1, "issue_chain": 1, "link_quality": 3, "comment_chain": 1}, "query_type": "motif_query", "thread_key": "Va3elina/moex-aggregator#63", "issue_number": "63", "quality_tiers": {"high_confidence": 3}, "repo_full_name": "Va3elina/moex-aggregator", "training_usage": "hard_negative", "source_motif_id": "graph-pattern-motif-thread-1a0676b391d472ed", "graph_gold_label": "supported_by_high_confidence_link", "changed_file_labels": {}}, "text": "Graph query export: Mock, sample, placeholder, or self-attested behavior treated as real\nQuery id: mock_as_real_or_placeholder\nQuery type: motif_query\nIntent: Hard negatives for fake completeness and missing real data paths.\nMotif: mock_as_real_or_placeholder\nTraining usage: hard_negative\nGraph gold label: supported_by_high_confidence_link\nRepo: Va3elina/moex-aggregator\nThread: Va3elina/moex-aggregator#63\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: Va3elina/moex-aggregator\nThread: Va3elina/moex-aggregator#63\nGraph gold label: supported_by_high_confidence_link\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: Va3elina/moex-aggregator#63\nRepo: Va3elina/moex-aggregator\nIssue/PR number: 63\nGraph consistency label: supported_by_high_confidence_link\nNodes: 10\nEdges: 12\nNode types: {'link_quality': 3, 'thread': 1, 'repo': 1, 'comment': 1, 'comment_chain': 1, 'commit': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'chain_has_link_quality': 3, 'repo_has_thread': 1, 'thread_has_comment': 1, 'thread_has_comment_chain': 1, 'comment_has_chain': 1, 'comment_chain_links_commit': 1, 'thread_has_issue_chain': 1, 'issue_chain_has_comment_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'self_attested_unverified': 3, 'thread_has_human_issue_and_fix_context': 2, 'issue_or_pull_request_thread': 1, 'deployment_env_gap': 1, 'self_attested_or_generated_fix_unverified': 1, 'generated_provenance': 1}\nOutcomes: {'self_attested_unverified': 6}\nQuality tiers: {'high_confidence': 3}\nCI labels: {}\nCurriculum targets:\n- Train real-data plumbing and mock-removal tasks from source to UI.\n- Use as hard negatives for dashboards or apps claiming real runs without provenance.\nAssumption checks:\n- Is user-visible behavior backed by real storage/API/CI artifacts?\n- Are placeholders, sample data, or generated claims still in a production path?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/Va3elina/moex-aggregator", "source_id": "graph-query-motif_query-bee38b2fd79b558b", "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": "Va3elina/moex-aggregator", "source_dataset": "graph_queries/mock_as_real_or_placeholder", "training_usage": "hard_negative"}}}, {"ruleId": "foundry_fake_real_gap", "level": "error", "message": {"text": "Foundry mined mock as real or placeholder: Va3elina/moex-aggregator"}, "properties": {"repobilityId": 451089, "scanner": "foundry_dataset", "fingerprint": "5cd8147b309036e464daf32e7926ee912bfaadbaf5ee702fe1f0e6655b86b23d", "category": "practices", "severity": "critical", "confidence": 0.82, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Imported from mined Foundry/Fable5 evidence with real GitHub/source provenance. Review source_id before acting.", "evidence": {"meta": {"kind": "graph_query_record", "title": "Mock, sample, placeholder, or self-attested behavior treated as real", "intent": "Hard negatives for fake completeness and missing real data paths.", "labels": {"mock_placeholder": 1, "generated_provenance": 1, "self_attested_unverified": 3, "issue_or_pull_request_thread": 1, "thread_has_human_issue_and_fix_context": 2, "self_attested_or_generated_fix_unverified": 1}, "source": "graph_query_export", "motif_id": "mock_as_real_or_placeholder", "outcomes": {"self_attested_unverified": 6}, "polarity": "bad", "query_id": "mock_as_real_or_placeholder", "severity": "critical", "ci_labels": {}, "synthetic": false, "edge_count": 12, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 1, "thread_has_comment": 1, "chain_has_link_quality": 3, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 1, "comment_chain_links_commit": 1, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 1}, "node_count": 10, "node_types": {"repo": 1, "commit": 1, "thread": 1, "comment": 1, "fix_outcome": 1, "issue_chain": 1, "link_quality": 3, "comment_chain": 1}, "query_type": "motif_query", "thread_key": "Va3elina/moex-aggregator#54", "issue_number": "54", "quality_tiers": {"high_confidence": 3}, "repo_full_name": "Va3elina/moex-aggregator", "training_usage": "hard_negative", "source_motif_id": "graph-pattern-motif-thread-8a5a9909f22c33e9", "graph_gold_label": "supported_by_high_confidence_link", "changed_file_labels": {}}, "text": "Graph query export: Mock, sample, placeholder, or self-attested behavior treated as real\nQuery id: mock_as_real_or_placeholder\nQuery type: motif_query\nIntent: Hard negatives for fake completeness and missing real data paths.\nMotif: mock_as_real_or_placeholder\nTraining usage: hard_negative\nGraph gold label: supported_by_high_confidence_link\nRepo: Va3elina/moex-aggregator\nThread: Va3elina/moex-aggregator#54\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: Va3elina/moex-aggregator\nThread: Va3elina/moex-aggregator#54\nGraph gold label: supported_by_high_confidence_link\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: Va3elina/moex-aggregator#54\nRepo: Va3elina/moex-aggregator\nIssue/PR number: 54\nGraph consistency label: supported_by_high_confidence_link\nNodes: 10\nEdges: 12\nNode types: {'link_quality': 3, 'thread': 1, 'repo': 1, 'comment': 1, 'comment_chain': 1, 'commit': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'chain_has_link_quality': 3, 'repo_has_thread': 1, 'thread_has_comment': 1, 'thread_has_comment_chain': 1, 'comment_has_chain': 1, 'comment_chain_links_commit': 1, 'thread_has_issue_chain': 1, 'issue_chain_has_comment_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'self_attested_unverified': 3, 'thread_has_human_issue_and_fix_context': 2, 'issue_or_pull_request_thread': 1, 'mock_placeholder': 1, 'self_attested_or_generated_fix_unverified': 1, 'generated_provenance': 1}\nOutcomes: {'self_attested_unverified': 6}\nQuality tiers: {'high_confidence': 3}\nCI labels: {}\nCurriculum targets:\n- Train real-data plumbing and mock-removal tasks from source to UI.\n- Use as hard negatives for dashboards or apps claiming real runs without provenance.\nAssumption checks:\n- Is user-visible behavior backed by real storage/API/CI artifacts?\n- Are placeholders, sample data, or generated claims still in a production path?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/Va3elina/moex-aggregator", "source_id": "graph-query-motif_query-f8db8d304a3e12f6", "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": "Va3elina/moex-aggregator", "source_dataset": "graph_queries/mock_as_real_or_placeholder", "training_usage": "hard_negative"}}}, {"ruleId": "scanner-ef14c86d7d22d11d", "level": "note", "message": {"text": "Possibly dead Python function: is_weekend"}, "properties": {"repobilityId": "55bbd4f1075c6d03", "scanner": "scanner-primary", "fingerprint": "ef14c86d7d22d11d", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "moex_calendar.py:115"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-9deb11c3828f9625", "level": "note", "message": {"text": "Possibly dead Python function: update_chart_caches"}, "properties": {"repobilityId": "22caaff382fff2c4", "scanner": "scanner-primary", "fingerprint": "9deb11c3828f9625", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/cache_updater.py:201"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-4a0534ef6c033883", "level": "note", "message": {"text": "Possibly dead Python function: cache_stats"}, "properties": {"repobilityId": "c3d6c90f2c75f94b", "scanner": "scanner-primary", "fingerprint": "4a0534ef6c033883", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/cache.py:120"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-dec3adab38895176", "level": "note", "message": {"text": "Possibly dead Python function: log_account_locked"}, "properties": {"repobilityId": "5b851983d091e99c", "scanner": "scanner-primary", "fingerprint": "dec3adab38895176", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/security/brute_force.py:186"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-48afa246d729f259", "level": "note", "message": {"text": "Possibly dead Python function: cleanup_ip_attempts"}, "properties": {"repobilityId": "b846ed7dbe781fbf", "scanner": "scanner-primary", "fingerprint": "48afa246d729f259", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/security/brute_force.py:299"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-3416a38b87119949", "level": "note", "message": {"text": "Possibly dead Python function: generate_temp_password"}, "properties": {"repobilityId": "797c2858f07ed06c", "scanner": "scanner-primary", "fingerprint": "3416a38b87119949", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/security/password.py:139"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-8ca22e301273b31b", "level": "note", "message": {"text": "Possibly dead Python function: list_public_plans"}, "properties": {"repobilityId": "3224b6fff73e6a3e", "scanner": "scanner-primary", "fingerprint": "8ca22e301273b31b", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/billing/plans.py:106"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-ea4469d41ab33952", "level": "note", "message": {"text": "Possibly dead Python function: require_tier"}, "properties": {"repobilityId": "66d942f29ee832d8", "scanner": "scanner-primary", "fingerprint": "ea4469d41ab33952", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/billing/tiers.py:54"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-1d440735ed035e6c", "level": "note", "message": {"text": "Possibly dead Python function: optional_tier"}, "properties": {"repobilityId": "1d3ad91daa6585c7", "scanner": "scanner-primary", "fingerprint": "1d440735ed035e6c", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/billing/tiers.py:79"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-35b746aa55665370", "level": "note", "message": {"text": "Possibly dead Python function: send_verification_email"}, "properties": {"repobilityId": "2a7832894aab5213", "scanner": "scanner-primary", "fingerprint": "35b746aa55665370", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/services/email.py:74"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-b8b32f3b77fa9091", "level": "note", "message": {"text": "Possibly dead Python function: require_admin"}, "properties": {"repobilityId": "3c06db2e25566bf7", "scanner": "scanner-primary", "fingerprint": "b8b32f3b77fa9091", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/routers/auth.py:161"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-d1f9a3834d9b9e49", "level": "note", "message": {"text": "Possibly dead Python function: require_pro"}, "properties": {"repobilityId": "b59aa1b27b7897e8", "scanner": "scanner-primary", "fingerprint": "d1f9a3834d9b9e49", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/routers/auth.py:172"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-bcfb23d7a4abd8a0", "level": "note", "message": {"text": "Possibly dead Python function: layer_daily"}, "properties": {"repobilityId": "c122f8086f065d67", "scanner": "scanner-primary", "fingerprint": "bcfb23d7a4abd8a0", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/routers/exports.py:285"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-6ca45f2d9c5e087d", "level": "note", "message": {"text": "Possibly dead Python function: layer_weekday_avg"}, "properties": {"repobilityId": "3f4a8d1700e8ef6a", "scanner": "scanner-primary", "fingerprint": "6ca45f2d9c5e087d", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/routers/exports.py:291"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-29c5d651d8ec1f6f", "level": "note", "message": {"text": "Possibly dead Python function: layer_monthly_avg"}, "properties": {"repobilityId": "e53fb4daf4aa6a35", "scanner": "scanner-primary", "fingerprint": "29c5d651d8ec1f6f", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/routers/exports.py:313"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-918fb234426f77ed", "level": "note", "message": {"text": "Possibly dead Python function: layer_monthday_avg"}, "properties": {"repobilityId": "638c200a193a89e0", "scanner": "scanner-primary", "fingerprint": "918fb234426f77ed", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/routers/exports.py:336"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-9123f258bce0ba29", "level": "note", "message": {"text": "Possibly dead Python function: cap_gdp_data"}, "properties": {"repobilityId": "66ab7546a33ee785", "scanner": "scanner-primary", "fingerprint": "9123f258bce0ba29", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/routers/exports.py:443"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-f48374b2753285fc", "level": "note", "message": {"text": "Possibly dead Python function: cap_m2_data"}, "properties": {"repobilityId": "a13a7c09bda9194a", "scanner": "scanner-primary", "fingerprint": "f48374b2753285fc", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/routers/exports.py:475"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-f7b71c70287cc47b", "level": "note", "message": {"text": "Possibly dead Python function: check_rate_limit"}, "properties": {"repobilityId": "6069ae1c618678f4", "scanner": "scanner-primary", "fingerprint": "f7b71c70287cc47b", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/routers/public_api.py:179"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-c91428289224ac38", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 frontend/scripts/prerender-meta.ts:181"}, "properties": {"repobilityId": "93c6c7c0eb01260b", "scanner": "scanner-primary", "fingerprint": "c91428289224ac38", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-dbf464533ffd5f7a", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/InstrumentSearchModal.tsx:373"}, "properties": {"repobilityId": "54556ff7f300abdb", "scanner": "scanner-primary", "fingerprint": "dbf464533ffd5f7a", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-49512b855672a309", "level": "note", "message": {"text": "Icon-only button without accessible name \u2014 frontend/src/components/funds/FundDetailModal.tsx:298"}, "properties": {"repobilityId": "0a325415b0c1b20e", "scanner": "scanner-primary", "fingerprint": "49512b855672a309", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.button.no-label"]}}, {"ruleId": "scanner-3ee9b7024d53b05c", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/funds/FundCardModal.tsx:118"}, "properties": {"repobilityId": "8c97890f6a07a4fe", "scanner": "scanner-primary", "fingerprint": "3ee9b7024d53b05c", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-848750042280ecfe", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/fundtrades/CompanyFlowsTab.tsx:364"}, "properties": {"repobilityId": "86fc8e57f92bb1df", "scanner": "scanner-primary", "fingerprint": "848750042280ecfe", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-8684cb370e6c3199", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/pages/HeatmapPage.tsx:791"}, "properties": {"repobilityId": "caccf2a9a288c723", "scanner": "scanner-primary", "fingerprint": "8684cb370e6c3199", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-98799e1ef9523a30", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/pages/OverviewPage.tsx:332"}, "properties": {"repobilityId": "b47fedec3682d0cd", "scanner": "scanner-primary", "fingerprint": "98799e1ef9523a30", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-7272abdaf6314262", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/pages/AdminUserDetailPage.tsx:272"}, "properties": {"repobilityId": "28448fbbda158f80", "scanner": "scanner-primary", "fingerprint": "7272abdaf6314262", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-1e083c02e8155843", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 frontend/src/pages/ApiDocsPage.tsx:710"}, "properties": {"repobilityId": "2f59345dfc48f132", "scanner": "scanner-primary", "fingerprint": "1e083c02e8155843", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-699944a9ce84d9c2", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 docs/design-system/project/reference/frontend/src/components/InstrumentSearchModal.tsx:259"}, "properties": {"repobilityId": "c5f37ebbc5aee281", "scanner": "scanner-primary", "fingerprint": "699944a9ce84d9c2", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-7164054ed66595db", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 docs/design-system/project/reference/frontend/src/components/funds/FundCardModal.tsx:106"}, "properties": {"repobilityId": "fe31724d4a26096d", "scanner": "scanner-primary", "fingerprint": "7164054ed66595db", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-dd1780d71537621c", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 docs/design-system/project/reference/frontend/src/pages/FundsCatalogPage.tsx:56"}, "properties": {"repobilityId": "35cf95df7674e35a", "scanner": "scanner-primary", "fingerprint": "dd1780d71537621c", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-32707f16ed2c69b4", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 docs/design-system/project/reference/frontend/src/pages/FundsMoneyPage.tsx:379"}, "properties": {"repobilityId": "b12bfb362b45fa61", "scanner": "scanner-primary", "fingerprint": "32707f16ed2c69b4", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-deac2dfe92debcf5", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 docs/handoff/FundsMoneyPage.CURRENT.tsx:401"}, "properties": {"repobilityId": "23146b715e955c6d", "scanner": "scanner-primary", "fingerprint": "deac2dfe92debcf5", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-bd14d334008b72c4", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 docs/handoff/FundsMoneyPage.ORIGINAL.tsx:379"}, "properties": {"repobilityId": "16940ea8e719c04b", "scanner": "scanner-primary", "fingerprint": "bd14d334008b72c4", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-1094013ffe9c3f0c", "level": "warning", "message": {"text": "Privileged port 3 in use"}, "properties": {"repobilityId": "261b7b1c6a18d412", "scanner": "scanner-primary", "fingerprint": "1094013ffe9c3f0c", "layer": "network", "severity": "medium", "confidence": 1.0, "tags": ["security", "ports"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backup_db.sh"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-d63da3583b14afc0", "level": "warning", "message": {"text": "Dockerfile runs as root: Dockerfile"}, "properties": {"repobilityId": "a2ed1bd120e507db", "scanner": "scanner-primary", "fingerprint": "d63da3583b14afc0", "layer": "hardware", "severity": "medium", "confidence": 1.0, "tags": ["security", "container"]}}, {"ruleId": "scanner-8987d6d1c30c7202", "level": "note", "message": {"text": "Docker base image is tag-pinned but not digest-pinned: node:20-alpine"}, "properties": {"repobilityId": "c7b85c9464b85227", "scanner": "scanner-primary", "fingerprint": "8987d6d1c30c7202", "layer": "hardware", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "docker", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "Dockerfile"}, "region": {"startLine": 4}}}]}, {"ruleId": "scanner-e066691601852931", "level": "note", "message": {"text": "Docker base image is tag-pinned but not digest-pinned: python:3.11-slim"}, "properties": {"repobilityId": "9ea2bcd0e38e07e6", "scanner": "scanner-primary", "fingerprint": "e066691601852931", "layer": "hardware", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "docker", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "Dockerfile"}, "region": {"startLine": 25}}}]}, {"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-5f760022ff036b8a", "level": "warning", "message": {"text": "Insecure pattern 'local_storage_auth_token' in frontend/src/contexts/AuthContext.tsx:84"}, "properties": {"repobilityId": "9aa5fcb9fec9b1ac", "scanner": "scanner-primary", "fingerprint": "5f760022ff036b8a", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "local_storage_auth_token"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/src/contexts/AuthContext.tsx"}, "region": {"startLine": 84}}}]}, {"ruleId": "scanner-48cfd72e4eb39261", "level": "warning", "message": {"text": "Insecure pattern 'local_storage_auth_token' in frontend/src/pages/LoginPage.tsx:149"}, "properties": {"repobilityId": "b9e1c62b8cdf6f86", "scanner": "scanner-primary", "fingerprint": "48cfd72e4eb39261", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "local_storage_auth_token"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/src/pages/LoginPage.tsx"}, "region": {"startLine": 149}}}]}, {"ruleId": "scanner-7e637a994929868e", "level": "warning", "message": {"text": "Insecure pattern 'local_storage_auth_token' in frontend/src/pages/embed/EmbedPage.tsx:71"}, "properties": {"repobilityId": "bbde12f4bec50763", "scanner": "scanner-primary", "fingerprint": "7e637a994929868e", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "local_storage_auth_token"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/src/pages/embed/EmbedPage.tsx"}, "region": {"startLine": 71}}}]}, {"ruleId": "scanner-dfa9b1bfe1d7304a", "level": "warning", "message": {"text": "Insecure pattern 'local_storage_auth_token' in frontend/src/services/api.ts:53"}, "properties": {"repobilityId": "3ded031fe9bd2df7", "scanner": "scanner-primary", "fingerprint": "dfa9b1bfe1d7304a", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "local_storage_auth_token"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/src/services/api.ts"}, "region": {"startLine": 53}}}]}, {"ruleId": "scanner-a6e4bdc63b441f90", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in api/main.py:117"}, "properties": {"repobilityId": "b2da669f81af0a1e", "scanner": "scanner-primary", "fingerprint": "a6e4bdc63b441f90", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/main.py"}, "region": {"startLine": 117}}}]}, {"ruleId": "scanner-96bf40b961d4b1c2", "level": "error", "message": {"text": "Insecure pattern 'tls_verify_false' in signals/research/explore_v2.py:69"}, "properties": {"repobilityId": "838d5629ce12b842", "scanner": "scanner-primary", "fingerprint": "96bf40b961d4b1c2", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["owasp", "tls_verify_false"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "signals/research/explore_v2.py"}, "region": {"startLine": 69}}}]}, {"ruleId": "scanner-41e15a6fa8fd7155", "level": "error", "message": {"text": "Insecure pattern 'tls_verify_false' in signals/research/explore.py:85"}, "properties": {"repobilityId": "8f0be1fc7878fa73", "scanner": "scanner-primary", "fingerprint": "41e15a6fa8fd7155", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["owasp", "tls_verify_false"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "signals/research/explore.py"}, "region": {"startLine": 85}}}]}, {"ruleId": "scanner-4229bb9ea4be697b", "level": "error", "message": {"text": "Insecure pattern 'tls_verify_false' in signals/detectors/ensemble.py:71"}, "properties": {"repobilityId": "f3fcea7c14333ee5", "scanner": "scanner-primary", "fingerprint": "4229bb9ea4be697b", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["owasp", "tls_verify_false"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "signals/detectors/ensemble.py"}, "region": {"startLine": 71}}}]}, {"ruleId": "scanner-2dc6034b1db9f4d9", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in docs/claude-design-flows-redesign.html:548"}, "properties": {"repobilityId": "03bb591c49b560b8", "scanner": "scanner-primary", "fingerprint": "2dc6034b1db9f4d9", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "docs/claude-design-flows-redesign.html"}, "region": {"startLine": 548}}}]}, {"ruleId": "scanner-c263785bb7e7a106", "level": "warning", "message": {"text": "Insecure pattern 'local_storage_auth_token' in docs/design-system/project/reference/frontend/src/contexts/AuthContext.tsx:47"}, "properties": {"repobilityId": "cfacba8434ff6a0b", "scanner": "scanner-primary", "fingerprint": "c263785bb7e7a106", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "local_storage_auth_token"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "docs/design-system/project/reference/frontend/src/contexts/AuthContext.tsx"}, "region": {"startLine": 47}}}]}, {"ruleId": "scanner-e04e85779e63d929", "level": "warning", "message": {"text": "Insecure pattern 'local_storage_auth_token' in docs/design-system/project/reference/frontend/src/services/api.ts:49"}, "properties": {"repobilityId": "16d0148a7aea2dfa", "scanner": "scanner-primary", "fingerprint": "e04e85779e63d929", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "local_storage_auth_token"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "docs/design-system/project/reference/frontend/src/services/api.ts"}, "region": {"startLine": 49}}}]}, {"ruleId": "scanner-01fc69dd83fa73ba", "level": "note", "message": {"text": "Very large file: main_orchestrator.py (1202 lines)"}, "properties": {"repobilityId": "39fa5df9d9aa3787", "scanner": "scanner-primary", "fingerprint": "01fc69dd83fa73ba", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-3ef44ca5bf3d023b", "level": "note", "message": {"text": "Very large file: frontend/public/videos/oi/seg000.ts (1483 lines)"}, "properties": {"repobilityId": "ddd83536e3289866", "scanner": "scanner-primary", "fingerprint": "3ef44ca5bf3d023b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-30c378bce2c66ae4", "level": "note", "message": {"text": "Very large file: frontend/public/videos/strength/seg000.ts (1227 lines)"}, "properties": {"repobilityId": "3da7d2944ff41ad3", "scanner": "scanner-primary", "fingerprint": "30c378bce2c66ae4", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-cd1fa85cc1865dd1", "level": "note", "message": {"text": "Very large file: frontend/public/videos/funds-catalog/seg002.ts (992 lines)"}, "properties": {"repobilityId": "4af8d00da47ff25c", "scanner": "scanner-primary", "fingerprint": "cd1fa85cc1865dd1", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-dfb35196880338c8", "level": "note", "message": {"text": "Very large file: frontend/src/components/SimpleChart.tsx (1730 lines)"}, "properties": {"repobilityId": "f9c098600eed6ce5", "scanner": "scanner-primary", "fingerprint": "dfb35196880338c8", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-07abab5fd1417896", "level": "note", "message": {"text": "Very large file: frontend/src/components/funds/FundDetailModal.tsx (1030 lines)"}, "properties": {"repobilityId": "93f5c3e12fd93a7d", "scanner": "scanner-primary", "fingerprint": "07abab5fd1417896", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-6f22cec0083d1300", "level": "note", "message": {"text": "Very large file: frontend/src/components/mobile/MobileChart.tsx (1115 lines)"}, "properties": {"repobilityId": "4609f66b45114be6", "scanner": "scanner-primary", "fingerprint": "6f22cec0083d1300", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-e430b8e07699b072", "level": "note", "message": {"text": "Very large file: frontend/src/pages/OpenInterestPage.tsx (887 lines)"}, "properties": {"repobilityId": "1ddcabadbcf502a6", "scanner": "scanner-primary", "fingerprint": "e430b8e07699b072", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-a3cc0a4c4e81e6f3", "level": "note", "message": {"text": "Very large file: frontend/src/pages/ApiDocsPage.tsx (2241 lines)"}, "properties": {"repobilityId": "97595095562efa2d", "scanner": "scanner-primary", "fingerprint": "a3cc0a4c4e81e6f3", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-7a09e1cac3505370", "level": "note", "message": {"text": "Very large file: frontend/src/pages/FundTradesPage.tsx (1847 lines)"}, "properties": {"repobilityId": "7ad04ffed78b1cd9", "scanner": "scanner-primary", "fingerprint": "7a09e1cac3505370", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-4ff1e7ea1c116413", "level": "note", "message": {"text": "Very large file: frontend/src/pages/SeasonalityPage.tsx (1020 lines)"}, "properties": {"repobilityId": "2252e965934d6853", "scanner": "scanner-primary", "fingerprint": "4ff1e7ea1c116413", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-8bbf3e87d4316cbc", "level": "note", "message": {"text": "Very large file: frontend/src/pages/mobile/MobileSeasonalityPage.tsx (1206 lines)"}, "properties": {"repobilityId": "98afe4d92dd301eb", "scanner": "scanner-primary", "fingerprint": "8bbf3e87d4316cbc", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-52c5e4522811daef", "level": "note", "message": {"text": "Very large file: frontend/src/pages/mobile/MobileFundTradesPage.tsx (1777 lines)"}, "properties": {"repobilityId": "f7feac4dce183239", "scanner": "scanner-primary", "fingerprint": "52c5e4522811daef", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-54db247834de9690", "level": "note", "message": {"text": "Very large file: frontend/src/services/api.ts (1770 lines)"}, "properties": {"repobilityId": "c948070e681e8266", "scanner": "scanner-primary", "fingerprint": "54db247834de9690", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-ece20566e5aa158c", "level": "note", "message": {"text": "Very large file: api/billing/service.py (1027 lines)"}, "properties": {"repobilityId": "c7e8033b0f2954e4", "scanner": "scanner-primary", "fingerprint": "ece20566e5aa158c", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-9baf0918640b80a0", "level": "note", "message": {"text": "Very large file: api/routers/fund_trades.py (1625 lines)"}, "properties": {"repobilityId": "aa83aaf66eeb0dfd", "scanner": "scanner-primary", "fingerprint": "9baf0918640b80a0", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-2693ca887ff3910f", "level": "note", "message": {"text": "Very large file: docs/design-system/project/reference/frontend/src/components/SimpleChart.tsx (1284 lines)"}, "properties": {"repobilityId": "48bae2d46adb0951", "scanner": "scanner-primary", "fingerprint": "2693ca887ff3910f", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-ddac7f10e4e13937", "level": "note", "message": {"text": "Very large file: docs/handoff/SimpleChart.tsx (1286 lines)"}, "properties": {"repobilityId": "2b7041d1d01176a2", "scanner": "scanner-primary", "fingerprint": "ddac7f10e4e13937", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-b55a2c744bf6e936", "level": "note", "message": {"text": "Very large file: Candles/fetch_candles_futures_realtime.py (1352 lines)"}, "properties": {"repobilityId": "1e615e87419136fe", "scanner": "scanner-primary", "fingerprint": "b55a2c744bf6e936", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-7392ad41abf81cfa", "level": "note", "message": {"text": "Very large file: sandbox/app.py (970 lines)"}, "properties": {"repobilityId": "25b6f8cea4ee6716", "scanner": "scanner-primary", "fingerprint": "7392ad41abf81cfa", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-6893a6c8b0861585", "level": "warning", "message": {"text": "Very low test-to-source ratio"}, "properties": {"repobilityId": "54a7de3f06314bf0", "scanner": "scanner-primary", "fingerprint": "6893a6c8b0861585", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["tests", "coverage"]}}, {"ruleId": "scanner-141b30a41e03817b", "level": "note", "message": {"text": "No license file detected"}, "properties": {"repobilityId": "a4afc005b49960e9", "scanner": "scanner-primary", "fingerprint": "141b30a41e03817b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["license", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-6e8f1085db955768", "level": "note", "message": {"text": "Node manifest has dependencies but no lockfile: docs/design-system/project/reference/frontend/package.json"}, "properties": {"repobilityId": "cd408a0f92338e19", "scanner": "scanner-primary", "fingerprint": "6e8f1085db955768", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["dependency", "lockfile", "reproducibility", "generated-repo-pattern"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "docs/design-system/project/reference/frontend/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-3ab5d313dda8e5f9", "level": "note", "message": {"text": "Debug logging residue appears in source files"}, "properties": {"repobilityId": "7ef63c277a427c26", "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": "a3fa352c9a6dbed0", "scanner": "scanner-primary", "fingerprint": "72b2a6250083a784", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["placeholder", "mock-data", "incomplete", "generated-repo-pattern"]}}, {"ruleId": "scanner-2d0c7b7ab8f8aacf", "level": "warning", "message": {"text": "Critical user flow still appears backed by mock or placeholder data"}, "properties": {"repobilityId": "1b775db21049da25", "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": "7b9145475c147253", "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": "9fc1a8a9035dee08", "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": "79b5b8669183de69", "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": "dc9a09bad117c418", "scanner": "scanner-primary", "fingerprint": "8424db9c75e04ba4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["provenance", "git-history", "generated-repo-pattern"]}}, {"ruleId": "scanner-c8e1757ace764e25", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: .claude/skills/moex-responsive-audit/SKILL.md"}, "properties": {"repobilityId": "85501b87e6c3af75", "scanner": "scanner-primary", "fingerprint": "c8e1757ace764e25", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/skills/moex-responsive-audit/SKILL.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-76951679493cef61", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: .claude/skills/moex-fund-scha-backfill/references/uk-vim.md"}, "properties": {"repobilityId": "3ed4990c6fab4a78", "scanner": "scanner-primary", "fingerprint": "76951679493cef61", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/skills/moex-fund-scha-backfill/references/uk-vim.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-ec099d17a72db77a", "level": "none", "message": {"text": "Commented-code block (5 lines) in main_orchestrator.py:132"}, "properties": {"repobilityId": "0c9ba3487ea6cf2d", "scanner": "scanner-primary", "fingerprint": "ec099d17a72db77a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a5095a75f7f328f1", "level": "note", "message": {"text": "Legacy-named symbol `cmd_backup` in tg_bot.py:94"}, "properties": {"repobilityId": "e7fb16cda87dc1a9", "scanner": "scanner-primary", "fingerprint": "a5095a75f7f328f1", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-6b897435e44eb862", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/public/sw.js:1"}, "properties": {"repobilityId": "a8e837e2a4637225", "scanner": "scanner-primary", "fingerprint": "6b897435e44eb862", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2add83b7de92097a", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/public/sw.js:51"}, "properties": {"repobilityId": "48640425d7c78239", "scanner": "scanner-primary", "fingerprint": "2add83b7de92097a", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-b58349191a1d9986", "level": "none", "message": {"text": "Commented-code block (6 lines) in frontend/src/main.tsx:7"}, "properties": {"repobilityId": "ed7bdfd61494e01a", "scanner": "scanner-primary", "fingerprint": "b58349191a1d9986", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8c6b14efb2ec6fb9", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/src/config/chartTheme.ts:115"}, "properties": {"repobilityId": "ae02c2cfd3267c4c", "scanner": "scanner-primary", "fingerprint": "8c6b14efb2ec6fb9", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f2ae25a62549f658", "level": "none", "message": {"text": "Commented-code block (9 lines) in frontend/src/config/fundConfig.ts:109"}, "properties": {"repobilityId": "cef31e05fdb3c048", "scanner": "scanner-primary", "fingerprint": "f2ae25a62549f658", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ce488df964b20742", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/src/components/SimpleChart.tsx:188"}, "properties": {"repobilityId": "c68cfe3b89772873", "scanner": "scanner-primary", "fingerprint": "ce488df964b20742", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-aa6761d8277188fd", "level": "note", "message": {"text": "Legacy-named symbol `frame_consent_v1` in frontend/src/components/CookieConsentBanner.tsx:5"}, "properties": {"repobilityId": "9a9089e475bb2b44", "scanner": "scanner-primary", "fingerprint": "aa6761d8277188fd", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-12ac7715c07674a8", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/src/components/ChartNavigator.tsx:219"}, "properties": {"repobilityId": "cd32582465d9bbb5", "scanner": "scanner-primary", "fingerprint": "12ac7715c07674a8", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-08b3afd1150d2a27", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/src/components/ChartWatermark.tsx:54"}, "properties": {"repobilityId": "778d12ae77a0e020", "scanner": "scanner-primary", "fingerprint": "08b3afd1150d2a27", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-732ac732c79e4014", "level": "none", "message": {"text": "Commented-code block (6 lines) in frontend/src/components/InstrumentSearchModal.tsx:166"}, "properties": {"repobilityId": "bdf2431d1783ab1b", "scanner": "scanner-primary", "fingerprint": "732ac732c79e4014", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4d5156115e269d20", "level": "none", "message": {"text": "Commented-code block (6 lines) in frontend/src/components/Layout.tsx:58"}, "properties": {"repobilityId": "3700cf1a4f2ed3a8", "scanner": "scanner-primary", "fingerprint": "4d5156115e269d20", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-110e1ad8c78d473b", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/src/components/FrameLogo.tsx:37"}, "properties": {"repobilityId": "9b70d027ded86d72", "scanner": "scanner-primary", "fingerprint": "110e1ad8c78d473b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2d8b3d96ad3469e4", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/src/components/TickerLogo.tsx:53"}, "properties": {"repobilityId": "3bf3409b544d7515", "scanner": "scanner-primary", "fingerprint": "2d8b3d96ad3469e4", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-6359e4bd4756cf71", "level": "none", "message": {"text": "Commented-code block (8 lines) in frontend/src/components/seasonality/YearlySeasonalityChart.tsx:64"}, "properties": {"repobilityId": "787805760971a0a9", "scanner": "scanner-primary", "fingerprint": "6359e4bd4756cf71", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-490100573e9ca535", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/src/components/seasonality/SeasonalityHistogram.tsx:166"}, "properties": {"repobilityId": "d32b34e907f59681", "scanner": "scanner-primary", "fingerprint": "490100573e9ca535", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6f93e5ebf9d6afca", "level": "none", "message": {"text": "Commented-code block (10 lines) in frontend/src/components/funds/FundDetailModal.tsx:84"}, "properties": {"repobilityId": "0d815d5d6d99ecb8", "scanner": "scanner-primary", "fingerprint": "6f93e5ebf9d6afca", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-562f058a53b86ec1", "level": "none", "message": {"text": "Commented-code block (9 lines) in frontend/src/components/funds/FlowsHistogram.tsx:194"}, "properties": {"repobilityId": "71e766e9ac2f952c", "scanner": "scanner-primary", "fingerprint": "562f058a53b86ec1", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f4a6a2fa1a7a852c", "level": "none", "message": {"text": "Commented-code block (8 lines) in frontend/src/components/mobile/MobileBottomRail.tsx:44"}, "properties": {"repobilityId": "a7626fae7f07b98f", "scanner": "scanner-primary", "fingerprint": "f4a6a2fa1a7a852c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b33b8b6e2c1c9b2a", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/src/components/mobile/MobileAssetSearch.tsx:37"}, "properties": {"repobilityId": "2ff291f040afa90e", "scanner": "scanner-primary", "fingerprint": "b33b8b6e2c1c9b2a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a7c68ea74bf1faba", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/src/components/mobile/MobileAssetSearch.tsx:97"}, "properties": {"repobilityId": "299c66beaa7b504d", "scanner": "scanner-primary", "fingerprint": "a7c68ea74bf1faba", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-616fc2b184b9faf1", "level": "none", "message": {"text": "Commented-code block (6 lines) in frontend/src/components/mobile/MobileChart.tsx:268"}, "properties": {"repobilityId": "a28e7e969980fcb3", "scanner": "scanner-primary", "fingerprint": "616fc2b184b9faf1", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ac70303e630c39ae", "level": "note", "message": {"text": "Legacy-named symbol `frame_pwa_install_dismissed_v1` in frontend/src/components/mobile/MobilePWABanner.tsx:20"}, "properties": {"repobilityId": "22f09ff81904a8ad", "scanner": "scanner-primary", "fingerprint": "ac70303e630c39ae", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-81d6a43980ff2eeb", "level": "none", "message": {"text": "Commented-code block (6 lines) in frontend/src/components/cbr/StackedBidirectionalHistogram.tsx:58"}, "properties": {"repobilityId": "325208ed52798d68", "scanner": "scanner-primary", "fingerprint": "81d6a43980ff2eeb", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-12d5a81e897b9759", "level": "none", "message": {"text": "Commented-code block (7 lines) in frontend/src/components/chart/ChartYAxis.tsx:45"}, "properties": {"repobilityId": "9a3fcdb069497e8d", "scanner": "scanner-primary", "fingerprint": "12d5a81e897b9759", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-00c7c3c60d720aab", "level": "none", "message": {"text": "Commented-code block (7 lines) in frontend/src/components/landing/ThermalLinesHero.tsx:32"}, "properties": {"repobilityId": "29a232f6dc974085", "scanner": "scanner-primary", "fingerprint": "00c7c3c60d720aab", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0f1664949128986b", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/src/components/landing/MultiChartShowcase.tsx:48"}, "properties": {"repobilityId": "97a3c4c6e6fb3be3", "scanner": "scanner-primary", "fingerprint": "0f1664949128986b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d89ee426e82812fa", "level": "none", "message": {"text": "Commented-code block (6 lines) in frontend/src/components/strength/IndexChart.tsx:217"}, "properties": {"repobilityId": "20cb8da5b506a462", "scanner": "scanner-primary", "fingerprint": "d89ee426e82812fa", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-27bdf2c4f9ef4a4d", "level": "none", "message": {"text": "Commented-code block (6 lines) in frontend/src/components/strength/BreadthChart.tsx:262"}, "properties": {"repobilityId": "c063cd1d31f2ab11", "scanner": "scanner-primary", "fingerprint": "27bdf2c4f9ef4a4d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b51f7e18d9a8a262", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/src/components/onboarding/OnboardingTour.tsx:77"}, "properties": {"repobilityId": "94c9f8e86848392d", "scanner": "scanner-primary", "fingerprint": "b51f7e18d9a8a262", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f826b9c7099d0333", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/src/components/fundtrades/AssetPickerModal.tsx:8"}, "properties": {"repobilityId": "925f463570858c29", "scanner": "scanner-primary", "fingerprint": "f826b9c7099d0333", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-39816fc4e874a744", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/src/components/fundtrades/FundPicker.tsx:10"}, "properties": {"repobilityId": "f51a321703639a5f", "scanner": "scanner-primary", "fingerprint": "39816fc4e874a744", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2e8a2135f14d3f0c", "level": "none", "message": {"text": "Commented-code block (7 lines) in frontend/src/components/fundtrades/UkMultiSelect.tsx:1"}, "properties": {"repobilityId": "198455227db13cfb", "scanner": "scanner-primary", "fingerprint": "2e8a2135f14d3f0c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6ed709510e2f31b8", "level": "none", "message": {"text": "Commented-code block (6 lines) in frontend/src/components/export/captureChart.ts:54"}, "properties": {"repobilityId": "9c6e0b6e5dd186da", "scanner": "scanner-primary", "fingerprint": "6ed709510e2f31b8", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8c21617392cf65f3", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/src/components/export/CsvExportModal.tsx:74"}, "properties": {"repobilityId": "c67428eb3e2574a4", "scanner": "scanner-primary", "fingerprint": "8c21617392cf65f3", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1db0620aff374359", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/src/components/export/AnnotationCanvas.tsx:326"}, "properties": {"repobilityId": "e614751616e9a7c6", "scanner": "scanner-primary", "fingerprint": "1db0620aff374359", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b7be472e60be9223", "level": "note", "message": {"text": "Legacy-named symbol `PropsLegacy` in frontend/src/components/export/CsvExportButton.tsx:36"}, "properties": {"repobilityId": "0af9e2295e83127f", "scanner": "scanner-primary", "fingerprint": "b7be472e60be9223", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-3c2d5d15ac7c1ff2", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/src/contexts/AuthContext.tsx:33"}, "properties": {"repobilityId": "ab7477bad482ac11", "scanner": "scanner-primary", "fingerprint": "3c2d5d15ac7c1ff2", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2fe629157a75eef7", "level": "note", "message": {"text": "Legacy-named symbol `frame_consent_v1` in frontend/src/contexts/AnalyticsContext.tsx:37"}, "properties": {"repobilityId": "dcaab0c760f24636", "scanner": "scanner-primary", "fingerprint": "2fe629157a75eef7", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-2cc1725e12696b2d", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/src/contexts/ThemeContext.tsx:3"}, "properties": {"repobilityId": "3a551294d66d05a1", "scanner": "scanner-primary", "fingerprint": "2cc1725e12696b2d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6279ce148be1fbe3", "level": "note", "message": {"text": "Legacy-named symbol `frame_features_matrix_v1` in frontend/src/contexts/TierFeaturesContext.tsx:68"}, "properties": {"repobilityId": "20a59a33deed90a6", "scanner": "scanner-primary", "fingerprint": "6279ce148be1fbe3", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-9fbef5a7940a35ec", "level": "none", "message": {"text": "Commented-code block (8 lines) in frontend/src/contexts/TierFeaturesContext.tsx:175"}, "properties": {"repobilityId": "14cb0a5b048a719b", "scanner": "scanner-primary", "fingerprint": "9fbef5a7940a35ec", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ab86eb16dbc52aa0", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/src/pages/AuthCallback.tsx:74"}, "properties": {"repobilityId": "9552c7fcb674f3e1", "scanner": "scanner-primary", "fingerprint": "ab86eb16dbc52aa0", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-6ae600556492d062", "level": "none", "message": {"text": "Commented-code block (7 lines) in frontend/src/pages/HeatmapPage.tsx:174"}, "properties": {"repobilityId": "c41777118b7ff809", "scanner": "scanner-primary", "fingerprint": "6ae600556492d062", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-26a8afbb6a9bee53", "level": "note", "message": {"text": "Legacy-named symbol `allowedLegacy` in frontend/src/pages/OpenInterestPage.tsx:468"}, "properties": {"repobilityId": "6fe3361ab2d9e27c", "scanner": "scanner-primary", "fingerprint": "26a8afbb6a9bee53", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-1c1ce85b4e062755", "level": "none", "message": {"text": "Commented-code block (6 lines) in frontend/src/pages/OpenInterestPage.tsx:80"}, "properties": {"repobilityId": "756a710bacbe6701", "scanner": "scanner-primary", "fingerprint": "1c1ce85b4e062755", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a29f7386feeea0c7", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/src/pages/LoginPage.tsx:133"}, "properties": {"repobilityId": "e1da5b81c3b66c41", "scanner": "scanner-primary", "fingerprint": "a29f7386feeea0c7", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2ec2efb0c6f25578", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/src/pages/LoginPage.tsx:92"}, "properties": {"repobilityId": "816bff7d4b9f3ecf", "scanner": "scanner-primary", "fingerprint": "2ec2efb0c6f25578", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-65e6c2e595e840b2", "level": "note", "message": {"text": "Legacy-named symbol `frame_consent_v1` in frontend/src/pages/ProfilePage.tsx:809"}, "properties": {"repobilityId": "b0418e81d9863c18", "scanner": "scanner-primary", "fingerprint": "65e6c2e595e840b2", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-475c4aaf94512f63", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/src/pages/CbrFlowsPage.tsx:470"}, "properties": {"repobilityId": "d6f62729d36ba0b9", "scanner": "scanner-primary", "fingerprint": "475c4aaf94512f63", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5cc5b0bac3f783be", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/src/pages/FundsMoneyPage.tsx:136"}, "properties": {"repobilityId": "f8298ac0957245ea", "scanner": "scanner-primary", "fingerprint": "5cc5b0bac3f783be", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-dbecaa823534d4eb", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/src/pages/ApiDocsPage.tsx:705"}, "properties": {"repobilityId": "696104cb52f02846", "scanner": "scanner-primary", "fingerprint": "dbecaa823534d4eb", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-5f412f29ffe52ddc", "level": "none", "message": {"text": "Commented-code block (6 lines) in frontend/src/pages/PricingPage.tsx:103"}, "properties": {"repobilityId": "8a2092676ea63e4e", "scanner": "scanner-primary", "fingerprint": "5f412f29ffe52ddc", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-52f4ef48f666193f", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/src/pages/StrengthPage.tsx:48"}, "properties": {"repobilityId": "276033d86de3f37e", "scanner": "scanner-primary", "fingerprint": "52f4ef48f666193f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-122dbf10a3901687", "level": "none", "message": {"text": "Commented-code block (8 lines) in frontend/src/pages/SeasonalityPage.tsx:104"}, "properties": {"repobilityId": "558a86ebd512fb29", "scanner": "scanner-primary", "fingerprint": "122dbf10a3901687", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0d00e97c401ff288", "level": "none", "message": {"text": "Commented-code block (8 lines) in frontend/src/pages/mobile/MobileFundsMoneyPage.tsx:221"}, "properties": {"repobilityId": "9717262f7865adc0", "scanner": "scanner-primary", "fingerprint": "0d00e97c401ff288", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ede964a40395fc18", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/src/pages/mobile/MobileSeasonalityPage.tsx:1037"}, "properties": {"repobilityId": "3386c1414590933f", "scanner": "scanner-primary", "fingerprint": "ede964a40395fc18", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f37339fa45bf6190", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/src/pages/mobile/MobileOpenInterestPage.tsx:77"}, "properties": {"repobilityId": "339b95ac0ac83ce7", "scanner": "scanner-primary", "fingerprint": "f37339fa45bf6190", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e13c27e19e0aa170", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/src/pages/mobile/MobileHeatmapPage.tsx:269"}, "properties": {"repobilityId": "1be8a0104faa0652", "scanner": "scanner-primary", "fingerprint": "e13c27e19e0aa170", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-48bc4a3ad611d4ba", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/src/pages/mobile/MobileBuffettPage.tsx:429"}, "properties": {"repobilityId": "ead63b9091b2abcf", "scanner": "scanner-primary", "fingerprint": "48bc4a3ad611d4ba", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7d7e5df45fd4f6c5", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/src/pages/mobile/MobileStrengthPage.tsx:920"}, "properties": {"repobilityId": "77eb36f674a978b3", "scanner": "scanner-primary", "fingerprint": "7d7e5df45fd4f6c5", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a7368cd032fa1772", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/src/pages/mobile/MobileCbrFlowsPage.tsx:178"}, "properties": {"repobilityId": "89a849b5f8aa9a0c", "scanner": "scanner-primary", "fingerprint": "a7368cd032fa1772", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c1a85e649ed1c540", "level": "none", "message": {"text": "Commented-code block (8 lines) in frontend/src/pages/mobile/MobileFundTradesPage.tsx:495"}, "properties": {"repobilityId": "0af9e3aac6516f51", "scanner": "scanner-primary", "fingerprint": "c1a85e649ed1c540", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ec7fef5aba57f346", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/src/pages/embed/EmbedFundsMoney.tsx:153"}, "properties": {"repobilityId": "1b20ddac096134ad", "scanner": "scanner-primary", "fingerprint": "ec7fef5aba57f346", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-00616156f57135af", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/src/pages/embed/EmbedBuffett.tsx:150"}, "properties": {"repobilityId": "f4baaee198af32a9", "scanner": "scanner-primary", "fingerprint": "00616156f57135af", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f20ed90747bfceb2", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/src/pages/embed/EmbedOpenInterest.tsx:175"}, "properties": {"repobilityId": "67ee6e05da3e55ec", "scanner": "scanner-primary", "fingerprint": "f20ed90747bfceb2", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0c76e01ba2a89f40", "level": "note", "message": {"text": "Legacy-named symbol `homepage_v2` in frontend/src/hooks/useExperiment.ts:5"}, "properties": {"repobilityId": "a6c14e34d5a5f335", "scanner": "scanner-primary", "fingerprint": "0c76e01ba2a89f40", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-30a84b49c9dd7e5a", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/src/hooks/useFitToViewport.ts:117"}, "properties": {"repobilityId": "d778c0e4dbc2398d", "scanner": "scanner-primary", "fingerprint": "30a84b49c9dd7e5a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ac975de7b0c17f04", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/src/hooks/useRealtimeData.ts:23"}, "properties": {"repobilityId": "3a9b07cf83026ea9", "scanner": "scanner-primary", "fingerprint": "ac975de7b0c17f04", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-548146baee94b0f7", "level": "note", "message": {"text": "Legacy-named symbol `frame_tour_seen_v2` in frontend/src/hooks/useFirstVisit.ts:22"}, "properties": {"repobilityId": "ea2096a8731b3f42", "scanner": "scanner-primary", "fingerprint": "548146baee94b0f7", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-c7fa3f74c43557ff", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/src/services/api.ts:231"}, "properties": {"repobilityId": "9cc16c54e0cbb787", "scanner": "scanner-primary", "fingerprint": "c7fa3f74c43557ff", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-cae2ed6e5913dcb7", "level": "none", "message": {"text": "Commented-code block (5 lines) in api/database.py:17"}, "properties": {"repobilityId": "4b5bd6b06eeace13", "scanner": "scanner-primary", "fingerprint": "cae2ed6e5913dcb7", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b7c1bfad97538f8c", "level": "none", "message": {"text": "Commented-code block (5 lines) in api/middleware.py:23"}, "properties": {"repobilityId": "dc1030bfe1a286e3", "scanner": "scanner-primary", "fingerprint": "b7c1bfad97538f8c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1a61d9ad305e9e94", "level": "none", "message": {"text": "Commented-code block (9 lines) in api/security/jwt.py:72"}, "properties": {"repobilityId": "01fb0b9807012958", "scanner": "scanner-primary", "fingerprint": "1a61d9ad305e9e94", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4ab2707ce17f3a95", "level": "none", "message": {"text": "Commented-code block (5 lines) in api/security/access_control.py:168"}, "properties": {"repobilityId": "aef006f7066ea82f", "scanner": "scanner-primary", "fingerprint": "4ab2707ce17f3a95", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5f08a76fb85ca4f4", "level": "none", "message": {"text": "Commented-code block (5 lines) in api/security/password.py:98"}, "properties": {"repobilityId": "727d863bbba00d95", "scanner": "scanner-primary", "fingerprint": "5f08a76fb85ca4f4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7f8498d35cfdeba4", "level": "none", "message": {"text": "Commented-code block (5 lines) in api/models/fund_holdings_history.py:48"}, "properties": {"repobilityId": "33627476a17487a1", "scanner": "scanner-primary", "fingerprint": "7f8498d35cfdeba4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f177451460d5d0fc", "level": "none", "message": {"text": "Commented-code block (7 lines) in api/models/subscription.py:26"}, "properties": {"repobilityId": "fb342609c512cf5d", "scanner": "scanner-primary", "fingerprint": "f177451460d5d0fc", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-146ba2303de98e9d", "level": "none", "message": {"text": "Commented-code block (6 lines) in api/billing/tbank.py:63"}, "properties": {"repobilityId": "ff8782dcc14fc446", "scanner": "scanner-primary", "fingerprint": "146ba2303de98e9d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7eb33d9f06d509de", "level": "none", "message": {"text": "Commented-code block (5 lines) in api/billing/invites.py:104"}, "properties": {"repobilityId": "3b50b95ad4fe10a0", "scanner": "scanner-primary", "fingerprint": "7eb33d9f06d509de", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8fb3df71d4ebbc61", "level": "none", "message": {"text": "Commented-code block (8 lines) in api/billing/service.py:125"}, "properties": {"repobilityId": "c5442c75dfa69487", "scanner": "scanner-primary", "fingerprint": "8fb3df71d4ebbc61", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5f0c42c7a1c07189", "level": "none", "message": {"text": "Commented-code block (9 lines) in api/services/chart_live.py:86"}, "properties": {"repobilityId": "e7c3c6fe95f63b77", "scanner": "scanner-primary", "fingerprint": "5f0c42c7a1c07189", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-9302f51532eccd4f", "level": "none", "message": {"text": "Commented-code block (6 lines) in api/routers/chart.py:178"}, "properties": {"repobilityId": "faabbf5e57337618", "scanner": "scanner-primary", "fingerprint": "9302f51532eccd4f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-035f2cf0ea7e0140", "level": "none", "message": {"text": "Commented-code block (5 lines) in api/routers/auth.py:464"}, "properties": {"repobilityId": "a81e187e3fdcb0ce", "scanner": "scanner-primary", "fingerprint": "035f2cf0ea7e0140", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-aa2a2bc61adf0ed2", "level": "none", "message": {"text": "Commented-code block (7 lines) in api/routers/analytics.py:601"}, "properties": {"repobilityId": "b419c90d3679bbe0", "scanner": "scanner-primary", "fingerprint": "aa2a2bc61adf0ed2", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-051d2d9daa624bab", "level": "none", "message": {"text": "Commented-code block (7 lines) in api/routers/heatmap.py:162"}, "properties": {"repobilityId": "0cdf037391d23676", "scanner": "scanner-primary", "fingerprint": "051d2d9daa624bab", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-aaff002dc75488bb", "level": "none", "message": {"text": "Commented-code block (8 lines) in api/routers/fund_trades.py:95"}, "properties": {"repobilityId": "43f887964b9eae2a", "scanner": "scanner-primary", "fingerprint": "aaff002dc75488bb", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-eb31a4dd4e8b7fd9", "level": "none", "message": {"text": "Commented-code block (6 lines) in api/routers/breadth.py:29"}, "properties": {"repobilityId": "49a034d9bc2e4858", "scanner": "scanner-primary", "fingerprint": "eb31a4dd4e8b7fd9", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-60db575782634e24", "level": "none", "message": {"text": "Commented-code block (5 lines) in api/routers/seasonality.py:1149"}, "properties": {"repobilityId": "1446197c980df518", "scanner": "scanner-primary", "fingerprint": "60db575782634e24", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4f8a030650c07b9f", "level": "none", "message": {"text": "Commented-code block (6 lines) in api/routers/oauth.py:169"}, "properties": {"repobilityId": "63270d98ac8fc74b", "scanner": "scanner-primary", "fingerprint": "4f8a030650c07b9f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1f7ed3351e81970b", "level": "none", "message": {"text": "Commented-code block (5 lines) in api/routers/funds.py:32"}, "properties": {"repobilityId": "fe609ecaa6df59cb", "scanner": "scanner-primary", "fingerprint": "1f7ed3351e81970b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-fd273608718d0f11", "level": "note", "message": {"text": "Legacy-named symbol `research_v2` in signals/classification.py:17"}, "properties": {"repobilityId": "ac7260a629c461a2", "scanner": "scanner-primary", "fingerprint": "fd273608718d0f11", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-6e4b9dfc96e2df69", "level": "note", "message": {"text": "Legacy-named symbol `explore_v2` in signals/features.py:4"}, "properties": {"repobilityId": "5e5f779973259e39", "scanner": "scanner-primary", "fingerprint": "6e4b9dfc96e2df69", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-7d84b57ec42691e7", "level": "note", "message": {"text": "Legacy-named symbol `diagnostics_v2` in signals/scoring.py:26"}, "properties": {"repobilityId": "77e19e23131e54ad", "scanner": "scanner-primary", "fingerprint": "7d84b57ec42691e7", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-c1852c7e9bf97a70", "level": "none", "message": {"text": "Commented-code block (5 lines) in signals/alerts_run.py:73"}, "properties": {"repobilityId": "7cf63060b6ed6217", "scanner": "scanner-primary", "fingerprint": "c1852c7e9bf97a70", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1c2f1529c7a26821", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 signals/relay/cf-worker.js:29"}, "properties": {"repobilityId": "c5e5234309131172", "scanner": "scanner-primary", "fingerprint": "1c2f1529c7a26821", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-9c1187d22894bdb6", "level": "note", "message": {"text": "Legacy-named symbol `oi_anomaly_v2` in signals/research/oi_anomaly_v2.py:12"}, "properties": {"repobilityId": "4891be949f507a49", "scanner": "scanner-primary", "fingerprint": "9c1187d22894bdb6", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-c2abbecc63302272", "level": "note", "message": {"text": "Legacy-named symbol `explore_v2` in signals/research/explore_v2.py:13"}, "properties": {"repobilityId": "24ec74a6f6682c01", "scanner": "scanner-primary", "fingerprint": "c2abbecc63302272", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-419d57d03f411a45", "level": "none", "message": {"text": "Commented-code block (10 lines) in signals/research/showcase.py:372"}, "properties": {"repobilityId": "96032745e39eda0f", "scanner": "scanner-primary", "fingerprint": "419d57d03f411a45", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f6603659f7958071", "level": "note", "message": {"text": "Legacy-named symbol `diagnostics_v2` in signals/research/diagnostics_v2.py:13"}, "properties": {"repobilityId": "42379074d31cbc05", "scanner": "scanner-primary", "fingerprint": "f6603659f7958071", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-dd59ad70fa8b2257", "level": "note", "message": {"text": "Legacy-named symbol `explore_v2` in signals/research/build_calibration.py:4"}, "properties": {"repobilityId": "86b8f18f5d2758cf", "scanner": "scanner-primary", "fingerprint": "dd59ad70fa8b2257", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-6565ebd017b039cf", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 signals/research/explore.py:74"}, "properties": {"repobilityId": "8ff89584626599d1", "scanner": "scanner-primary", "fingerprint": "6565ebd017b039cf", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-4d3879c71e14db8d", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 signals/detectors/ensemble.py:60"}, "properties": {"repobilityId": "b81d4fb1d8a603be", "scanner": "scanner-primary", "fingerprint": "4d3879c71e14db8d", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-0d83de07c257fb30", "level": "none", "message": {"text": "Commented-code block (5 lines) in docs/design-system/project/reference/frontend/src/config/chartTheme.ts:103"}, "properties": {"repobilityId": "44ce77ea14d64a80", "scanner": "scanner-primary", "fingerprint": "0d83de07c257fb30", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f68b46438a738a61", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 docs/design-system/project/reference/frontend/src/contexts/AuthContext.tsx:64"}, "properties": {"repobilityId": "6c66a1d6e00a3f16", "scanner": "scanner-primary", "fingerprint": "f68b46438a738a61", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-572cc2b8a3275898", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 docs/design-system/project/reference/frontend/src/pages/AuthCallback.tsx:74"}, "properties": {"repobilityId": "cd092908b4b01973", "scanner": "scanner-primary", "fingerprint": "572cc2b8a3275898", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-db5b3cc998644232", "level": "none", "message": {"text": "Commented-code block (5 lines) in docs/design-system/project/reference/frontend/src/pages/FundsMoneyPage.tsx:298"}, "properties": {"repobilityId": "acfdb27d9884a619", "scanner": "scanner-primary", "fingerprint": "db5b3cc998644232", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c97c6f007f26681b", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 docs/design-system/project/reference/frontend/src/services/api.ts:69"}, "properties": {"repobilityId": "402cc1c9efa0c53a", "scanner": "scanner-primary", "fingerprint": "c97c6f007f26681b", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-d2991faf6b75c123", "level": "none", "message": {"text": "Commented-code block (5 lines) in docs/handoff/FundsMoneyPage.CURRENT.tsx:320"}, "properties": {"repobilityId": "7b4fefc013290abb", "scanner": "scanner-primary", "fingerprint": "d2991faf6b75c123", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f0c5bf4eff45e6dc", "level": "none", "message": {"text": "Commented-code block (5 lines) in docs/handoff/chartTheme.ts:103"}, "properties": {"repobilityId": "cfd3ec8805cbbd46", "scanner": "scanner-primary", "fingerprint": "f0c5bf4eff45e6dc", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-008aea88b788c4b4", "level": "none", "message": {"text": "Commented-code block (5 lines) in docs/handoff/FundsMoneyPage.ORIGINAL.tsx:298"}, "properties": {"repobilityId": "11d04f5eeda41cd4", "scanner": "scanner-primary", "fingerprint": "008aea88b788c4b4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-168f3da4fa61ff82", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 scripts/process-new-logos.py:23"}, "properties": {"repobilityId": "fbd4e74cc180b8d5", "scanner": "scanner-primary", "fingerprint": "168f3da4fa61ff82", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-fffce4d20a611d8d", "level": "none", "message": {"text": "Commented-code block (6 lines) in CBR/backfill_orfr_history.py:115"}, "properties": {"repobilityId": "6162bc1d5d7a5a5c", "scanner": "scanner-primary", "fingerprint": "fffce4d20a611d8d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4f56fdcebe3fcfa8", "level": "none", "message": {"text": "Commented-code block (6 lines) in CBR/fetch_orfr_flows.py:76"}, "properties": {"repobilityId": "43198704b8d618c8", "scanner": "scanner-primary", "fingerprint": "4f56fdcebe3fcfa8", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0c092692e4c80737", "level": "none", "message": {"text": "Commented-code block (6 lines) in Commodity/fetch_commodity_realtime.py:49"}, "properties": {"repobilityId": "a21bf8d31d415bca", "scanner": "scanner-primary", "fingerprint": "0c092692e4c80737", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0f74bd07b70684c5", "level": "none", "message": {"text": "Commented-code block (6 lines) in Candles/fetch_candles_futures_realtime.py:827"}, "properties": {"repobilityId": "99bf95c90d457ec4", "scanner": "scanner-primary", "fingerprint": "0f74bd07b70684c5", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2175f7b63c80fb0c", "level": "none", "message": {"text": "Commented-code block (6 lines) in OI/fetch_oi_5min_realtime.py:812"}, "properties": {"repobilityId": "390b125de466c058", "scanner": "scanner-primary", "fingerprint": "2175f7b63c80fb0c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6c5e92b4003af1e3", "level": "none", "message": {"text": "Commented-code block (5 lines) in sandbox/fear_lib.py:45"}, "properties": {"repobilityId": "4206550727a8ca77", "scanner": "scanner-primary", "fingerprint": "6c5e92b4003af1e3", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-923e895c9da040dc", "level": "none", "message": {"text": "Commented-code block (6 lines) in extension/src/widget.js:188"}, "properties": {"repobilityId": "f8fb0bf4c00c26f1", "scanner": "scanner-primary", "fingerprint": "923e895c9da040dc", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f7d04adc7a21916d", "level": "none", "message": {"text": "Commented-code block (5 lines) in Funds/fetch_funds_realtime.py:596"}, "properties": {"repobilityId": "1db8635951f317ee", "scanner": "scanner-primary", "fingerprint": "f7d04adc7a21916d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-fc6e00941976fb1d", "level": "none", "message": {"text": "Commented-code block (5 lines) in Funds/vim_sdr_backfill.py:39"}, "properties": {"repobilityId": "c2acc586a8823c27", "scanner": "scanner-primary", "fingerprint": "fc6e00941976fb1d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1ae225fa1868876e", "level": "none", "message": {"text": "Commented-code block (6 lines) in Funds/fetch_indices_realtime.py:569"}, "properties": {"repobilityId": "0afd0ee129ec1f25", "scanner": "scanner-primary", "fingerprint": "1ae225fa1868876e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-95cb1f2163dbef82", "level": "none", "message": {"text": "Commented-code block (6 lines) in Funds/parsers/scha_xls_parser.py:100"}, "properties": {"repobilityId": "513c0db2ce9d3555", "scanner": "scanner-primary", "fingerprint": "95cb1f2163dbef82", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8b08df5a86bf6b07", "level": "none", "message": {"text": "Commented-code block (5 lines) in Funds/parsers/vim_parser.py:143"}, "properties": {"repobilityId": "83b9aa4cb51809ad", "scanner": "scanner-primary", "fingerprint": "8b08df5a86bf6b07", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d0da734074c4eed0", "level": "none", "message": {"text": "Commented-code block (5 lines) in Funds/parsers/scha_parser.py:75"}, "properties": {"repobilityId": "b8e2072acdcef25d", "scanner": "scanner-primary", "fingerprint": "d0da734074c4eed0", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5fa5af25316da646", "level": "note", "message": {"text": "16 env vars used in code but missing from .env.example"}, "properties": {"repobilityId": "e0919a3f6a45e8c2", "scanner": "scanner-primary", "fingerprint": "5fa5af25316da646", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "config-drift"]}}, {"ruleId": "scanner-be46ea126aa5d8dc", "level": "note", "message": {"text": "Near-duplicate function bodies in 3 places"}, "properties": {"repobilityId": "a913d59189f15b99", "scanner": "scanner-primary", "fingerprint": "be46ea126aa5d8dc", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-be46ea126aa5d8dc", "level": "note", "message": {"text": "Near-duplicate function bodies in 3 places"}, "properties": {"repobilityId": "599bf35d6f33f577", "scanner": "scanner-primary", "fingerprint": "be46ea126aa5d8dc", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-2c04133e54348533", "level": "note", "message": {"text": "Near-duplicate function bodies in 2 places"}, "properties": {"repobilityId": "143e1eccd1503e0b", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-2c04133e54348533", "level": "note", "message": {"text": "Near-duplicate function bodies in 2 places"}, "properties": {"repobilityId": "124687aade87737e", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-49c98f7cedd9c977", "level": "note", "message": {"text": "Near-duplicate function bodies in 4 places"}, "properties": {"repobilityId": "f78e51e6483b9476", "scanner": "scanner-primary", "fingerprint": "49c98f7cedd9c977", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-02525d39071dd2c7", "level": "note", "message": {"text": "Near-duplicate function bodies in 5 places"}, "properties": {"repobilityId": "6664e1639b7d3289", "scanner": "scanner-primary", "fingerprint": "02525d39071dd2c7", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-2c04133e54348533", "level": "note", "message": {"text": "Near-duplicate function bodies in 2 places"}, "properties": {"repobilityId": "8fae0711e9b0a2c6", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-be46ea126aa5d8dc", "level": "note", "message": {"text": "Near-duplicate function bodies in 3 places"}, "properties": {"repobilityId": "394e3ba63e12a7e8", "scanner": "scanner-primary", "fingerprint": "be46ea126aa5d8dc", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-49c98f7cedd9c977", "level": "note", "message": {"text": "Near-duplicate function bodies in 4 places"}, "properties": {"repobilityId": "82effc27037f6eee", "scanner": "scanner-primary", "fingerprint": "49c98f7cedd9c977", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-49c98f7cedd9c977", "level": "note", "message": {"text": "Near-duplicate function bodies in 4 places"}, "properties": {"repobilityId": "9d9c932f29a88237", "scanner": "scanner-primary", "fingerprint": "49c98f7cedd9c977", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-49c98f7cedd9c977", "level": "note", "message": {"text": "Near-duplicate function bodies in 4 places"}, "properties": {"repobilityId": "e9e0da8c05f1b0fa", "scanner": "scanner-primary", "fingerprint": "49c98f7cedd9c977", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-be46ea126aa5d8dc", "level": "note", "message": {"text": "Near-duplicate function bodies in 3 places"}, "properties": {"repobilityId": "cb834a1aaf325cec", "scanner": "scanner-primary", "fingerprint": "be46ea126aa5d8dc", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-2c04133e54348533", "level": "note", "message": {"text": "Near-duplicate function bodies in 2 places"}, "properties": {"repobilityId": "4c01e2f5d357d0d3", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-2c04133e54348533", "level": "note", "message": {"text": "Near-duplicate function bodies in 2 places"}, "properties": {"repobilityId": "aabd5a70bb8bad4e", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-2c04133e54348533", "level": "note", "message": {"text": "Near-duplicate function bodies in 2 places"}, "properties": {"repobilityId": "cf9c8169eceff9fb", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-2c04133e54348533", "level": "note", "message": {"text": "Near-duplicate function bodies in 2 places"}, "properties": {"repobilityId": "96a5b68f297be6ce", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-2c04133e54348533", "level": "note", "message": {"text": "Near-duplicate function bodies in 2 places"}, "properties": {"repobilityId": "bc57326c097eb043", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-2c04133e54348533", "level": "note", "message": {"text": "Near-duplicate function bodies in 2 places"}, "properties": {"repobilityId": "047ad358e2d7b810", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-2c04133e54348533", "level": "note", "message": {"text": "Near-duplicate function bodies in 2 places"}, "properties": {"repobilityId": "3cba7860de44dbaa", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-2c04133e54348533", "level": "note", "message": {"text": "Near-duplicate function bodies in 2 places"}, "properties": {"repobilityId": "7d97198c0f0fedcc", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-560b56501c677523", "level": "warning", "message": {"text": "Frontend route `/auth/callback/google` has no Link/navigate to it \u2014 docs/design-system/project/reference/frontend/src/App.tsx"}, "properties": {"repobilityId": "dce9a68a368ca517", "scanner": "scanner-primary", "fingerprint": "560b56501c677523", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-afb4b4ccc2f2a6dc", "level": "warning", "message": {"text": "Frontend route `/auth/callback/vk` has no Link/navigate to it \u2014 docs/design-system/project/reference/frontend/src/App.tsx"}, "properties": {"repobilityId": "f6503e74876dfb15", "scanner": "scanner-primary", "fingerprint": "afb4b4ccc2f2a6dc", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-a3ad577f92153aeb", "level": "warning", "message": {"text": "Frontend route `/auth/callback/yandex` has no Link/navigate to it \u2014 docs/design-system/project/reference/frontend/src/App.tsx"}, "properties": {"repobilityId": "1280779eb156f2a2", "scanner": "scanner-primary", "fingerprint": "a3ad577f92153aeb", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-57a1afaf90c47814", "level": "warning", "message": {"text": "Frontend route `/auth/callback/telegram` has no Link/navigate to it \u2014 docs/design-system/project/reference/frontend/src/App.tsx"}, "properties": {"repobilityId": "ea447e021c6a15b7", "scanner": "scanner-primary", "fingerprint": "57a1afaf90c47814", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-bdf59d8c63a65576", "level": "warning", "message": {"text": "Frontend route `/style-preview` has no Link/navigate to it \u2014 frontend/src/App.tsx"}, "properties": {"repobilityId": "c4d43652716f9ee6", "scanner": "scanner-primary", "fingerprint": "bdf59d8c63a65576", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-e3127030b4409c7f", "level": "warning", "message": {"text": "Frontend route `/signal-export` has no Link/navigate to it \u2014 frontend/src/App.tsx"}, "properties": {"repobilityId": "1b1c7419f8567f3f", "scanner": "scanner-primary", "fingerprint": "e3127030b4409c7f", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-ae009468fa757b03", "level": "warning", "message": {"text": "Frontend route `/embed/:indicator` has no Link/navigate to it \u2014 frontend/src/App.tsx"}, "properties": {"repobilityId": "a0f603af75185eaa", "scanner": "scanner-primary", "fingerprint": "ae009468fa757b03", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-f756fed85130ceb0", "level": "warning", "message": {"text": "Frontend route `/funds` has no Link/navigate to it \u2014 docs/design-system/project/reference/frontend/src/App.tsx"}, "properties": {"repobilityId": "24eb73625d765dd9", "scanner": "scanner-primary", "fingerprint": "f756fed85130ceb0", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-775aff29cfa2849f", "level": "warning", "message": {"text": "Frontend route `/methodology/oi` has no Link/navigate to it \u2014 frontend/src/App.tsx"}, "properties": {"repobilityId": "ce6446afb0833442", "scanner": "scanner-primary", "fingerprint": "775aff29cfa2849f", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-207b0022938208f9", "level": "warning", "message": {"text": "Frontend route `/methodology/heatmap` has no Link/navigate to it \u2014 frontend/src/App.tsx"}, "properties": {"repobilityId": "d12dfd021a25c451", "scanner": "scanner-primary", "fingerprint": "207b0022938208f9", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-5afa064d56486911", "level": "warning", "message": {"text": "Frontend route `/methodology/funds-money` has no Link/navigate to it \u2014 frontend/src/App.tsx"}, "properties": {"repobilityId": "39fb70cf6fe8745d", "scanner": "scanner-primary", "fingerprint": "5afa064d56486911", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-02e286de4c9a900b", "level": "warning", "message": {"text": "Frontend route `/methodology/funds-catalog` has no Link/navigate to it \u2014 frontend/src/App.tsx"}, "properties": {"repobilityId": "a9f005bd736b72a1", "scanner": "scanner-primary", "fingerprint": "02e286de4c9a900b", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-aed4aef618a2798f", "level": "warning", "message": {"text": "Frontend route `/methodology/buffett` has no Link/navigate to it \u2014 frontend/src/App.tsx"}, "properties": {"repobilityId": "554a159d0108df2b", "scanner": "scanner-primary", "fingerprint": "aed4aef618a2798f", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-15893589bb505064", "level": "warning", "message": {"text": "Frontend route `/methodology/strength` has no Link/navigate to it \u2014 frontend/src/App.tsx"}, "properties": {"repobilityId": "4a5e56ae8f57106c", "scanner": "scanner-primary", "fingerprint": "15893589bb505064", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-f93a66dcc81d242a", "level": "warning", "message": {"text": "Frontend route `/methodology/seasonality` has no Link/navigate to it \u2014 frontend/src/App.tsx"}, "properties": {"repobilityId": "67f89b70e026fcc9", "scanner": "scanner-primary", "fingerprint": "f93a66dcc81d242a", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-5ca09cb6014300e2", "level": "warning", "message": {"text": "Frontend route `/methodology/cbr-flows` has no Link/navigate to it \u2014 frontend/src/App.tsx"}, "properties": {"repobilityId": "0a53d05ea350346e", "scanner": "scanner-primary", "fingerprint": "5ca09cb6014300e2", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-f168e84fe1fb31fc", "level": "warning", "message": {"text": "Frontend route `/billing/success` has no Link/navigate to it \u2014 frontend/src/App.tsx"}, "properties": {"repobilityId": "9af3b210c788abe9", "scanner": "scanner-primary", "fingerprint": "f168e84fe1fb31fc", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-a10fcc937432e6f5", "level": "warning", "message": {"text": "Frontend route `/billing/fail` has no Link/navigate to it \u2014 frontend/src/App.tsx"}, "properties": {"repobilityId": "0f7b2b46950d8341", "scanner": "scanner-primary", "fingerprint": "a10fcc937432e6f5", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-4db8425b48765353", "level": "warning", "message": {"text": "Frontend route `/billing/stub` has no Link/navigate to it \u2014 frontend/src/App.tsx"}, "properties": {"repobilityId": "84b8ea339352a96c", "scanner": "scanner-primary", "fingerprint": "4db8425b48765353", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-9e344b1e11b69a77", "level": "warning", "message": {"text": "Frontend route `/billing/redeem` has no Link/navigate to it \u2014 frontend/src/App.tsx"}, "properties": {"repobilityId": "d1a106d2b01b9f19", "scanner": "scanner-primary", "fingerprint": "9e344b1e11b69a77", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-e5764351ca9700f8", "level": "warning", "message": {"text": "Frontend route `/security` has no Link/navigate to it \u2014 frontend/src/App.tsx"}, "properties": {"repobilityId": "e8b33582096b7d23", "scanner": "scanner-primary", "fingerprint": "e5764351ca9700f8", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-586ddd5f55efe26c", "level": "warning", "message": {"text": "Frontend route `/admin/users/:userId` has no Link/navigate to it \u2014 frontend/src/App.tsx"}, "properties": {"repobilityId": "1a211b438ff1c87d", "scanner": "scanner-primary", "fingerprint": "586ddd5f55efe26c", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-718c2ee1b53b0eed", "level": "warning", "message": {"text": "Frontend route `/oi-total` has no Link/navigate to it \u2014 docs/design-system/project/reference/frontend/src/App.tsx"}, "properties": {"repobilityId": "d3ced795db351f83", "scanner": "scanner-primary", "fingerprint": "718c2ee1b53b0eed", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-ce4110d5bac1d3bd", "level": "error", "message": {"text": "FastAPI POST `exchange` without auth dependency \u2014 api/routers/extension.py:105"}, "properties": {"repobilityId": "04df3126f9068804", "scanner": "scanner-primary", "fingerprint": "ce4110d5bac1d3bd", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/routers/extension.py"}, "region": {"startLine": 105}}}]}, {"ruleId": "scanner-d65d7e6e22876985", "level": "error", "message": {"text": "FastAPI POST `refresh_tokens` without auth dependency \u2014 api/routers/auth.py:442"}, "properties": {"repobilityId": "94f5345dbc4a47f0", "scanner": "scanner-primary", "fingerprint": "d65d7e6e22876985", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/routers/auth.py"}, "region": {"startLine": 442}}}]}, {"ruleId": "scanner-780e1ece1859bcc4", "level": "error", "message": {"text": "FastAPI POST `receive_csp_report` without auth dependency \u2014 api/routers/csp_report.py:41"}, "properties": {"repobilityId": "8311677de0eb2692", "scanner": "scanner-primary", "fingerprint": "780e1ece1859bcc4", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/routers/csp_report.py"}, "region": {"startLine": 41}}}]}, {"ruleId": "scanner-78c264ea5719c0ae", "level": "error", "message": {"text": "FastAPI POST `stub_simulate` without auth dependency \u2014 api/routers/billing.py:508"}, "properties": {"repobilityId": "e6c7af903f00a30d", "scanner": "scanner-primary", "fingerprint": "78c264ea5719c0ae", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/routers/billing.py"}, "region": {"startLine": 508}}}]}, {"ruleId": "scanner-3f8189035678d90a", "level": "error", "message": {"text": "FastAPI POST `google_oauth_callback` without auth dependency \u2014 api/routers/oauth.py:337"}, "properties": {"repobilityId": "bb00cfe02eb9e2dc", "scanner": "scanner-primary", "fingerprint": "3f8189035678d90a", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/routers/oauth.py"}, "region": {"startLine": 337}}}]}, {"ruleId": "scanner-de33fd2249b039a4", "level": "error", "message": {"text": "FastAPI POST `vk_oauth_callback` without auth dependency \u2014 api/routers/oauth.py:344"}, "properties": {"repobilityId": "78b03c72e9fd5ddc", "scanner": "scanner-primary", "fingerprint": "de33fd2249b039a4", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/routers/oauth.py"}, "region": {"startLine": 344}}}]}, {"ruleId": "scanner-f63808490d969dab", "level": "error", "message": {"text": "FastAPI POST `yandex_oauth_callback` without auth dependency \u2014 api/routers/oauth.py:428"}, "properties": {"repobilityId": "db9ffe140ccdc63c", "scanner": "scanner-primary", "fingerprint": "f63808490d969dab", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/routers/oauth.py"}, "region": {"startLine": 428}}}]}, {"ruleId": "scanner-06e2d1d2d64622fb", "level": "error", "message": {"text": "FastAPI POST `telegram_oauth_callback` without auth dependency \u2014 api/routers/oauth.py:500"}, "properties": {"repobilityId": "202dfe540875931b", "scanner": "scanner-primary", "fingerprint": "06e2d1d2d64622fb", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/routers/oauth.py"}, "region": {"startLine": 500}}}]}, {"ruleId": "scanner-7eba8461815c2d2a", "level": "error", "message": {"text": "Dangling fetch: GET /logos/sprite-manifest.json (frontend/src/components/TickerLogo.tsx:53)"}, "properties": {"repobilityId": "037599bcd567bff5", "scanner": "scanner-primary", "fingerprint": "7eba8461815c2d2a", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-6c732d5f5184503f", "level": "error", "message": {"text": "Dangling fetch: GET /api/billing/features (frontend/src/contexts/TierFeaturesContext.tsx:103)"}, "properties": {"repobilityId": "dbd19749e0c7823d", "scanner": "scanner-primary", "fingerprint": "6c732d5f5184503f", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-0c2249eebb7c802d", "level": "error", "message": {"text": "Dangling fetch: POST /api/auth/oauth/telegram (frontend/src/pages/AuthCallback.tsx:74)"}, "properties": {"repobilityId": "c0150cf7840e2c0d", "scanner": "scanner-primary", "fingerprint": "0c2249eebb7c802d", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-5158ecd7814e3f4c", "level": "error", "message": {"text": "Dangling fetch: POST /api/auth/oauth/${provider} (frontend/src/pages/AuthCallback.tsx:153)"}, "properties": {"repobilityId": "57546cc23e74dff5", "scanner": "scanner-primary", "fingerprint": "5158ecd7814e3f4c", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-d677892f79e5a6d8", "level": "error", "message": {"text": "Dangling fetch: GET /api/heatmap/prices (frontend/src/pages/HeatmapPage.tsx:296)"}, "properties": {"repobilityId": "689b5b6da72d1fd8", "scanner": "scanner-primary", "fingerprint": "d677892f79e5a6d8", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-9f6ba4a27c6f6034", "level": "error", "message": {"text": "Dangling fetch: GET /api/auth/oauth/providers (frontend/src/pages/LoginPage.tsx:61)"}, "properties": {"repobilityId": "4a43a428fc0435be", "scanner": "scanner-primary", "fingerprint": "9f6ba4a27c6f6034", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-ead2e36d63050660", "level": "error", "message": {"text": "Dangling fetch: POST /api/auth/login (frontend/src/pages/LoginPage.tsx:92)"}, "properties": {"repobilityId": "0a2a5197a74e8e15", "scanner": "scanner-primary", "fingerprint": "ead2e36d63050660", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-bcde839b014047de", "level": "error", "message": {"text": "Dangling fetch: GET /api/auth/oauth/${providerId}/url (frontend/src/pages/LoginPage.tsx:129)"}, "properties": {"repobilityId": "dfeef51292f7f8fd", "scanner": "scanner-primary", "fingerprint": "bcde839b014047de", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-475a949b581daa37", "level": "error", "message": {"text": "Dangling fetch: GET /api/billing/status (frontend/src/pages/ProfilePage.tsx:118)"}, "properties": {"repobilityId": "88d4b7bdb121cb36", "scanner": "scanner-primary", "fingerprint": "475a949b581daa37", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-8d31661df5b3f784", "level": "error", "message": {"text": "Dangling fetch: GET /api/billing/history?limit=20 (frontend/src/pages/ProfilePage.tsx:126)"}, "properties": {"repobilityId": "b51dd902e4163ce0", "scanner": "scanner-primary", "fingerprint": "8d31661df5b3f784", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-c2d39868e280f17b", "level": "error", "message": {"text": "Dangling fetch: POST /api/billing/${action} (frontend/src/pages/ProfilePage.tsx:151)"}, "properties": {"repobilityId": "0268940ad9b08047", "scanner": "scanner-primary", "fingerprint": "c2d39868e280f17b", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-d9bd983ebef98843", "level": "error", "message": {"text": "Dangling fetch: POST /api/billing/retention/accept (frontend/src/pages/ProfilePage.tsx:171)"}, "properties": {"repobilityId": "dc0665ed27aa5a6b", "scanner": "scanner-primary", "fingerprint": "d9bd983ebef98843", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-49d31a252199a1cd", "level": "error", "message": {"text": "Dangling fetch: POST /api/auth/change-password (frontend/src/pages/ProfilePage.tsx:201)"}, "properties": {"repobilityId": "cb35b070da7f4efc", "scanner": "scanner-primary", "fingerprint": "49d31a252199a1cd", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-261877a8f7e701f1", "level": "error", "message": {"text": "Dangling fetch: POST /api/billing/stub/simulate (frontend/src/pages/BillingStubPage.tsx:28)"}, "properties": {"repobilityId": "996227a805f49c88", "scanner": "scanner-primary", "fingerprint": "261877a8f7e701f1", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-67a14955001a93be", "level": "error", "message": {"text": "Dangling fetch: GET /api/billing/plans (frontend/src/pages/PricingPage.tsx:124)"}, "properties": {"repobilityId": "0a5974ad1f261023", "scanner": "scanner-primary", "fingerprint": "67a14955001a93be", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-b50c1fc15f6ae0e2", "level": "error", "message": {"text": "Dangling fetch: GET /logos/sprite-manifest.json (frontend/src/hooks/usePrefetchLogos.ts:26)"}, "properties": {"repobilityId": "64447b2eb0f6a0ad", "scanner": "scanner-primary", "fingerprint": "b50c1fc15f6ae0e2", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-d534469ac3f7a077", "level": "error", "message": {"text": "Dangling fetch: POST /api/auth/refresh (frontend/src/services/api.ts:46)"}, "properties": {"repobilityId": "ef9daf6a6f14eb8b", "scanner": "scanner-primary", "fingerprint": "d534469ac3f7a077", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-afef03daa862a413", "level": "error", "message": {"text": "Dangling fetch: POST /api/auth/refresh (docs/design-system/project/reference/frontend/src/contexts/AuthContext.tsx:40)"}, "properties": {"repobilityId": "e8250e2d2ffb0865", "scanner": "scanner-primary", "fingerprint": "afef03daa862a413", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-54b0808e2fe6675a", "level": "error", "message": {"text": "Dangling fetch: POST /api/auth/refresh (docs/design-system/project/reference/frontend/src/contexts/AuthContext.tsx:108)"}, "properties": {"repobilityId": "51fbc8bc81e90d10", "scanner": "scanner-primary", "fingerprint": "54b0808e2fe6675a", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-d4eda2ff04c1831d", "level": "error", "message": {"text": "Dangling fetch: POST /api/auth/oauth/telegram (docs/design-system/project/reference/frontend/src/pages/AuthCallback.tsx:74)"}, "properties": {"repobilityId": "e19c96ddd8cbc759", "scanner": "scanner-primary", "fingerprint": "d4eda2ff04c1831d", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-2df61937cda00cf7", "level": "error", "message": {"text": "Dangling fetch: POST /api/auth/oauth/${provider} (docs/design-system/project/reference/frontend/src/pages/AuthCallback.tsx:123)"}, "properties": {"repobilityId": "86b0c53f7d4531e8", "scanner": "scanner-primary", "fingerprint": "2df61937cda00cf7", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-0c06a87c3b736de2", "level": "error", "message": {"text": "Dangling fetch: GET /api/heatmap/prices (docs/design-system/project/reference/frontend/src/pages/HeatmapPage.tsx:209)"}, "properties": {"repobilityId": "2595fbe6ec4c7005", "scanner": "scanner-primary", "fingerprint": "0c06a87c3b736de2", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-9478c32e4863fa01", "level": "error", "message": {"text": "Dangling fetch: GET /api/auth/oauth/providers (docs/design-system/project/reference/frontend/src/pages/LoginPage.tsx:59)"}, "properties": {"repobilityId": "b0f1bdea5b0d55df", "scanner": "scanner-primary", "fingerprint": "9478c32e4863fa01", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-616f92faef586c1d", "level": "error", "message": {"text": "Dangling fetch: GET /api/auth/oauth/${providerId}/url (docs/design-system/project/reference/frontend/src/pages/LoginPage.tsx:110)"}, "properties": {"repobilityId": "11497449b5a3b7a0", "scanner": "scanner-primary", "fingerprint": "616f92faef586c1d", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-87f1e571ea34438d", "level": "error", "message": {"text": "Dangling fetch: GET /api/heatmap/stocks?size_by=value_1m&color_by=change_1m&group_by=none (docs/design-system/project/reference/frontend/src/pages/OverviewPage.tsx:94)"}, "properties": {"repobilityId": "299707727c69bad2", "scanner": "scanner-primary", "fingerprint": "87f1e571ea34438d", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-2d5a78f1d8f094fe", "level": "error", "message": {"text": "Dangling fetch: POST /api/auth/change-password (docs/design-system/project/reference/frontend/src/pages/ProfilePage.tsx:58)"}, "properties": {"repobilityId": "448146eec987a3ee", "scanner": "scanner-primary", "fingerprint": "2d5a78f1d8f094fe", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-438e0e0cb52e453f", "level": "error", "message": {"text": "Dangling fetch: POST /api/auth/refresh (docs/design-system/project/reference/frontend/src/services/api.ts:42)"}, "properties": {"repobilityId": "8cc892e97d065956", "scanner": "scanner-primary", "fingerprint": "438e0e0cb52e453f", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-4756b4c4da7d2088", "level": "note", "message": {"text": "Unused endpoint: GET /api/health"}, "properties": {"repobilityId": "0d164cc624e7b19a", "scanner": "scanner-primary", "fingerprint": "4756b4c4da7d2088", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-bc1afb9c1261643f", "level": "note", "message": {"text": "Unused endpoint: GET /api/info"}, "properties": {"repobilityId": "acf02ed0a7047a25", "scanner": "scanner-primary", "fingerprint": "bc1afb9c1261643f", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-91786ec9e40e27ca", "level": "note", "message": {"text": "Unused endpoint: GET /{path:path}"}, "properties": {"repobilityId": "fb89948f32de3617", "scanner": "scanner-primary", "fingerprint": "91786ec9e40e27ca", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-236d254a125da481", "level": "note", "message": {"text": "Unused endpoint: GET /token"}, "properties": {"repobilityId": "c4ad2d0ffe4ccd13", "scanner": "scanner-primary", "fingerprint": "236d254a125da481", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-358815753e8867f1", "level": "note", "message": {"text": "Unused endpoint: POST /token"}, "properties": {"repobilityId": "6717b9e88f7739d8", "scanner": "scanner-primary", "fingerprint": "358815753e8867f1", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-1c324c8cb1c64b50", "level": "note", "message": {"text": "Unused endpoint: DELETE /token/{token_id}"}, "properties": {"repobilityId": "ae7e749e1b413c31", "scanner": "scanner-primary", "fingerprint": "1c324c8cb1c64b50", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-1c5d213f62b75719", "level": "note", "message": {"text": "Unused endpoint: POST /exchange"}, "properties": {"repobilityId": "3bc032af5dd92594", "scanner": "scanner-primary", "fingerprint": "1c5d213f62b75719", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-081932657ff10ced", "level": "note", "message": {"text": "Unused endpoint: GET /intervals/{sectype}"}, "properties": {"repobilityId": "a824e613a1ff129d", "scanner": "scanner-primary", "fingerprint": "081932657ff10ced", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-d5052c8767524794", "level": "note", "message": {"text": "Unused endpoint: GET /{sec_id}"}, "properties": {"repobilityId": "e13fa9f05378bdab", "scanner": "scanner-primary", "fingerprint": "d5052c8767524794", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-5baa8971ebe192a1", "level": "note", "message": {"text": "Unused endpoint: GET /"}, "properties": {"repobilityId": "a0bfaa7aeab7f77f", "scanner": "scanner-primary", "fingerprint": "5baa8971ebe192a1", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-7a009b1a56794f45", "level": "note", "message": {"text": "Unused endpoint: POST /"}, "properties": {"repobilityId": "5ae2f4c91415bf85", "scanner": "scanner-primary", "fingerprint": "7a009b1a56794f45", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-d467299d5c174fc0", "level": "note", "message": {"text": "Unused endpoint: GET /usage"}, "properties": {"repobilityId": "d12fdaac796473ad", "scanner": "scanner-primary", "fingerprint": "d467299d5c174fc0", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-38f0a0bf734e5bcc", "level": "note", "message": {"text": "Unused endpoint: DELETE /{key_id}"}, "properties": {"repobilityId": "8d464e16f051fc39", "scanner": "scanner-primary", "fingerprint": "38f0a0bf734e5bcc", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-304b6f2b403d93f7", "level": "note", "message": {"text": "Unused endpoint: POST /register"}, "properties": {"repobilityId": "b062a21f918964da", "scanner": "scanner-primary", "fingerprint": "304b6f2b403d93f7", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-618721b912bad1c2", "level": "note", "message": {"text": "Unused endpoint: POST /login"}, "properties": {"repobilityId": "8402adaaba71c938", "scanner": "scanner-primary", "fingerprint": "618721b912bad1c2", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-7ce17d6b092a81ca", "level": "note", "message": {"text": "Unused endpoint: POST /refresh"}, "properties": {"repobilityId": "e59463482916e5a7", "scanner": "scanner-primary", "fingerprint": "7ce17d6b092a81ca", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-99fc36db98c134ce", "level": "note", "message": {"text": "Unused endpoint: POST /logout"}, "properties": {"repobilityId": "c5513c73d2bc1e29", "scanner": "scanner-primary", "fingerprint": "99fc36db98c134ce", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-fd1dc91abf32142d", "level": "note", "message": {"text": "Unused endpoint: GET /me"}, "properties": {"repobilityId": "ebf46563e72d7529", "scanner": "scanner-primary", "fingerprint": "fd1dc91abf32142d", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-eeceb1463df7381a", "level": "note", "message": {"text": "Unused endpoint: POST /add-email"}, "properties": {"repobilityId": "fbd71af2cedc9bff", "scanner": "scanner-primary", "fingerprint": "eeceb1463df7381a", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-0c3bb6af93b4422a", "level": "note", "message": {"text": "Unused endpoint: POST /verify-email"}, "properties": {"repobilityId": "9cabdb888a1577d5", "scanner": "scanner-primary", "fingerprint": "0c3bb6af93b4422a", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-0afae4bfd1ff1c08", "level": "note", "message": {"text": "Unused endpoint: POST /resend-verification"}, "properties": {"repobilityId": "6c02c2a2bf401428", "scanner": "scanner-primary", "fingerprint": "0afae4bfd1ff1c08", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-2a6222222192a469", "level": "note", "message": {"text": "Unused endpoint: GET /guest-limits"}, "properties": {"repobilityId": "fda0d5d0e8944068", "scanner": "scanner-primary", "fingerprint": "2a6222222192a469", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-4fe9bb486644f008", "level": "note", "message": {"text": "Unused endpoint: POST /change-password"}, "properties": {"repobilityId": "f4dc9fc66f998405", "scanner": "scanner-primary", "fingerprint": "4fe9bb486644f008", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-e5cea7dddfee804f", "level": "note", "message": {"text": "Unused endpoint: POST /event"}, "properties": {"repobilityId": "31a2dc86cf1cf6af", "scanner": "scanner-primary", "fingerprint": "e5cea7dddfee804f", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-cd8dc4599ec52a08", "level": "note", "message": {"text": "Unused endpoint: GET /stats"}, "properties": {"repobilityId": "d37d16e96181e21b", "scanner": "scanner-primary", "fingerprint": "cd8dc4599ec52a08", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-3e03a6de6e7f5fe8", "level": "note", "message": {"text": "Unused endpoint: GET /funnel"}, "properties": {"repobilityId": "b3c1ee2bc9501a5e", "scanner": "scanner-primary", "fingerprint": "3e03a6de6e7f5fe8", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-57c230d8ec50e109", "level": "note", "message": {"text": "Unused endpoint: GET /cohort"}, "properties": {"repobilityId": "60e90124b643de73", "scanner": "scanner-primary", "fingerprint": "57c230d8ec50e109", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-1e386d92e940e3d2", "level": "note", "message": {"text": "Unused endpoint: GET /realtime"}, "properties": {"repobilityId": "1177cf78647c1e68", "scanner": "scanner-primary", "fingerprint": "1e386d92e940e3d2", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-ad5e663a54b219ee", "level": "note", "message": {"text": "Unused endpoint: GET /experiments"}, "properties": {"repobilityId": "9f0ea0f9de05dd00", "scanner": "scanner-primary", "fingerprint": "ad5e663a54b219ee", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-4b4622970581e36a", "level": "note", "message": {"text": "Unused endpoint: POST /experiments"}, "properties": {"repobilityId": "92093ba94ee02e6c", "scanner": "scanner-primary", "fingerprint": "4b4622970581e36a", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-e4911d6b89bb7a4a", "level": "note", "message": {"text": "Unused endpoint: DELETE /experiments/{name}"}, "properties": {"repobilityId": "c86cd8e3df20c0ef", "scanner": "scanner-primary", "fingerprint": "e4911d6b89bb7a4a", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-88398ab59b476885", "level": "note", "message": {"text": "Unused endpoint: GET /experiments/{name}/assign"}, "properties": {"repobilityId": "b82c8f037d17f4c8", "scanner": "scanner-primary", "fingerprint": "88398ab59b476885", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-841e50bf821e4158", "level": "note", "message": {"text": "Unused endpoint: GET /users"}, "properties": {"repobilityId": "21c1b1b32ab3621f", "scanner": "scanner-primary", "fingerprint": "841e50bf821e4158", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-d18411a066b7e2c1", "level": "note", "message": {"text": "Unused endpoint: GET /users/{user_id}"}, "properties": {"repobilityId": "eb1a7a15c41ca9b2", "scanner": "scanner-primary", "fingerprint": "d18411a066b7e2c1", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-0ece7dc55b06b820", "level": "note", "message": {"text": "Unused endpoint: GET /stocks"}, "properties": {"repobilityId": "9fc9bac84ab7ebb9", "scanner": "scanner-primary", "fingerprint": "0ece7dc55b06b820", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-e2631495c43f2a81", "level": "note", "message": {"text": "Unused endpoint: GET /prices"}, "properties": {"repobilityId": "9be4f91b6c94c5f7", "scanner": "scanner-primary", "fingerprint": "e2631495c43f2a81", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-0e2e81790f4eee4d", "level": "note", "message": {"text": "Unused endpoint: GET /imoex"}, "properties": {"repobilityId": "b5f79953d55666ab", "scanner": "scanner-primary", "fingerprint": "0e2e81790f4eee4d", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-adc68f9f0ddf5c19", "level": "note", "message": {"text": "Unused endpoint: GET /intraday-assets"}, "properties": {"repobilityId": "75ef3d863bbadbbb", "scanner": "scanner-primary", "fingerprint": "adc68f9f0ddf5c19", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-7feb467034bef67a", "level": "note", "message": {"text": "Unused endpoint: GET /{sectype}"}, "properties": {"repobilityId": "ccaf65e87da8b109", "scanner": "scanner-primary", "fingerprint": "7feb467034bef67a", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-89531cd1957e8f15", "level": "note", "message": {"text": "Unused endpoint: GET /funds"}, "properties": {"repobilityId": "915c090393cac921", "scanner": "scanner-primary", "fingerprint": "89531cd1957e8f15", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-6a3b16f143677903", "level": "note", "message": {"text": "Unused endpoint: GET /fund/{ticker}"}, "properties": {"repobilityId": "7b067df394c06ec8", "scanner": "scanner-primary", "fingerprint": "6a3b16f143677903", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-f91f282218c9cda9", "level": "note", "message": {"text": "Unused endpoint: GET /movers"}, "properties": {"repobilityId": "281e6b69be7b49fb", "scanner": "scanner-primary", "fingerprint": "f91f282218c9cda9", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-6b48db282d44e71b", "level": "note", "message": {"text": "Unused endpoint: GET /intraday/{ticker}"}, "properties": {"repobilityId": "9fbdb7ae0c7a7632", "scanner": "scanner-primary", "fingerprint": "6b48db282d44e71b", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-41d7b0ce008b21fb", "level": "note", "message": {"text": "Unused endpoint: GET /asset/{asset_name}"}, "properties": {"repobilityId": "d1c45fba0ad44e35", "scanner": "scanner-primary", "fingerprint": "41d7b0ce008b21fb", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-c2ab4f52b5100a22", "level": "note", "message": {"text": "Unused endpoint: GET /snapshots/{ticker}"}, "properties": {"repobilityId": "4920a87440d58b93", "scanner": "scanner-primary", "fingerprint": "c2ab4f52b5100a22", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-f9835dfb82d7892b", "level": "note", "message": {"text": "Unused endpoint: GET /snapshot/{ticker}"}, "properties": {"repobilityId": "6dd8be9fe158672e", "scanner": "scanner-primary", "fingerprint": "f9835dfb82d7892b", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-b9cdbae91eebc8e1", "level": "note", "message": {"text": "Unused endpoint: GET /asset-history/{ticker}"}, "properties": {"repobilityId": "2386515a86b43d90", "scanner": "scanner-primary", "fingerprint": "b9cdbae91eebc8e1", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-68c058e796a5439f", "level": "note", "message": {"text": "Unused endpoint: GET /assets"}, "properties": {"repobilityId": "267e76dbc2b60850", "scanner": "scanner-primary", "fingerprint": "68c058e796a5439f", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-55475034b057bdda", "level": "note", "message": {"text": "Unused endpoint: GET /company-flows"}, "properties": {"repobilityId": "5439e0c0e50731f0", "scanner": "scanner-primary", "fingerprint": "55475034b057bdda", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-d06ddcaddd685127", "level": "note", "message": {"text": "Unused endpoint: GET /heatmap.csv"}, "properties": {"repobilityId": "d91683d013808fe4", "scanner": "scanner-primary", "fingerprint": "d06ddcaddd685127", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}]}]}