{"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: ramxak2025/zr-auto-pro", "shortDescription": {"text": "Foundry mined unresolved feedback: ramxak2025/zr-auto-pro"}, "fullDescription": {"text": "Graph query export: Human feedback without linked fix evidence\nQuery id: unresolved_feedback\nQuery type: motif_query\nIntent: Negative/unresolved examples that should not be hallucinated into fixes.\nMotif: unlinked_feedback_needs_evidence\nTraining usage: negative_or_unresolved\nGraph gold label: assumption_check\nRepo: ramxak2025/zr-auto-pro\nThread: ramxak2025/zr-auto-pro#9\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: ramxak2025/zr-auto-pro\nThread: ramxak2025/zr-auto-pro#9\nGraph gold label: assumption_check\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: ramxak2025/zr-auto-pro#9\nRepo: ramxak2025/zr-auto-pro\nIssue/PR number: 9\nGraph consistency label: assumption_check\nNodes: 30\nEdges: 71\nNode types: {'pr_file': 15, 'link_quality': 5, 'comment': 2, 'comment_chain': 2, 'thread': 1, 'repo': 1, 'issue_chain': 1, 'fix_outcome': 1, 'alignmen"}, "properties": {"scanner": "foundry_dataset", "category": "practices", "severity": "medium", "confidence": 0.7, "cwe": "", "owasp": ""}}, {"id": "foundry_blueprint_gap", "name": "Foundry mined blueprint gap alignment: ramxak2025/zr-auto-pro", "shortDescription": {"text": "Foundry mined blueprint gap alignment: ramxak2025/zr-auto-pro"}, "fullDescription": {"text": "Graph query export: Human feedback aligned with blueprint or architecture gaps\nQuery id: blueprint_gap_alignment\nQuery type: motif_query\nIntent: Curriculum-gap examples connecting issue threads to helicopter-view gaps.\nMotif: blueprint_gap_alignment\nTraining usage: curriculum_gap\nGraph gold label: assumption_check\nRepo: ramxak2025/zr-auto-pro\nThread: ramxak2025/zr-auto-pro#9\nEvidence:\nGraph motif: Human feedback aligns with blueprint or architecture gaps\nMotif id: blueprint_gap_alignment\nPolarity: mixed\nTraining usage: curriculum_gap\nSeverity: medium\nRepo: ramxak2025/zr-auto-pro\nThread: ramxak2025/zr-auto-pro#9\nGraph gold label: assumption_check\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: ramxak2025/zr-auto-pro#9\nRepo: ramxak2025/zr-auto-pro\nIssue/PR number: 9\nGraph consistency label: assumption_check\nNodes: 30\nEdges: 71\nNode types: {'pr_file': 15, 'link_quality': 5, 'comment': 2, 'comment_chain': 2, 'thread': 1, 'repo': 1, 'issue_chain': 1, 'fix_outcome': 1, 'alig"}, "properties": {"scanner": "foundry_dataset", "category": "tech_debt", "severity": "medium", "confidence": 0.7, "cwe": "", "owasp": ""}}, {"id": "foundry_assumption_check", "name": "Foundry mined assumption checks: ramxak2025/zr-auto-pro", "shortDescription": {"text": "Foundry mined assumption checks: ramxak2025/zr-auto-pro"}, "fullDescription": {"text": "Comment chain pattern product: assumption_checks\nRepo: ramxak2025/zr-auto-pro\nThread: ramxak2025/zr-auto-pro#7\nOutcome: claimed_resolved_unverified\nThread label: thread_has_human_issue_and_fix_context\nSource graph label: source_backed_multi_signal_graph\nReasons: source_graph_has_real_artifacts, source_graph_has_verification_artifacts, repo_has_isolated_helicopter_views, link_quality_weak_supervision, high_risk_human_feedback_label\nChain evidence:\nIssue/PR evidence chain: ramxak2025/zr-auto-pro#7\nRepo: ramxak2025/zr-auto-pro\nThread label: thread_has_human_issue_and_fix_context\nOutcome: claimed_resolved_unverified\nComment count: 2\nLinked commit count: 1\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 5\nLabels: {'data_schema_persistence': 1, 'deployment_env_gap': 1}\nPolarities: {'bad': 2}\nChanged file labels: {'schema_or_data': 1, 'api_or_backend': 3, 'ui_or_frontend': 1}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-c92b8fc56c37629a\",\n    \"kind\": \"pull_request_bod"}, "properties": {"scanner": "foundry_dataset", "category": "practices", "severity": "medium", "confidence": 0.62, "cwe": "", "owasp": ""}}, {"id": "foundry_docs_only_fix", "name": "Foundry mined docs only runtime fix: ramxak2025/zr-auto-pro", "shortDescription": {"text": "Foundry mined docs only runtime fix: ramxak2025/zr-auto-pro"}, "fullDescription": {"text": "Graph query export: Docs-only response to runtime or integration issue\nQuery id: docs_only_runtime_fix\nQuery type: motif_query\nIntent: Assumption-check examples where docs or claims are not enough proof.\nMotif: docs_only_runtime_fix\nTraining usage: assumption_check\nGraph gold label: supported_by_verification_signal\nRepo: ramxak2025/zr-auto-pro\nThread: ramxak2025/zr-auto-pro#4\nEvidence:\nGraph motif: Runtime/integration complaint answered mostly with docs or claims\nMotif id: docs_only_runtime_fix\nPolarity: bad\nTraining usage: assumption_check\nSeverity: high\nRepo: ramxak2025/zr-auto-pro\nThread: ramxak2025/zr-auto-pro#4\nGraph gold label: supported_by_verification_signal\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: ramxak2025/zr-auto-pro#4\nRepo: ramxak2025/zr-auto-pro\nIssue/PR number: 4\nGraph consistency label: supported_by_verification_signal\nNodes: 120\nEdges: 161\nNode types: {'pr_file': 100, 'commit': 5, 'link_quality': 5, 'comment': 2, 'comment_chain': 2, 'thread': 1,"}, "properties": {"scanner": "foundry_dataset", "category": "practices", "severity": "high", "confidence": 0.8, "cwe": "", "owasp": ""}}, {"id": "foundry_test_ci_gap", "name": "Foundry mined test ci gap after feedback: ramxak2025/zr-auto-pro", "shortDescription": {"text": "Foundry mined test ci gap after feedback: ramxak2025/zr-auto-pro"}, "fullDescription": {"text": "Graph query export: Feedback exposes missing tests or CI\nQuery id: test_ci_gap_after_feedback\nQuery type: motif_query\nIntent: Hard negatives for feedback/fix chains without adequate guardrails.\nMotif: test_ci_gap_after_feedback\nTraining usage: hard_negative\nGraph gold label: assumption_check\nRepo: ramxak2025/zr-auto-pro\nThread: ramxak2025/zr-auto-pro#9\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: ramxak2025/zr-auto-pro\nThread: ramxak2025/zr-auto-pro#9\nGraph gold label: assumption_check\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: ramxak2025/zr-auto-pro#9\nRepo: ramxak2025/zr-auto-pro\nIssue/PR number: 9\nGraph consistency label: assumption_check\nNodes: 30\nEdges: 71\nNode types: {'pr_file': 15, 'link_quality': 5, 'comment': 2, 'comment_chain': 2, 'thread': 1, 'repo': 1, 'issue_chain': 1, 'fix_outcome': 1, 'alignment': 1, 'blueprint_fi"}, "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: ramxak2025/zr-auto-pro", "shortDescription": {"text": "Foundry mined schema ui api mismatch: ramxak2025/zr-auto-pro"}, "fullDescription": {"text": "Graph query export: Schema, UI, and API mismatch\nQuery id: schema_ui_api_mismatch\nQuery type: motif_query\nIntent: Assumption-check examples for data-path consistency across layers.\nMotif: schema_ui_api_mismatch\nTraining usage: assumption_check\nGraph gold label: weak_supervision_needs_review\nRepo: ramxak2025/zr-auto-pro\nThread: ramxak2025/zr-auto-pro#7\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: ramxak2025/zr-auto-pro\nThread: ramxak2025/zr-auto-pro#7\nGraph gold label: weak_supervision_needs_review\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: ramxak2025/zr-auto-pro#7\nRepo: ramxak2025/zr-auto-pro\nIssue/PR number: 7\nGraph consistency label: weak_supervision_needs_review\nNodes: 21\nEdges: 41\nNode types: {'pr_file': 5, 'link_quality': 5, 'comment': 2, 'comment_chain': 2, 'thread': 1, 'repo': 1, 'commit': 1, 'issue_chain': 1, 'fix_outcome': 1, 'alignme"}, "properties": {"scanner": "foundry_dataset", "category": "quality", "severity": "high", "confidence": 0.76, "cwe": "", "owasp": ""}}, {"id": "foundry_bad_chain", "name": "Foundry mined bad chains: ramxak2025/zr-auto-pro", "shortDescription": {"text": "Foundry mined bad chains: ramxak2025/zr-auto-pro"}, "fullDescription": {"text": "Comment chain pattern product: bad_chains\nRepo: ramxak2025/zr-auto-pro\nThread: ramxak2025/zr-auto-pro#9\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: ramxak2025/zr-auto-pro#9\nRepo: ramxak2025/zr-auto-pro\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: 15\nLabels: {'test_ci_gap': 1, 'deployment_env_gap': 1}\nPolarities: {'bad': 2}\nChanged file labels: {'docs_or_claims': 6, 'api_or_backend': 2, 'test_or_ci': 2, 'source_or_other': 3, 'dependency_or_build': 2}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-4896289fdf78d37f\","}, "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: ramxak2025/zr-auto-pro", "shortDescription": {"text": "Foundry mined security auth guardrail gaps: ramxak2025/zr-auto-pro"}, "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: weak_supervision_needs_review\nRepo: ramxak2025/zr-auto-pro\nThread: ramxak2025/zr-auto-pro#6\nEvidence:\nGraph motif: Security/auth change without enough guardrails\nMotif id: security_auth_without_guardrails\nPolarity: bad\nTraining usage: assumption_check\nSeverity: critical\nRepo: ramxak2025/zr-auto-pro\nThread: ramxak2025/zr-auto-pro#6\nGraph gold label: weak_supervision_needs_review\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: ramxak2025/zr-auto-pro#6\nRepo: ramxak2025/zr-auto-pro\nIssue/PR number: 6\nGraph consistency label: weak_supervision_needs_review\nNodes: 26\nEdges: 57\nNode types: {'pr_file': 9, 'commit': 5, 'link_quality': 4, 'comment': 2, 'comment_chain': 2, 'thread': 1"}, "properties": {"scanner": "foundry_dataset", "category": "auth", "severity": "critical", "confidence": 0.78, "cwe": "", "owasp": ""}}, {"id": "scanner-5308ac02e41b4703", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/FeatureGate.tsx:104", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/FeatureGate.tsx:104"}, "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-e5f478d75b24ac77", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/TrashModal.tsx:122", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/TrashModal.tsx:122"}, "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-8c17059593a6f433", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/DatePeriodPicker.tsx:108", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/DatePeriodPicker.tsx:108"}, "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-fb9afda0db42b429", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/Layout.tsx:133", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/Layout.tsx:133"}, "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-4bf1d4570838a882", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/DuplicateWarningDialog.tsx:55", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/DuplicateWarningDialog.tsx:55"}, "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-54ac90ca1354155f", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/AdminLayout.tsx:64", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/AdminLayout.tsx:64"}, "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-80cc7a5dec4877d8", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/pages/UsersPage.tsx:292", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/pages/UsersPage.tsx:292"}, "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-ed87e33cefbcb36e", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/pages/EmployeeDetailPage.tsx:137", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/pages/EmployeeDetailPage.tsx:137"}, "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-4eb4c5e2e8bece93", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/pages/ProductsPage.tsx:392", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/pages/ProductsPage.tsx:392"}, "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-b0c459c157dc7898", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/pages/ClientDetailPage.tsx:257", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/pages/ClientDetailPage.tsx:257"}, "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-25fff5c7e6ff75f8", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/pages/EquipmentPage.tsx:100", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/pages/EquipmentPage.tsx:100"}, "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-5b0d2cbbfbc0816a", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/pages/MorePage.tsx:279", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/pages/MorePage.tsx:279"}, "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-7f7f8b119c5fcdd3", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/pages/ChecksPage.tsx:87", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/pages/ChecksPage.tsx:87"}, "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-63598b14eb30c284", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/pages/SupplierDetailPage.tsx:137", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/pages/SupplierDetailPage.tsx:137"}, "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-51bd75f212c30fe9", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/pages/RetailChecksPage.tsx:112", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/pages/RetailChecksPage.tsx:112"}, "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-f67a9812946ef4f0", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/pages/MarketingPage.tsx:111", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/pages/MarketingPage.tsx:111"}, "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-1bfb19cbaabbb176", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/pages/SalaryPage.tsx:117", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/pages/SalaryPage.tsx:117"}, "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-8e3767d6040c8559", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/pages/SuppliersPage.tsx:159", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/pages/SuppliersPage.tsx:159"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-dba94cac9c18ab9d", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/pages/CheckDetailPage.tsx:212", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/pages/CheckDetailPage.tsx:212"}, "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-45a41a0626da5451", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/pages/CallsPage.tsx:255", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/pages/CallsPage.tsx:255"}, "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-1f2e3dd4251c1b47", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/pages/KnowledgeBasePage.tsx:241", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/pages/KnowledgeBasePage.tsx:241"}, "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-db70c693d128445f", "name": "\"active\" state uses light bg in a dark theme \u2014 frontend/src/pages/KnowledgeBasePage.tsx:346", "shortDescription": {"text": "\"active\" state uses light bg in a dark theme \u2014 frontend/src/pages/KnowledgeBasePage.tsx:346"}, "fullDescription": {"text": "A ternary like `active ? 'bg-white' : '...'` (or bg-gray-100/200) on a dark theme produces jarring white pills. Use a dark-emphasized active state instead \u2014 border + ring or slightly brighter dark bg. Example: `active ? 'bg-gray-800 border-gray-500 ring-1 ring-blue-500/30' : '\u2026'`.\n\nWhy: P-E in CHECKLIST.md \u2014 light bg in a dark theme is a class of regression.\nRule id: fq.active-light-bg"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-df3eff4692e5af40", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/pages/DashboardPage.tsx:220", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/pages/DashboardPage.tsx:220"}, "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-621b41b5fdf53480", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/pages/EmployeesPage.tsx:384", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/pages/EmployeesPage.tsx:384"}, "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-60e19e67b420bfcb", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/pages/ImportClientsCarsPage.tsx:547", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/pages/ImportClientsCarsPage.tsx:547"}, "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-b9c54346735d3d4b", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/pages/ExpensesPage.tsx:191", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/pages/ExpensesPage.tsx:191"}, "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-e96fe245c1ff7e65", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/pages/CheckCreatePage.tsx:211", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/pages/CheckCreatePage.tsx:211"}, "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-8a5c4ba7b0fca199", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/pages/SchedulePage.tsx:141", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/pages/SchedulePage.tsx:141"}, "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-423f2e55ba46b710", "name": "\"active\" state uses light bg in a dark theme \u2014 frontend/src/pages/SchedulePage.tsx:768", "shortDescription": {"text": "\"active\" state uses light bg in a dark theme \u2014 frontend/src/pages/SchedulePage.tsx:768"}, "fullDescription": {"text": "A ternary like `active ? 'bg-white' : '...'` (or bg-gray-100/200) on a dark theme produces jarring white pills. Use a dark-emphasized active state instead \u2014 border + ring or slightly brighter dark bg. Example: `active ? 'bg-gray-800 border-gray-500 ring-1 ring-blue-500/30' : '\u2026'`.\n\nWhy: P-E in CHECKLIST.md \u2014 light bg in a dark theme is a class of regression.\nRule id: fq.active-light-bg"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-3ad3ada89a895a0b", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/pages/admin/AdminTenantsPage.tsx:255", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/pages/admin/AdminTenantsPage.tsx:255"}, "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-1de18134fb8d621b", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/pages/knowledge/LearningCenter.tsx:340", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/pages/knowledge/LearningCenter.tsx:340"}, "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-2cf786387f7495ca", "name": "Privileged port 254 in use", "shortDescription": {"text": "Privileged port 254 in use"}, "fullDescription": {"text": "Port 254 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-60427b03771411b6", "name": "Dockerfile runs as root: frontend/Dockerfile", "shortDescription": {"text": "Dockerfile runs as root: frontend/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-faa134129e5545ff", "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-b048d166901fd868", "name": "Docker base image is tag-pinned but not digest-pinned: nginx:alpine", "shortDescription": {"text": "Docker base image is tag-pinned but not digest-pinned: nginx: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-f557fb07724157c4", "name": "Dockerfile runs as root: webhook/Dockerfile", "shortDescription": {"text": "Dockerfile runs as root: webhook/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-a8e9a1642238d1e9", "name": "Docker base image is tag-pinned but not digest-pinned: golang:1.22-alpine", "shortDescription": {"text": "Docker base image is tag-pinned but not digest-pinned: golang:1.22-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-6496c55664deaa3c", "name": "Docker base image is tag-pinned but not digest-pinned: alpine:3.19", "shortDescription": {"text": "Docker base image is tag-pinned but not digest-pinned: alpine:3.19"}, "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-1f66ad88286ca30a", "name": "Dockerfile runs as root: backend/Dockerfile", "shortDescription": {"text": "Dockerfile runs as root: backend/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-3d2a6283f9ebab24", "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-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-6133b7a67ee0e151", "name": "Insecure pattern 'direct_innerhtml_assignment' in frontend/src/utils/generateReceiptPdf.ts:57", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in frontend/src/utils/generateReceiptPdf.ts:57"}, "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-5c6b7c48daf2ab79", "name": "Insecure pattern 'local_storage_auth_token' in frontend/src/contexts/AuthContext.tsx:159", "shortDescription": {"text": "Insecure pattern 'local_storage_auth_token' in frontend/src/contexts/AuthContext.tsx:159"}, "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-87845c975eb2fe57", "name": "Insecure pattern 'local_storage_auth_token' in frontend/src/pages/admin/AdminTenantDetailPage.tsx:220", "shortDescription": {"text": "Insecure pattern 'local_storage_auth_token' in frontend/src/pages/admin/AdminTenantDetailPage.tsx:220"}, "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-c1a8bc5edf0a723b", "name": "Insecure pattern 'direct_innerhtml_assignment' in frontend/src/hooks/usePullToRefresh.ts:44", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in frontend/src/hooks/usePullToRefresh.ts:44"}, "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-cb639d9a10a47b23", "name": "package.json defines install-time lifecycle scripts", "shortDescription": {"text": "package.json defines install-time lifecycle scripts"}, "fullDescription": {"text": "preinstall/install/postinstall/prepare scripts execute during dependency installation. Review them carefully for network calls, obfuscation, shell execution, or credential access."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "low", "confidence": 1.0}}, {"id": "scanner-af4204d6b72e3401", "name": "Very large file: frontend/src/pages/ProductsPage.tsx (3268 lines)", "shortDescription": {"text": "Very large file: frontend/src/pages/ProductsPage.tsx (3268 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-66c9f1d9892bebf9", "name": "Very large file: frontend/src/pages/SupplierDetailPage.tsx (1400 lines)", "shortDescription": {"text": "Very large file: frontend/src/pages/SupplierDetailPage.tsx (1400 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-882fe85e6fd2de1e", "name": "Very large file: frontend/src/pages/MarketingPage.tsx (1019 lines)", "shortDescription": {"text": "Very large file: frontend/src/pages/MarketingPage.tsx (1019 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-c501980a00954159", "name": "Very large file: frontend/src/pages/KnowledgeBasePage.tsx (1248 lines)", "shortDescription": {"text": "Very large file: frontend/src/pages/KnowledgeBasePage.tsx (1248 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-9c0f6e9eba0b1184", "name": "Very large file: frontend/src/pages/CheckCreatePage.tsx (1481 lines)", "shortDescription": {"text": "Very large file: frontend/src/pages/CheckCreatePage.tsx (1481 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-e534a89eec6bb93f", "name": "Very large file: frontend/src/pages/SchedulePage.tsx (1466 lines)", "shortDescription": {"text": "Very large file: frontend/src/pages/SchedulePage.tsx (1466 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-44b0b786e434d7a7", "name": "Very large file: shared/api/createServices.ts (1056 lines)", "shortDescription": {"text": "Very large file: shared/api/createServices.ts (1056 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-b9f55cb18641d8ab", "name": "Very large file: mobile/src/screens/CashFlowScreen.tsx (1417 lines)", "shortDescription": {"text": "Very large file: mobile/src/screens/CashFlowScreen.tsx (1417 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-7c02eef31fee2141", "name": "Very large file: mobile/src/screens/WarehouseAnalyticsScreen.tsx (1530 lines)", "shortDescription": {"text": "Very large file: mobile/src/screens/WarehouseAnalyticsScreen.tsx (1530 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-f9ffd94069e59a83", "name": "Very large file: mobile/src/screens/MarketingScreen.tsx (1493 lines)", "shortDescription": {"text": "Very large file: mobile/src/screens/MarketingScreen.tsx (1493 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-3bb8a7a5b26f62d5", "name": "Very large file: mobile/src/screens/CheckCreateScreen.tsx (3178 lines)", "shortDescription": {"text": "Very large file: mobile/src/screens/CheckCreateScreen.tsx (3178 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-3368d717960d2aa8", "name": "Very large file: mobile/src/screens/ClientDetailScreen.tsx (2180 lines)", "shortDescription": {"text": "Very large file: mobile/src/screens/ClientDetailScreen.tsx (2180 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-f9c9f533146805d0", "name": "Very large file: mobile/src/screens/EquipmentScreen.tsx (2168 lines)", "shortDescription": {"text": "Very large file: mobile/src/screens/EquipmentScreen.tsx (2168 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-41970cff96f9c449", "name": "Very large file: mobile/src/screens/ProductsScreen.tsx (3347 lines)", "shortDescription": {"text": "Very large file: mobile/src/screens/ProductsScreen.tsx (3347 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-fd9c4362806fb369", "name": "Very large file: mobile/src/screens/SalaryScreen.tsx (1985 lines)", "shortDescription": {"text": "Very large file: mobile/src/screens/SalaryScreen.tsx (1985 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-e66f2dc8cd9f3dd4", "name": "Very large file: mobile/src/screens/EmployeeDetailScreen.tsx (2289 lines)", "shortDescription": {"text": "Very large file: mobile/src/screens/EmployeeDetailScreen.tsx (2289 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-71ee02ac4939a2b8", "name": "Very large file: mobile/src/screens/ExpensesScreen.tsx (2571 lines)", "shortDescription": {"text": "Very large file: mobile/src/screens/ExpensesScreen.tsx (2571 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-1f5b14557e51e958", "name": "Very large file: mobile/src/screens/ScheduleScreen.tsx (3933 lines)", "shortDescription": {"text": "Very large file: mobile/src/screens/ScheduleScreen.tsx (3933 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-052bde02ffc10e2c", "name": "Very large file: mobile/src/screens/ReportsScreen.tsx (2326 lines)", "shortDescription": {"text": "Very large file: mobile/src/screens/ReportsScreen.tsx (2326 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-58d2301126031e50", "name": "Very large file: mobile/src/screens/CheckDetailScreen.tsx (2021 lines)", "shortDescription": {"text": "Very large file: mobile/src/screens/CheckDetailScreen.tsx (2021 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-f464979c0889e0e9", "name": "Very large file: mobile/src/screens/DashboardScreen.tsx (4640 lines)", "shortDescription": {"text": "Very large file: mobile/src/screens/DashboardScreen.tsx (4640 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-498d33ea87f8c1ac", "name": "Very large file: mobile/src/screens/ClientsScreen.tsx (1288 lines)", "shortDescription": {"text": "Very large file: mobile/src/screens/ClientsScreen.tsx (1288 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-1dfdc02dd2917ae6", "name": "Very large file: mobile/src/screens/ChecksScreen.tsx (1706 lines)", "shortDescription": {"text": "Very large file: mobile/src/screens/ChecksScreen.tsx (1706 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-a0aeb4c528bf0973", "name": "Very large file: mobile/src/screens/SupplierDetailScreen.tsx (1824 lines)", "shortDescription": {"text": "Very large file: mobile/src/screens/SupplierDetailScreen.tsx (1824 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-5438aa2c9efd73a7", "name": "Very large file: backend/src/checks/checks.service.ts (1345 lines)", "shortDescription": {"text": "Very large file: backend/src/checks/checks.service.ts (1345 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-6eb82d4fe225a975", "name": "Very large file: backend/src/knowledge/knowledge.service.ts (1792 lines)", "shortDescription": {"text": "Very large file: backend/src/knowledge/knowledge.service.ts (1792 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": "7 test file(s) for 412 source file(s) (ratio 0.02). 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-72b2a6250083a784", "name": "Placeholder or mock-heavy implementation detected", "shortDescription": {"text": "Placeholder or mock-heavy implementation detected"}, "fullDescription": {"text": "Found 367 placeholder/mock markers across 87 source files. This often means the repo looks complete while core flows still use generated scaffolding or fake data."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-2d0c7b7ab8f8aacf", "name": "Critical user flow still appears backed by mock or placeholder data", "shortDescription": {"text": "Critical user flow still appears backed by mock or placeholder data"}, "fullDescription": {"text": "A payment/auth/admin/order/billing-style flow contains mock, fake, TODO, dummy, or placeholder markers in runtime source. In the Fable corpus this is a high-leverage completeness smell: the app can look finished while the money, identity, or tenant flow is still scaffolded."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-749d4bc1bd66df5f", "name": "Agent instructions exist but release-hardening basics are missing", "shortDescription": {"text": "Agent instructions exist but release-hardening basics are missing"}, "fullDescription": {"text": "AI-coder instruction files were found, but the repo is missing license. 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-226cbf1aff8ef5c4", "name": "Agent instruction contains unpinned remote install: .claude/skills/ios-qa-build/SKILL.md", "shortDescription": {"text": "Agent instruction contains unpinned remote install: .claude/skills/ios-qa-build/SKILL.md"}, "fullDescription": {"text": "Remote install commands in agent instructions are a supply-chain risk, especially when an agent can execute shell commands."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-7203ea9a1231afad", "name": "Commented-code block (9 lines) in frontend/public/sw.js:4", "shortDescription": {"text": "Commented-code block (9 lines) in frontend/public/sw.js:4"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-9f0050b1d663c43a", "name": "Commented-code block (6 lines) in frontend/src/App.tsx:13", "shortDescription": {"text": "Commented-code block (6 lines) in frontend/src/App.tsx:13"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-8f6e13feaf3e28ab", "name": "Commented-code block (9 lines) in frontend/src/api/axios.ts:59", "shortDescription": {"text": "Commented-code block (9 lines) in frontend/src/api/axios.ts:59"}, "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-542713675765aafd", "name": "Commented-code block (5 lines) in frontend/src/contexts/AuthContext.tsx:149", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/src/contexts/AuthContext.tsx:149"}, "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-7809580d84255e54", "name": "Commented-code block (6 lines) in frontend/src/pages/ProductsPage.tsx:1018", "shortDescription": {"text": "Commented-code block (6 lines) in frontend/src/pages/ProductsPage.tsx:1018"}, "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-e9fae7020592605f", "name": "Commented-code block (5 lines) in frontend/src/pages/SupplierDetailPage.tsx:313", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/src/pages/SupplierDetailPage.tsx:313"}, "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-520bf0d09a376c61", "name": "Commented-code block (5 lines) in shared/types/index.ts:1139", "shortDescription": {"text": "Commented-code block (5 lines) in shared/types/index.ts:1139"}, "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-ccd3509f47691c3b", "name": "Commented-code block (5 lines) in shared/api/createServices.ts:6", "shortDescription": {"text": "Commented-code block (5 lines) in shared/api/createServices.ts:6"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-2a6726549cc46332", "name": "Commented-code block (13 lines) in shared/utils/attendance.ts:7", "shortDescription": {"text": "Commented-code block (13 lines) in shared/utils/attendance.ts: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-8fe0c4f5f1641661", "name": "Commented-code block (7 lines) in mobile/metro.config.js:27", "shortDescription": {"text": "Commented-code block (7 lines) in mobile/metro.config.js:27"}, "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-da9fee9a548b71f9", "name": "Commented-code block (5 lines) in mobile/App.tsx:24", "shortDescription": {"text": "Commented-code block (5 lines) in mobile/App.tsx:24"}, "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-70ac5d04752a5ea2", "name": "Commented-code block (5 lines) in mobile/src/navigation/AdminTabBar.tsx:105", "shortDescription": {"text": "Commented-code block (5 lines) in mobile/src/navigation/AdminTabBar.tsx:105"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-5390dbdfccd7717b", "name": "Commented-code block (6 lines) in mobile/src/navigation/TabBar.android.tsx:154", "shortDescription": {"text": "Commented-code block (6 lines) in mobile/src/navigation/TabBar.android.tsx:154"}, "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-1b6b57b6049ad7d1", "name": "Commented-code block (6 lines) in mobile/src/navigation/AppNavigator.tsx:116", "shortDescription": {"text": "Commented-code block (6 lines) in mobile/src/navigation/AppNavigator.tsx:116"}, "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-8d0191f36b687b9b", "name": "Commented-code block (5 lines) in mobile/src/navigation/TabBar.ios.tsx:57", "shortDescription": {"text": "Commented-code block (5 lines) in mobile/src/navigation/TabBar.ios.tsx:57"}, "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-5f69c38f53a0cfc5", "name": "Commented-code block (7 lines) in mobile/src/api/axios.ts:33", "shortDescription": {"text": "Commented-code block (7 lines) in mobile/src/api/axios.ts: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-a4d445c0efb1300c", "name": "Commented-code block (8 lines) in mobile/src/screens/CashFlowScreen.tsx:191", "shortDescription": {"text": "Commented-code block (8 lines) in mobile/src/screens/CashFlowScreen.tsx:191"}, "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-4147b48f40874c88", "name": "Commented-code block (7 lines) in mobile/src/screens/WarehouseAnalyticsScreen.tsx:1246", "shortDescription": {"text": "Commented-code block (7 lines) in mobile/src/screens/WarehouseAnalyticsScreen.tsx:1246"}, "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-5ee6b371669b6728", "name": "Commented-code block (5 lines) in mobile/src/screens/LoginScreen.tsx:38", "shortDescription": {"text": "Commented-code block (5 lines) in mobile/src/screens/LoginScreen.tsx:38"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-9b660846640337b8", "name": "Commented-code block (5 lines) in mobile/src/screens/MarketingScreen.tsx:250", "shortDescription": {"text": "Commented-code block (5 lines) in mobile/src/screens/MarketingScreen.tsx:250"}, "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-926ee93a754e6a5a", "name": "Commented-code block (10 lines) in mobile/src/screens/CheckCreateScreen.tsx:110", "shortDescription": {"text": "Commented-code block (10 lines) in mobile/src/screens/CheckCreateScreen.tsx:110"}, "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-8ccaf14e92f81e1e", "name": "Commented-code block (5 lines) in mobile/src/screens/ClientDetailScreen.tsx:187", "shortDescription": {"text": "Commented-code block (5 lines) in mobile/src/screens/ClientDetailScreen.tsx:187"}, "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-74ecc32d61aa1dc9", "name": "Commented-code block (5 lines) in mobile/src/screens/UsersScreen.tsx:137", "shortDescription": {"text": "Commented-code block (5 lines) in mobile/src/screens/UsersScreen.tsx:137"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-c75729bda0f9b787", "name": "Commented-code block (5 lines) in mobile/src/screens/EquipmentScreen.tsx:108", "shortDescription": {"text": "Commented-code block (5 lines) in mobile/src/screens/EquipmentScreen.tsx:108"}, "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-88d0e20e1a0b853d", "name": "Commented-code block (6 lines) in mobile/src/screens/CallsScreen.tsx:90", "shortDescription": {"text": "Commented-code block (6 lines) in mobile/src/screens/CallsScreen.tsx:90"}, "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-ce0bb8690922ebfc", "name": "Commented-code block (7 lines) in mobile/src/screens/ProductsScreen.tsx:65", "shortDescription": {"text": "Commented-code block (7 lines) in mobile/src/screens/ProductsScreen.tsx:65"}, "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-5783964bd5d0433c", "name": "Commented-code block (7 lines) in mobile/src/screens/MoreScreen.tsx:62", "shortDescription": {"text": "Commented-code block (7 lines) in mobile/src/screens/MoreScreen.tsx:62"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-c8ca33ddeb5ff38c", "name": "Commented-code block (5 lines) in mobile/src/screens/ServicesScreen.tsx:40", "shortDescription": {"text": "Commented-code block (5 lines) in mobile/src/screens/ServicesScreen.tsx:40"}, "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-0b4d1d6973c7d6f6", "name": "Commented-code block (6 lines) in mobile/src/screens/SalaryScreen.tsx:340", "shortDescription": {"text": "Commented-code block (6 lines) in mobile/src/screens/SalaryScreen.tsx:340"}, "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-2a90c24b8ff1f3b2", "name": "Commented-code block (6 lines) in mobile/src/screens/EmployeeDetailScreen.tsx:242", "shortDescription": {"text": "Commented-code block (6 lines) in mobile/src/screens/EmployeeDetailScreen.tsx:242"}, "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-fb835397bc8b83a9", "name": "Commented-code block (9 lines) in mobile/src/screens/ExpensesScreen.tsx:164", "shortDescription": {"text": "Commented-code block (9 lines) in mobile/src/screens/ExpensesScreen.tsx:164"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-54bbafb2ff4998a2", "name": "Commented-code block (6 lines) in mobile/src/screens/ScheduleScreen.tsx:214", "shortDescription": {"text": "Commented-code block (6 lines) in mobile/src/screens/ScheduleScreen.tsx:214"}, "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-b88cf96b56a91a81", "name": "Commented-code block (5 lines) in mobile/src/screens/ReportsScreen.tsx:394", "shortDescription": {"text": "Commented-code block (5 lines) in mobile/src/screens/ReportsScreen.tsx:394"}, "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-bdda8514f50f5576", "name": "Commented-code block (6 lines) in mobile/src/screens/CheckDetailScreen.tsx:247", "shortDescription": {"text": "Commented-code block (6 lines) in mobile/src/screens/CheckDetailScreen.tsx:247"}, "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-19b7fbf7a5712192", "name": "Commented-code block (5 lines) in mobile/src/screens/SuppliersScreen.tsx:52", "shortDescription": {"text": "Commented-code block (5 lines) in mobile/src/screens/SuppliersScreen.tsx:52"}, "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-c57894be07e79d61", "name": "Commented-code block (5 lines) in mobile/src/screens/DashboardScreen.tsx:77", "shortDescription": {"text": "Commented-code block (5 lines) in mobile/src/screens/DashboardScreen.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-1c98eb66f49f08c7", "name": "Commented-code block (6 lines) in mobile/src/screens/ClientsScreen.tsx:51", "shortDescription": {"text": "Commented-code block (6 lines) in mobile/src/screens/ClientsScreen.tsx:51"}, "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-53e1af981f5de669", "name": "Commented-code block (11 lines) in mobile/src/screens/ChecksScreen.tsx:132", "shortDescription": {"text": "Commented-code block (11 lines) in mobile/src/screens/ChecksScreen.tsx: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-c763865419ecf288", "name": "Commented-code block (8 lines) in mobile/src/screens/SupplierDetailScreen.tsx:191", "shortDescription": {"text": "Commented-code block (8 lines) in mobile/src/screens/SupplierDetailScreen.tsx:191"}, "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-c04faf32332da488", "name": "Commented-code block (7 lines) in mobile/src/utils/persistentCache.ts:49", "shortDescription": {"text": "Commented-code block (7 lines) in mobile/src/utils/persistentCache.ts: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-b68feeb62452de64", "name": "Commented-code block (5 lines) in mobile/src/utils/__tests__/sharedPlate.test.ts:201", "shortDescription": {"text": "Commented-code block (5 lines) in mobile/src/utils/__tests__/sharedPlate.test.ts:201"}, "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-74f26c93688ca7e4", "name": "Commented-code block (5 lines) in mobile/src/platform/iosSurface.ts:91", "shortDescription": {"text": "Commented-code block (5 lines) in mobile/src/platform/iosSurface.ts:91"}, "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-6b514d43c1983a0a", "name": "Commented-code block (5 lines) in mobile/src/components/FeatureGate.tsx:52", "shortDescription": {"text": "Commented-code block (5 lines) in mobile/src/components/FeatureGate.tsx:52"}, "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-9c56b26b004c3de4", "name": "Commented-code block (5 lines) in mobile/src/components/ClientListRow.tsx:95", "shortDescription": {"text": "Commented-code block (5 lines) in mobile/src/components/ClientListRow.tsx: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-6d3fd1bc63fa13e4", "name": "Commented-code block (5 lines) in mobile/src/components/DateTimePickerModal.tsx:66", "shortDescription": {"text": "Commented-code block (5 lines) in mobile/src/components/DateTimePickerModal.tsx:66"}, "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-e6486919dcf9b74e", "name": "Commented-code block (7 lines) in mobile/src/components/SalaryEnvelopeAnimation.tsx:194", "shortDescription": {"text": "Commented-code block (7 lines) in mobile/src/components/SalaryEnvelopeAnimation.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-ce7505043da49e95", "name": "Commented-code block (6 lines) in mobile/src/components/ProductPickerModal.tsx:30", "shortDescription": {"text": "Commented-code block (6 lines) in mobile/src/components/ProductPickerModal.tsx:30"}, "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-153318c329fcdd3e", "name": "Commented-code block (5 lines) in mobile/src/components/Modal.tsx:63", "shortDescription": {"text": "Commented-code block (5 lines) in mobile/src/components/Modal.tsx:63"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-f4d1e20d96b16de2", "name": "Commented-code block (6 lines) in mobile/src/components/AnimatedCard.tsx:31", "shortDescription": {"text": "Commented-code block (6 lines) in mobile/src/components/AnimatedCard.tsx:31"}, "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-081209b343ea5e63", "name": "Commented-code block (7 lines) in mobile/src/components/SearchInput.tsx:18", "shortDescription": {"text": "Commented-code block (7 lines) in mobile/src/components/SearchInput.tsx:18"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-5755a044a45b8134", "name": "Commented-code block (6 lines) in mobile/src/components/RussianPlateInput.tsx:177", "shortDescription": {"text": "Commented-code block (6 lines) in mobile/src/components/RussianPlateInput.tsx:177"}, "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-e13ed8a327c1e90e", "name": "Commented-code block (5 lines) in mobile/src/components/ClientCallsSection.tsx:69", "shortDescription": {"text": "Commented-code block (5 lines) in mobile/src/components/ClientCallsSection.tsx:69"}, "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-7d6c793883886ce4", "name": "Commented-code block (9 lines) in mobile/src/components/ActiveWarrantiesSection.tsx:185", "shortDescription": {"text": "Commented-code block (9 lines) in mobile/src/components/ActiveWarrantiesSection.tsx:185"}, "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-f7d2389b995f701c", "name": "Commented-code block (5 lines) in mobile/src/components/ModalBlurBackdrop.tsx:53", "shortDescription": {"text": "Commented-code block (5 lines) in mobile/src/components/ModalBlurBackdrop.tsx:53"}, "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-2355545c8f717bcb", "name": "Commented-code block (7 lines) in mobile/src/components/icons/ioniconsMap.ts:372", "shortDescription": {"text": "Commented-code block (7 lines) in mobile/src/components/icons/ioniconsMap.ts: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-52232aab96fdd2c6", "name": "Commented-code block (5 lines) in mobile/src/contexts/AuthContext.tsx:64", "shortDescription": {"text": "Commented-code block (5 lines) in mobile/src/contexts/AuthContext.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-db55f9948c0d50c8", "name": "Commented-code block (6 lines) in mobile/plugins/withWidgetExtension.js:23", "shortDescription": {"text": "Commented-code block (6 lines) in mobile/plugins/withWidgetExtension.js: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-2b2a0e9158435ef6", "name": "Commented-code block (5 lines) in backend/src/schedule/schedule.service.ts:17", "shortDescription": {"text": "Commented-code block (5 lines) in backend/src/schedule/schedule.service.ts: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-996cb348fa43fb70", "name": "Commented-code block (6 lines) in backend/src/employees/employees.service.ts:228", "shortDescription": {"text": "Commented-code block (6 lines) in backend/src/employees/employees.service.ts:228"}, "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-4bdc6a84fd2afa8a", "name": "Commented-code block (5 lines) in backend/src/users/users.controller.ts:9", "shortDescription": {"text": "Commented-code block (5 lines) in backend/src/users/users.controller.ts:9"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-d656e80e83d73363", "name": "Commented-code block (10 lines) in backend/src/push/push.service.ts:13", "shortDescription": {"text": "Commented-code block (10 lines) in backend/src/push/push.service.ts:13"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-5ba1d0b892c31b09", "name": "Commented-code block (5 lines) in backend/src/auth/jwt.strategy.ts:30", "shortDescription": {"text": "Commented-code block (5 lines) in backend/src/auth/jwt.strategy.ts:30"}, "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-95f8032539b546b1", "name": "Commented-code block (5 lines) in backend/src/stock-movements/stock-movements.service.ts:210", "shortDescription": {"text": "Commented-code block (5 lines) in backend/src/stock-movements/stock-movements.service.ts:210"}, "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-c30ccc373e7c5a74", "name": "Commented-code block (5 lines) in backend/src/stock-movements/stock-movements.controller.ts:84", "shortDescription": {"text": "Commented-code block (5 lines) in backend/src/stock-movements/stock-movements.controller.ts: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-66dc5b490521b600", "name": "Commented-code block (5 lines) in backend/src/common/field-filter.ts:1", "shortDescription": {"text": "Commented-code block (5 lines) in backend/src/common/field-filter.ts: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-0ebd534be521bb86", "name": "Commented-code block (5 lines) in backend/src/common/guards/rate-limit.guard.ts:61", "shortDescription": {"text": "Commented-code block (5 lines) in backend/src/common/guards/rate-limit.guard.ts:61"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-d0d538eec2b2a6b6", "name": "Commented-code block (5 lines) in backend/src/tenants/tenants.service.ts:79", "shortDescription": {"text": "Commented-code block (5 lines) in backend/src/tenants/tenants.service.ts:79"}, "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-d4aebb0e5f14e178", "name": "Commented-code block (5 lines) in backend/src/uploads/storage.service.ts:19", "shortDescription": {"text": "Commented-code block (5 lines) in backend/src/uploads/storage.service.ts:19"}, "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-5ff0e0bc62097951", "name": "`fetch()` without try/.catch or AbortSignal \u2014 backend/src/marketing/marketing.service.ts:53", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 backend/src/marketing/marketing.service.ts: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-ab455902836eeb60", "name": "Commented-code block (7 lines) in backend/src/marketing/marketing.controller.ts:116", "shortDescription": {"text": "Commented-code block (7 lines) in backend/src/marketing/marketing.controller.ts:116"}, "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-8d4624f862e5683a", "name": "Commented-code block (5 lines) in backend/src/calls/calls.service.ts:260", "shortDescription": {"text": "Commented-code block (5 lines) in backend/src/calls/calls.service.ts:260"}, "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-55229b807846dba4", "name": "Commented-code block (5 lines) in backend/src/suppliers/suppliers.controller.ts:68", "shortDescription": {"text": "Commented-code block (5 lines) in backend/src/suppliers/suppliers.controller.ts:68"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-db27efb4f3a0a259", "name": "Commented-code block (5 lines) in backend/src/suppliers/suppliers.service.ts:117", "shortDescription": {"text": "Commented-code block (5 lines) in backend/src/suppliers/suppliers.service.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-5f303289e5a141c6", "name": "Commented-code block (8 lines) in backend/src/warehouse/warehouse.service.ts:58", "shortDescription": {"text": "Commented-code block (8 lines) in backend/src/warehouse/warehouse.service.ts: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-0db016bc55d215c8", "name": "Commented-code block (5 lines) in backend/src/reports/reports.controller.ts:7", "shortDescription": {"text": "Commented-code block (5 lines) in backend/src/reports/reports.controller.ts: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-a7eec5f0c0903eb4", "name": "Commented-code block (5 lines) in backend/src/reports/reports.service.ts:268", "shortDescription": {"text": "Commented-code block (5 lines) in backend/src/reports/reports.service.ts: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-0ec1748564887d2d", "name": "Commented-code block (9 lines) in backend/src/checks/checks.service.ts:171", "shortDescription": {"text": "Commented-code block (9 lines) in backend/src/checks/checks.service.ts:171"}, "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-0d492eb353d78205", "name": "Commented-code block (5 lines) in backend/src/products/products.service.ts:118", "shortDescription": {"text": "Commented-code block (5 lines) in backend/src/products/products.service.ts:118"}, "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-f2ebb1b2cfb99770", "name": "Commented-code block (8 lines) in backend/src/warranty/warranty.service.ts:267", "shortDescription": {"text": "Commented-code block (8 lines) in backend/src/warranty/warranty.service.ts:267"}, "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-0b9912249555ef56", "name": "Commented-code block (7 lines) in backend/src/knowledge/knowledge.service.ts:318", "shortDescription": {"text": "Commented-code block (7 lines) in backend/src/knowledge/knowledge.service.ts:318"}, "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-af022f937dd5b7fd", "name": "9 env vars used in code but missing from .env.example", "shortDescription": {"text": "9 env vars used in code but missing from .env.example"}, "fullDescription": {"text": "Drift between code and config docs. The first few: `APP_URL`, `DATABASE_URL`, `DB_HOST`, `DB_NAME`, `DB_PORT`, `DB_USER`, `NODE_ENV`, `PORT` + 1 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-851f124dbde0e5d6", "name": "Frontend route `/review/:token` has no Link/navigate to it \u2014 frontend/src/App.tsx", "shortDescription": {"text": "Frontend route `/review/:token` 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-0dc6ea9a3f2de04d", "name": "Frontend route `/checks/:id/edit` has no Link/navigate to it \u2014 frontend/src/App.tsx", "shortDescription": {"text": "Frontend route `/checks/:id/edit` 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-f5240130ae7f21e2", "name": "Frontend route `/checks/:id` has no Link/navigate to it \u2014 frontend/src/App.tsx", "shortDescription": {"text": "Frontend route `/checks/:id` 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-8f668b1ce595eaf9", "name": "Frontend route `/clients/:id` has no Link/navigate to it \u2014 frontend/src/App.tsx", "shortDescription": {"text": "Frontend route `/clients/:id` 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-90351fcf18f2bed2", "name": "Frontend route `/cars` has no Link/navigate to it \u2014 frontend/src/App.tsx", "shortDescription": {"text": "Frontend route `/cars` 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-63df1bb2693cd0d0", "name": "Frontend route `/suppliers/:id` has no Link/navigate to it \u2014 frontend/src/App.tsx", "shortDescription": {"text": "Frontend route `/suppliers/:id` 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-24e38f37f16dac2b", "name": "Frontend route `/employees/:id` has no Link/navigate to it \u2014 frontend/src/App.tsx", "shortDescription": {"text": "Frontend route `/employees/:id` 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-7cac8a06a730a35b", "name": "Frontend route `/admin` has no Link/navigate to it \u2014 frontend/src/App.tsx", "shortDescription": {"text": "Frontend route `/admin` 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-784b9ca239ab8e0e", "name": "Frontend route `/admin/tenants/:id` has no Link/navigate to it \u2014 frontend/src/App.tsx", "shortDescription": {"text": "Frontend route `/admin/tenants/:id` 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-1ed45faf9ecafe16", "name": "Dangling fetch: GET /dashboard (frontend/src/hooks/useRoutePrefetch.ts:36)", "shortDescription": {"text": "Dangling fetch: GET /dashboard (frontend/src/hooks/useRoutePrefetch.ts:36)"}, "fullDescription": {"text": "`frontend/src/hooks/useRoutePrefetch.ts:36` calls `GET /dashboard` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/dashboard`\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-16543be1e31225c4", "name": "Dangling fetch: GET https://sms.ru/sms/send?${params.toString()} (backend/src/marketing/marketing.service.ts:53)", "shortDescription": {"text": "Dangling fetch: GET https://sms.ru/sms/send?${params.toString()} (backend/src/marketing/marketing.service.ts:53)"}, "fullDescription": {"text": "`backend/src/marketing/marketing.service.ts:53` calls `GET https://sms.ru/sms/send?${params.toString()}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/sms.ru/sms/send`\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-67d28fa8cd6bb12f", "name": "Unused endpoint: PUT /", "shortDescription": {"text": "Unused endpoint: PUT /"}, "fullDescription": {"text": "`frontend/public/sw.js` declares `PUT /` 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-c059f57186114027", "name": "Unused endpoint: POST /auth/logout", "shortDescription": {"text": "Unused endpoint: POST /auth/logout"}, "fullDescription": {"text": "`shared/api/createServices.ts` declares `POST /auth/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-1378adfa31e352e3", "name": "Unused endpoint: POST /users/order", "shortDescription": {"text": "Unused endpoint: POST /users/order"}, "fullDescription": {"text": "`shared/api/createServices.ts` declares `POST /users/order` 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-186db8a11675eb25", "name": "Unused endpoint: GET /clients/export-csv", "shortDescription": {"text": "Unused endpoint: GET /clients/export-csv"}, "fullDescription": {"text": "`shared/api/createServices.ts` declares `GET /clients/export-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}}, {"id": "scanner-3bb3072239c339e9", "name": "Unused endpoint: GET /products/export-csv", "shortDescription": {"text": "Unused endpoint: GET /products/export-csv"}, "fullDescription": {"text": "`shared/api/createServices.ts` declares `GET /products/export-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}}, {"id": "scanner-4f7a28f63569c93a", "name": "Unused endpoint: PATCH /schedule/", "shortDescription": {"text": "Unused endpoint: PATCH /schedule/"}, "fullDescription": {"text": "`shared/api/createServices.ts` declares `PATCH /schedule/` 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-ae6a9aa131d04375", "name": "Unused endpoint: POST /expenses", "shortDescription": {"text": "Unused endpoint: POST /expenses"}, "fullDescription": {"text": "`shared/api/createServices.ts` declares `POST /expenses` 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-18acb0c37b391c42", "name": "Unused endpoint: PATCH /warehouse/categories/order", "shortDescription": {"text": "Unused endpoint: PATCH /warehouse/categories/order"}, "fullDescription": {"text": "`shared/api/createServices.ts` declares `PATCH /warehouse/categories/order` 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-5e2cf47f45be5160", "name": "Unused endpoint: POST /marketing/integrations/test", "shortDescription": {"text": "Unused endpoint: POST /marketing/integrations/test"}, "fullDescription": {"text": "`shared/api/createServices.ts` declares `POST /marketing/integrations/test` 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-c4ae3416c11ccb52", "name": "Unused endpoint: POST /marketing/sms/send", "shortDescription": {"text": "Unused endpoint: POST /marketing/sms/send"}, "fullDescription": {"text": "`shared/api/createServices.ts` declares `POST /marketing/sms/send` 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-3013d604333bdde3", "name": "Unused endpoint: POST /equipment/categories", "shortDescription": {"text": "Unused endpoint: POST /equipment/categories"}, "fullDescription": {"text": "`shared/api/createServices.ts` declares `POST /equipment/categories` 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-fb3b1442017f5d51", "name": "Unused endpoint: POST /equipment/storage", "shortDescription": {"text": "Unused endpoint: POST /equipment/storage"}, "fullDescription": {"text": "`shared/api/createServices.ts` declares `POST /equipment/storage` 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-6dbfe51563f78b35", "name": "Unused endpoint: POST /equipment/issue", "shortDescription": {"text": "Unused endpoint: POST /equipment/issue"}, "fullDescription": {"text": "`shared/api/createServices.ts` declares `POST /equipment/issue` 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-8ca11260ab9517b1", "name": "Unused endpoint: POST /push/token", "shortDescription": {"text": "Unused endpoint: POST /push/token"}, "fullDescription": {"text": "`shared/api/createServices.ts` declares `POST /push/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-450e66b9b4b20011", "name": "Unused endpoint: DELETE /push/token", "shortDescription": {"text": "Unused endpoint: DELETE /push/token"}, "fullDescription": {"text": "`shared/api/createServices.ts` declares `DELETE /push/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-281dc16c0db3ee1f", "name": "Unused endpoint: GET /schedule/today", "shortDescription": {"text": "Unused endpoint: GET /schedule/today"}, "fullDescription": {"text": "`backend/src/schedule/schedule.controller.ts` declares `GET /schedule/today` 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-5133bd90ebec0c76", "name": "Unused endpoint: GET /schedule/my-stats", "shortDescription": {"text": "Unused endpoint: GET /schedule/my-stats"}, "fullDescription": {"text": "`backend/src/schedule/schedule.controller.ts` declares `GET /schedule/my-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-345f78d08a21615d", "name": "Unused endpoint: GET /schedule/work-modes", "shortDescription": {"text": "Unused endpoint: GET /schedule/work-modes"}, "fullDescription": {"text": "`backend/src/schedule/schedule.controller.ts` declares `GET /schedule/work-modes` 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-27bfe9f9444d787a", "name": "Unused endpoint: GET /schedule/settings", "shortDescription": {"text": "Unused endpoint: GET /schedule/settings"}, "fullDescription": {"text": "`backend/src/schedule/schedule.controller.ts` declares `GET /schedule/settings` 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-adec9415452876e4", "name": "Unused endpoint: POST /schedule/settings", "shortDescription": {"text": "Unused endpoint: POST /schedule/settings"}, "fullDescription": {"text": "`backend/src/schedule/schedule.controller.ts` declares `POST /schedule/settings` 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-563afa40afc57c0d", "name": "Unused endpoint: POST /schedule/work-modes", "shortDescription": {"text": "Unused endpoint: POST /schedule/work-modes"}, "fullDescription": {"text": "`backend/src/schedule/schedule.controller.ts` declares `POST /schedule/work-modes` 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-b8774664215bb2d8", "name": "Unused endpoint: POST /schedule/apply-work-mode", "shortDescription": {"text": "Unused endpoint: POST /schedule/apply-work-mode"}, "fullDescription": {"text": "`backend/src/schedule/schedule.controller.ts` declares `POST /schedule/apply-work-mode` 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-35599ac8b224a585", "name": "Unused endpoint: PATCH /schedule/work-modes/:id", "shortDescription": {"text": "Unused endpoint: PATCH /schedule/work-modes/:id"}, "fullDescription": {"text": "`backend/src/schedule/schedule.controller.ts` declares `PATCH /schedule/work-modes/: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-6f8dfd61f772c68e", "name": "Unused endpoint: PATCH /schedule/:id", "shortDescription": {"text": "Unused endpoint: PATCH /schedule/:id"}, "fullDescription": {"text": "`backend/src/schedule/schedule.controller.ts` declares `PATCH /schedule/: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-c4e1f13d80a4c888", "name": "Unused endpoint: DELETE /schedule/:id", "shortDescription": {"text": "Unused endpoint: DELETE /schedule/:id"}, "fullDescription": {"text": "`backend/src/schedule/schedule.controller.ts` declares `DELETE /schedule/: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-6a8aee6237cdf578", "name": "Unused endpoint: PATCH /employees/:id", "shortDescription": {"text": "Unused endpoint: PATCH /employees/:id"}, "fullDescription": {"text": "`backend/src/employees/employees.controller.ts` declares `PATCH /employees/: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-f11f1401bc4f17d4", "name": "Unused endpoint: POST /employees/:id/photo", "shortDescription": {"text": "Unused endpoint: POST /employees/:id/photo"}, "fullDescription": {"text": "`backend/src/employees/employees.controller.ts` declares `POST /employees/:id/photo` 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-644e7dae77880913", "name": "Unused endpoint: GET /employees/:id/full-profile", "shortDescription": {"text": "Unused endpoint: GET /employees/:id/full-profile"}, "fullDescription": {"text": "`backend/src/employees/employees.controller.ts` declares `GET /employees/:id/full-profile` 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-f261995a14e6370e", "name": "Unused endpoint: GET /employees/:id/documents", "shortDescription": {"text": "Unused endpoint: GET /employees/:id/documents"}, "fullDescription": {"text": "`backend/src/employees/employees.controller.ts` declares `GET /employees/:id/documents` 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-6d72561bea9c07c6", "name": "Unused endpoint: GET /employees/:id/documents/:docId/file", "shortDescription": {"text": "Unused endpoint: GET /employees/:id/documents/:docId/file"}, "fullDescription": {"text": "`backend/src/employees/employees.controller.ts` declares `GET /employees/:id/documents/:docId/file` 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-381257b6450bcaa3", "name": "Unused endpoint: POST /employees/:id/documents", "shortDescription": {"text": "Unused endpoint: POST /employees/:id/documents"}, "fullDescription": {"text": "`backend/src/employees/employees.controller.ts` declares `POST /employees/:id/documents` 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-e6bb24a871c64dbd", "name": "Unused endpoint: DELETE /employees/:id/documents/:docId", "shortDescription": {"text": "Unused endpoint: DELETE /employees/:id/documents/:docId"}, "fullDescription": {"text": "`backend/src/employees/employees.controller.ts` declares `DELETE /employees/:id/documents/:docId` 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-49021996c9b75108", "name": "Unused endpoint: GET /employees/:id/achievements", "shortDescription": {"text": "Unused endpoint: GET /employees/:id/achievements"}, "fullDescription": {"text": "`backend/src/employees/employees.controller.ts` declares `GET /employees/:id/achievements` 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-3d4c8c3a5db2ed7f", "name": "Unused endpoint: POST /employees/:id/achievements", "shortDescription": {"text": "Unused endpoint: POST /employees/:id/achievements"}, "fullDescription": {"text": "`backend/src/employees/employees.controller.ts` declares `POST /employees/:id/achievements` 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-40c781197b533779", "name": "Unused endpoint: DELETE /employees/:id/achievements/:achId", "shortDescription": {"text": "Unused endpoint: DELETE /employees/:id/achievements/:achId"}, "fullDescription": {"text": "`backend/src/employees/employees.controller.ts` declares `DELETE /employees/:id/achievements/:achId` 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-d44617831f14e83d", "name": "Unused endpoint: GET /users/masters", "shortDescription": {"text": "Unused endpoint: GET /users/masters"}, "fullDescription": {"text": "`backend/src/users/users.controller.ts` declares `GET /users/masters` 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-10c7a6090740a812", "name": "Unused endpoint: GET /users/dismissed", "shortDescription": {"text": "Unused endpoint: GET /users/dismissed"}, "fullDescription": {"text": "`backend/src/users/users.controller.ts` declares `GET /users/dismissed` 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-784e5545d162f56e", "name": "Unused endpoint: POST /users/:id/restore", "shortDescription": {"text": "Unused endpoint: POST /users/:id/restore"}, "fullDescription": {"text": "`backend/src/users/users.controller.ts` declares `POST /users/:id/restore` 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-f41365c956550d92", "name": "Unused endpoint: POST /users/:id/purge", "shortDescription": {"text": "Unused endpoint: POST /users/:id/purge"}, "fullDescription": {"text": "`backend/src/users/users.controller.ts` declares `POST /users/:id/purge` 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-41aa9e92da3f14ad", "name": "Unused endpoint: GET /users/:id", "shortDescription": {"text": "Unused endpoint: GET /users/:id"}, "fullDescription": {"text": "`backend/src/users/users.controller.ts` declares `GET /users/: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-a2da8d08e12b122c", "name": "Unused endpoint: PATCH /users/:id", "shortDescription": {"text": "Unused endpoint: PATCH /users/:id"}, "fullDescription": {"text": "`backend/src/users/users.controller.ts` declares `PATCH /users/: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-79406b9fd85263bf", "name": "Unused endpoint: DELETE /users/:id", "shortDescription": {"text": "Unused endpoint: DELETE /users/:id"}, "fullDescription": {"text": "`backend/src/users/users.controller.ts` declares `DELETE /users/: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-4d589476d8bb8a43", "name": "Unused endpoint: GET /users/:id/product-commissions", "shortDescription": {"text": "Unused endpoint: GET /users/:id/product-commissions"}, "fullDescription": {"text": "`backend/src/users/users.controller.ts` declares `GET /users/:id/product-commissions` 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-be70c3d39d9949f4", "name": "Unused endpoint: POST /users/:id/product-commissions", "shortDescription": {"text": "Unused endpoint: POST /users/:id/product-commissions"}, "fullDescription": {"text": "`backend/src/users/users.controller.ts` declares `POST /users/:id/product-commissions` 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-999dff0ea581b4b8", "name": "Unused endpoint: GET /notifications/preferences", "shortDescription": {"text": "Unused endpoint: GET /notifications/preferences"}, "fullDescription": {"text": "`backend/src/notifications/notifications.controller.ts` declares `GET /notifications/preferences` 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-c572df6645eb8b5a", "name": "Unused endpoint: PUT /notifications/preferences", "shortDescription": {"text": "Unused endpoint: PUT /notifications/preferences"}, "fullDescription": {"text": "`backend/src/notifications/notifications.controller.ts` declares `PUT /notifications/preferences` 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-1340a23856cf2ca4", "name": "Unused endpoint: GET /notifications/broadcasts/unseen", "shortDescription": {"text": "Unused endpoint: GET /notifications/broadcasts/unseen"}, "fullDescription": {"text": "`backend/src/notifications/notifications.controller.ts` declares `GET /notifications/broadcasts/unseen` 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-e4d75d43589d5749", "name": "Unused endpoint: POST /notifications/broadcasts/:id/seen", "shortDescription": {"text": "Unused endpoint: POST /notifications/broadcasts/:id/seen"}, "fullDescription": {"text": "`backend/src/notifications/notifications.controller.ts` declares `POST /notifications/broadcasts/:id/seen` 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-8206e0572124202c", "name": "Unused endpoint: POST /notifications/broadcast", "shortDescription": {"text": "Unused endpoint: POST /notifications/broadcast"}, "fullDescription": {"text": "`backend/src/notifications/notifications.controller.ts` declares `POST /notifications/broadcast` 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-8fdbacfe9430a6ed", "name": "Unused endpoint: POST /auth/login", "shortDescription": {"text": "Unused endpoint: POST /auth/login"}, "fullDescription": {"text": "`backend/src/auth/auth.controller.ts` declares `POST /auth/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}}]}}, "automationDetails": {"id": "repobility/17806"}, "properties": {"repository": "ramxak2025/zr-auto-pro", "repoUrl": "https://github.com/ramxak2025/zr-auto-pro", "branch": "main"}, "results": [{"ruleId": "foundry_unresolved_feedback", "level": "warning", "message": {"text": "Foundry mined unresolved feedback: ramxak2025/zr-auto-pro"}, "properties": {"repobilityId": 369482, "scanner": "foundry_dataset", "fingerprint": "a1fba057be3351fecf8d6f44d2bdbd93278c6d9fed1292bd5c8eafac0978e38b", "category": "practices", "severity": "medium", "confidence": 0.7, "triageState": "open", "verdict": "needs_review", "isResolved": false, "reason": "Imported from mined Foundry/Fable5 evidence with real GitHub/source provenance. Review source_id before acting.", "evidence": {"meta": {"kind": "graph_query_record", "title": "Human feedback without linked fix evidence", "intent": "Negative/unresolved examples that should not be hallucinated into fixes.", "labels": {"test_or_ci": 2, "test_ci_gap": 1, "api_or_backend": 2, "docs_or_claims": 6, "source_or_other": 3, "deployment_env_gap": 1, "dependency_or_build": 2, "mostly follows blueprint": 1, "issue_or_pull_request_thread": 1, "not_resolved_or_not_observed": 4, "blueprint_human_gap_disagreement": 1, "human_reported_issue_no_linked_fix": 2, "thread_has_human_issue_without_fix_context": 2}, "source": "graph_query_export", "motif_id": "unlinked_feedback_needs_evidence", "outcomes": {"not_resolved_or_not_observed": 8}, "polarity": "bad", "query_id": "unresolved_feedback", "severity": "medium", "ci_labels": {}, "synthetic": false, "edge_count": 71, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 2, "thread_has_comment": 2, "thread_touches_file": 15, "alignment_uses_comment": 1, "alignment_uses_finding": 1, "chain_has_link_quality": 5, "comment_aligns_finding": 1, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "issue_chain_touches_file": 12, "thread_has_comment_chain": 2, "comment_chain_touches_file": 24, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 2}, "node_count": 30, "node_types": {"repo": 1, "thread": 1, "comment": 2, "pr_file": 15, "alignment": 1, "fix_outcome": 1, "issue_chain": 1, "link_quality": 5, "comment_chain": 2, "blueprint_finding": 1}, "query_type": "motif_query", "thread_key": "ramxak2025/zr-auto-pro#9", "issue_number": "9", "quality_tiers": {"unresolved": 4, "assumption_check": 1}, "repo_full_name": "ramxak2025/zr-auto-pro", "training_usage": "negative_or_unresolved", "source_motif_id": "graph-pattern-motif-thread-21ca018599bdba0f", "graph_gold_label": "assumption_check", "changed_file_labels": {"test_or_ci": 10, "api_or_backend": 10, "docs_or_claims": 30, "source_or_other": 15, "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: assumption_check\nRepo: ramxak2025/zr-auto-pro\nThread: ramxak2025/zr-auto-pro#9\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: ramxak2025/zr-auto-pro\nThread: ramxak2025/zr-auto-pro#9\nGraph gold label: assumption_check\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: ramxak2025/zr-auto-pro#9\nRepo: ramxak2025/zr-auto-pro\nIssue/PR number: 9\nGraph consistency label: assumption_check\nNodes: 30\nEdges: 71\nNode types: {'pr_file': 15, 'link_quality': 5, 'comment': 2, 'comment_chain': 2, 'thread': 1, 'repo': 1, 'issue_chain': 1, 'fix_outcome': 1, 'alignment': 1, 'blueprint_finding': 1}\nEdge types: {'comment_chain_touches_file': 24, 'thread_touches_file': 15, 'issue_chain_touches_file': 12, 'chain_has_link_quality': 5, '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, 'alignment_uses_comment': 1, 'alignment_uses_finding': 1, 'comment_aligns_finding': 1}\nLabels: {'docs_or_claims': 6, 'not_resolved_or_not_observed': 4, 'source_or_other': 3, 'api_or_backend': 2, 'test_or_ci': 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, 'test_ci_gap': 1, 'deployment_env_gap': 1, 'blueprint_human_gap_disagreement': 1, 'mostly follows blueprint': 1}\nOutcomes: {'not_resolved_or_not_observed': 8}\nQuality tiers: {'unresolved': 4, 'assumption_check': 1}\nCI labels: {}\nCurriculum targets:\n- Teach models to preserve unresolved human feedback instead of hallucinating fixes.\n- Build issue-to-regression examples where no accepted fix exists yet.\nAssumption checks:\n- Can a commit be linked by issue number, SHA, changed path, or time window?\n- If no link exists, is this explicitly labelled unresolved?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/ramxak2025/zr-auto-pro", "source_id": "graph-query-motif_query-66491428fe7948dc", "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": "ramxak2025/zr-auto-pro", "source_dataset": "graph_queries/unresolved_feedback", "training_usage": "negative_or_unresolved"}}}, {"ruleId": "foundry_unresolved_feedback", "level": "warning", "message": {"text": "Foundry mined unresolved feedback: ramxak2025/zr-auto-pro"}, "properties": {"repobilityId": 369481, "scanner": "foundry_dataset", "fingerprint": "e183abc366249f92f5edcd27d65cab70e0073f8606d6a4caeb32f7ead28730ac", "category": "practices", "severity": "medium", "confidence": 0.7, "triageState": "open", "verdict": "needs_review", "isResolved": false, "reason": "Imported from mined Foundry/Fable5 evidence with real GitHub/source provenance. Review source_id before acting.", "evidence": {"meta": {"kind": "graph_query_record", "title": "Human feedback without linked fix evidence", "intent": "Negative/unresolved examples that should not be hallucinated into fixes.", "labels": {"bug_fix": 1, "api_or_backend": 4, "ui_or_frontend": 15, "ci_success_signal": 1, "deployment_env_gap": 1, "api_integration_gap": 1, "mostly follows blueprint": 1, "issue_or_pull_request_thread": 1, "not_resolved_or_not_observed": 1, "blueprint_human_gap_disagreement": 1, "human_reported_issue_no_linked_fix": 1, "thread_has_human_issue_and_fix_context": 2, "claimed_resolved_with_verification_signal": 3, "human_reported_issue_then_verified_fix_attempt": 1}, "source": "graph_query_export", "motif_id": "unlinked_feedback_needs_evidence", "outcomes": {"not_resolved_or_not_observed": 2, "claimed_resolved_with_verification_signal": 6}, "polarity": "bad", "query_id": "unresolved_feedback", "severity": "medium", "ci_labels": {"ci_success_signal": 2}, "synthetic": false, "edge_count": 77, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 2, "thread_has_comment": 2, "thread_touches_file": 19, "comment_chain_has_ci": 1, "alignment_uses_comment": 1, "alignment_uses_finding": 1, "chain_has_link_quality": 5, "comment_aligns_finding": 1, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "issue_chain_touches_file": 12, "thread_has_comment_chain": 2, "comment_chain_links_commit": 1, "comment_chain_touches_file": 24, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 2}, "node_count": 36, "node_types": {"repo": 1, "commit": 1, "thread": 1, "comment": 2, "pr_file": 19, "alignment": 1, "ci_summary": 1, "fix_outcome": 1, "issue_chain": 1, "link_quality": 5, "comment_chain": 2, "blueprint_finding": 1}, "query_type": "motif_query", "thread_key": "ramxak2025/zr-auto-pro#8", "issue_number": "8", "quality_tiers": {"unresolved": 1, "assumption_check": 1, "weak_supervision": 3}, "repo_full_name": "ramxak2025/zr-auto-pro", "training_usage": "negative_or_unresolved", "source_motif_id": "graph-pattern-motif-thread-688f91cef592439e", "graph_gold_label": "supported_by_verification_signal", "changed_file_labels": {"api_or_backend": 20, "ui_or_frontend": 75}}, "text": "Graph query export: Human feedback without linked fix evidence\nQuery id: unresolved_feedback\nQuery type: motif_query\nIntent: Negative/unresolved examples that should not be hallucinated into fixes.\nMotif: unlinked_feedback_needs_evidence\nTraining usage: negative_or_unresolved\nGraph gold label: supported_by_verification_signal\nRepo: ramxak2025/zr-auto-pro\nThread: ramxak2025/zr-auto-pro#8\nEvidence:\nGraph motif: Human feedback exists without a linked fix\nMotif id: unlinked_feedback_needs_evidence\nPolarity: bad\nTraining usage: negative_or_unresolved\nSeverity: medium\nRepo: ramxak2025/zr-auto-pro\nThread: ramxak2025/zr-auto-pro#8\nGraph gold label: supported_by_verification_signal\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: ramxak2025/zr-auto-pro#8\nRepo: ramxak2025/zr-auto-pro\nIssue/PR number: 8\nGraph consistency label: supported_by_verification_signal\nNodes: 36\nEdges: 77\nNode types: {'pr_file': 19, 'link_quality': 5, 'comment': 2, 'comment_chain': 2, 'thread': 1, 'repo': 1, 'commit': 1, 'ci_summary': 1, 'issue_chain': 1, 'fix_outcome': 1, 'alignment': 1, 'blueprint_finding': 1}\nEdge types: {'comment_chain_touches_file': 24, 'thread_touches_file': 19, 'issue_chain_touches_file': 12, 'chain_has_link_quality': 5, 'thread_has_comment': 2, 'thread_has_comment_chain': 2, 'comment_has_chain': 2, 'issue_chain_has_comment_chain': 2, 'repo_has_thread': 1, 'comment_chain_links_commit': 1, 'comment_chain_has_ci': 1, 'thread_has_issue_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1, 'alignment_uses_comment': 1, 'alignment_uses_finding': 1}\nLabels: {'ui_or_frontend': 15, 'api_or_backend': 4, 'claimed_resolved_with_verification_signal': 3, 'thread_has_human_issue_and_fix_context': 2, 'issue_or_pull_request_thread': 1, 'api_integration_gap': 1, 'deployment_env_gap': 1, 'human_reported_issue_then_verified_fix_attempt': 1, 'bug_fix': 1, 'ci_success_signal': 1, 'human_reported_issue_no_linked_fix': 1, 'not_resolved_or_not_observed': 1, 'blueprint_human_gap_disagreement': 1, 'mostly follows blueprint': 1}\nOutcomes: {'claimed_resolved_with_verification_signal': 6, 'not_resolved_or_not_observed': 2}\nQuality tiers: {'weak_supervision': 3, 'unresolved': 1, 'assumption_check': 1}\nCI labels: {'ci_success_signal': 2}\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/ramxak2025/zr-auto-pro", "source_id": "graph-query-motif_query-01a7906820e6227f", "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": "ramxak2025/zr-auto-pro", "source_dataset": "graph_queries/unresolved_feedback", "training_usage": "negative_or_unresolved"}}}, {"ruleId": "foundry_unresolved_feedback", "level": "warning", "message": {"text": "Foundry mined unresolved feedback: ramxak2025/zr-auto-pro"}, "properties": {"repobilityId": 369480, "scanner": "foundry_dataset", "fingerprint": "2c58c3bb1bfea8e7080355c3d13d4c94a99c6306560390b27b5e44f804158e4d", "category": "practices", "severity": "medium", "confidence": 0.7, "triageState": "open", "verdict": "needs_review", "isResolved": false, "reason": "Imported from mined Foundry/Fable5 evidence with real GitHub/source provenance. Review source_id before acting.", "evidence": {"meta": {"kind": "graph_query_record", "title": "Human feedback without linked fix evidence", "intent": "Negative/unresolved examples that should not be hallucinated into fixes.", "labels": {"bug_fix": 1, "api_or_backend": 3, "schema_or_data": 1, "ui_or_frontend": 1, "deployment_env_gap": 1, "data_schema_persistence": 1, "mostly follows blueprint": 1, "claimed_resolved_unverified": 3, "issue_or_pull_request_thread": 1, "not_resolved_or_not_observed": 1, "blueprint_human_gap_disagreement": 1, "human_reported_issue_no_linked_fix": 1, "human_reported_issue_then_fix_attempt": 1, "thread_has_human_issue_and_fix_context": 2}, "source": "graph_query_export", "motif_id": "unlinked_feedback_needs_evidence", "outcomes": {"claimed_resolved_unverified": 6, "not_resolved_or_not_observed": 2}, "polarity": "bad", "query_id": "unresolved_feedback", "severity": "medium", "ci_labels": {}, "synthetic": false, "edge_count": 41, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 2, "thread_has_comment": 2, "thread_touches_file": 5, "alignment_uses_comment": 1, "alignment_uses_finding": 1, "chain_has_link_quality": 5, "comment_aligns_finding": 1, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "issue_chain_touches_file": 5, "thread_has_comment_chain": 2, "comment_chain_links_commit": 1, "comment_chain_touches_file": 10, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 2}, "node_count": 21, "node_types": {"repo": 1, "commit": 1, "thread": 1, "comment": 2, "pr_file": 5, "alignment": 1, "fix_outcome": 1, "issue_chain": 1, "link_quality": 5, "comment_chain": 2, "blueprint_finding": 1}, "query_type": "motif_query", "thread_key": "ramxak2025/zr-auto-pro#7", "issue_number": "7", "quality_tiers": {"unresolved": 1, "assumption_check": 1, "weak_supervision": 3}, "repo_full_name": "ramxak2025/zr-auto-pro", "training_usage": "negative_or_unresolved", "source_motif_id": "graph-pattern-motif-thread-a96f39b3b36debe7", "graph_gold_label": "weak_supervision_needs_review", "changed_file_labels": {"api_or_backend": 15, "schema_or_data": 5, "ui_or_frontend": 5}}, "text": "Graph query export: Human feedback without linked fix evidence\nQuery id: unresolved_feedback\nQuery type: motif_query\nIntent: Negative/unresolved examples that should not be hallucinated into fixes.\nMotif: unlinked_feedback_needs_evidence\nTraining usage: negative_or_unresolved\nGraph gold label: weak_supervision_needs_review\nRepo: ramxak2025/zr-auto-pro\nThread: ramxak2025/zr-auto-pro#7\nEvidence:\nGraph motif: Human feedback exists without a linked fix\nMotif id: unlinked_feedback_needs_evidence\nPolarity: bad\nTraining usage: negative_or_unresolved\nSeverity: medium\nRepo: ramxak2025/zr-auto-pro\nThread: ramxak2025/zr-auto-pro#7\nGraph gold label: weak_supervision_needs_review\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: ramxak2025/zr-auto-pro#7\nRepo: ramxak2025/zr-auto-pro\nIssue/PR number: 7\nGraph consistency label: weak_supervision_needs_review\nNodes: 21\nEdges: 41\nNode types: {'pr_file': 5, 'link_quality': 5, 'comment': 2, 'comment_chain': 2, 'thread': 1, 'repo': 1, 'commit': 1, 'issue_chain': 1, 'fix_outcome': 1, 'alignment': 1, 'blueprint_finding': 1}\nEdge types: {'comment_chain_touches_file': 10, 'thread_touches_file': 5, 'chain_has_link_quality': 5, 'issue_chain_touches_file': 5, 'thread_has_comment': 2, 'thread_has_comment_chain': 2, 'comment_has_chain': 2, 'issue_chain_has_comment_chain': 2, 'repo_has_thread': 1, 'comment_chain_links_commit': 1, 'thread_has_issue_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1, 'alignment_uses_comment': 1, 'alignment_uses_finding': 1, 'comment_aligns_finding': 1}\nLabels: {'api_or_backend': 3, 'claimed_resolved_unverified': 3, 'thread_has_human_issue_and_fix_context': 2, 'issue_or_pull_request_thread': 1, 'data_schema_persistence': 1, 'deployment_env_gap': 1, 'schema_or_data': 1, 'ui_or_frontend': 1, 'human_reported_issue_then_fix_attempt': 1, 'bug_fix': 1, 'human_reported_issue_no_linked_fix': 1, 'not_resolved_or_not_observed': 1, 'blueprint_human_gap_disagreement': 1, 'mostly follows blueprint': 1}\nOutcomes: {'claimed_resolved_unverified': 6, 'not_resolved_or_not_observed': 2}\nQuality tiers: {'weak_supervision': 3, 'unresolved': 1, 'assumption_check': 1}\nCI labels: {}\nCurriculum targets:\n- Teach models to preserve unresolved human feedback instead of hallucinating fixes.\n- Build issue-to-regression examples where no accepted fix exists yet.\nAssumption checks:\n- Can a commit be linked by issue number, SHA, changed path, or time window?\n- If no link exists, is this explicitly labelled unresolved?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/ramxak2025/zr-auto-pro", "source_id": "graph-query-motif_query-2d4372cf80e6b270", "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": "ramxak2025/zr-auto-pro", "source_dataset": "graph_queries/unresolved_feedback", "training_usage": "negative_or_unresolved"}}}, {"ruleId": "foundry_unresolved_feedback", "level": "warning", "message": {"text": "Foundry mined unresolved feedback: ramxak2025/zr-auto-pro"}, "properties": {"repobilityId": 369479, "scanner": "foundry_dataset", "fingerprint": "26bc7340d6afe237f0fb451c7070089ef8d9c21d9c2b8c25c8ad5e681d8f468a", "category": "practices", "severity": "medium", "confidence": 0.7, "triageState": "open", "verdict": "needs_review", "isResolved": false, "reason": "Imported from mined Foundry/Fable5 evidence with real GitHub/source provenance. Review source_id before acting.", "evidence": {"meta": {"kind": "graph_query_record", "title": "Human feedback without linked fix evidence", "intent": "Negative/unresolved examples that should not be hallucinated into fixes.", "labels": {"bug_fix": 4, "schema_or_data": 1, "ui_or_frontend": 4, "source_or_other": 2, "deployment_env_gap": 1, "dependency_or_build": 3, "security_auth_secret": 1, "claimed_resolved_unverified": 3, "issue_or_pull_request_thread": 1, "not_resolved_or_not_observed": 1, "human_reported_issue_no_linked_fix": 1, "human_reported_issue_then_fix_attempt": 1, "thread_has_human_issue_and_fix_context": 2}, "source": "graph_query_export", "motif_id": "unlinked_feedback_needs_evidence", "outcomes": {"claimed_resolved_unverified": 6, "not_resolved_or_not_observed": 2}, "polarity": "bad", "query_id": "unresolved_feedback", "severity": "medium", "ci_labels": {}, "synthetic": false, "edge_count": 57, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 2, "thread_has_comment": 2, "thread_touches_file": 9, "chain_has_link_quality": 4, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "issue_chain_touches_file": 9, "thread_has_comment_chain": 2, "comment_chain_links_commit": 5, "comment_chain_touches_file": 18, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 2}, "node_count": 26, "node_types": {"repo": 1, "commit": 5, "thread": 1, "comment": 2, "pr_file": 9, "fix_outcome": 1, "issue_chain": 1, "link_quality": 4, "comment_chain": 2}, "query_type": "motif_query", "thread_key": "ramxak2025/zr-auto-pro#6", "issue_number": "6", "quality_tiers": {"unresolved": 1, "weak_supervision": 3}, "repo_full_name": "ramxak2025/zr-auto-pro", "training_usage": "negative_or_unresolved", "source_motif_id": "graph-pattern-motif-thread-41d902d817c39449", "graph_gold_label": "weak_supervision_needs_review", "changed_file_labels": {"schema_or_data": 5, "ui_or_frontend": 20, "source_or_other": 10, "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: weak_supervision_needs_review\nRepo: ramxak2025/zr-auto-pro\nThread: ramxak2025/zr-auto-pro#6\nEvidence:\nGraph motif: Human feedback exists without a linked fix\nMotif id: unlinked_feedback_needs_evidence\nPolarity: bad\nTraining usage: negative_or_unresolved\nSeverity: medium\nRepo: ramxak2025/zr-auto-pro\nThread: ramxak2025/zr-auto-pro#6\nGraph gold label: weak_supervision_needs_review\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: ramxak2025/zr-auto-pro#6\nRepo: ramxak2025/zr-auto-pro\nIssue/PR number: 6\nGraph consistency label: weak_supervision_needs_review\nNodes: 26\nEdges: 57\nNode types: {'pr_file': 9, 'commit': 5, 'link_quality': 4, 'comment': 2, 'comment_chain': 2, 'thread': 1, 'repo': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'comment_chain_touches_file': 18, 'thread_touches_file': 9, 'issue_chain_touches_file': 9, 'comment_chain_links_commit': 5, 'chain_has_link_quality': 4, 'thread_has_comment': 2, 'thread_has_comment_chain': 2, 'comment_has_chain': 2, 'issue_chain_has_comment_chain': 2, 'repo_has_thread': 1, 'thread_has_issue_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'ui_or_frontend': 4, 'bug_fix': 4, 'dependency_or_build': 3, 'claimed_resolved_unverified': 3, 'source_or_other': 2, 'thread_has_human_issue_and_fix_context': 2, 'issue_or_pull_request_thread': 1, 'security_auth_secret': 1, 'deployment_env_gap': 1, 'schema_or_data': 1, 'human_reported_issue_then_fix_attempt': 1, 'human_reported_issue_no_linked_fix': 1, 'not_resolved_or_not_observed': 1}\nOutcomes: {'claimed_resolved_unverified': 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/ramxak2025/zr-auto-pro", "source_id": "graph-query-motif_query-24397f1f0f97fd32", "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": "ramxak2025/zr-auto-pro", "source_dataset": "graph_queries/unresolved_feedback", "training_usage": "negative_or_unresolved"}}}, {"ruleId": "foundry_unresolved_feedback", "level": "warning", "message": {"text": "Foundry mined unresolved feedback: ramxak2025/zr-auto-pro"}, "properties": {"repobilityId": 369478, "scanner": "foundry_dataset", "fingerprint": "8b33fea85c93b649abb99e1ed2eb3d07be69bb21f6e17a89c98f1e3adef56dd7", "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": 2, "source_or_other": 1, "deployment_env_gap": 1, "api_integration_gap": 1, "mostly follows blueprint": 1, "issue_or_pull_request_thread": 1, "not_resolved_or_not_observed": 4, "blueprint_human_gap_disagreement": 1, "human_reported_issue_no_linked_fix": 2, "thread_has_human_issue_without_fix_context": 2}, "source": "graph_query_export", "motif_id": "unlinked_feedback_needs_evidence", "outcomes": {"not_resolved_or_not_observed": 8}, "polarity": "bad", "query_id": "unresolved_feedback", "severity": "medium", "ci_labels": {}, "synthetic": false, "edge_count": 36, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 2, "thread_has_comment": 2, "thread_touches_file": 4, "alignment_uses_comment": 1, "alignment_uses_finding": 1, "chain_has_link_quality": 5, "comment_aligns_finding": 1, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "issue_chain_touches_file": 4, "thread_has_comment_chain": 2, "comment_chain_touches_file": 8, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 2}, "node_count": 19, "node_types": {"repo": 1, "thread": 1, "comment": 2, "pr_file": 4, "alignment": 1, "fix_outcome": 1, "issue_chain": 1, "link_quality": 5, "comment_chain": 2, "blueprint_finding": 1}, "query_type": "motif_query", "thread_key": "ramxak2025/zr-auto-pro#5", "issue_number": "5", "quality_tiers": {"unresolved": 4, "assumption_check": 1}, "repo_full_name": "ramxak2025/zr-auto-pro", "training_usage": "negative_or_unresolved", "source_motif_id": "graph-pattern-motif-thread-388760b8f67cbeaf", "graph_gold_label": "assumption_check", "changed_file_labels": {"api_or_backend": 5, "ui_or_frontend": 10, "source_or_other": 5}}, "text": "Graph query export: Human feedback without linked fix evidence\nQuery id: unresolved_feedback\nQuery type: motif_query\nIntent: Negative/unresolved examples that should not be hallucinated into fixes.\nMotif: unlinked_feedback_needs_evidence\nTraining usage: negative_or_unresolved\nGraph gold label: assumption_check\nRepo: ramxak2025/zr-auto-pro\nThread: ramxak2025/zr-auto-pro#5\nEvidence:\nGraph motif: Human feedback exists without a linked fix\nMotif id: unlinked_feedback_needs_evidence\nPolarity: bad\nTraining usage: negative_or_unresolved\nSeverity: medium\nRepo: ramxak2025/zr-auto-pro\nThread: ramxak2025/zr-auto-pro#5\nGraph gold label: assumption_check\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: ramxak2025/zr-auto-pro#5\nRepo: ramxak2025/zr-auto-pro\nIssue/PR number: 5\nGraph consistency label: assumption_check\nNodes: 19\nEdges: 36\nNode types: {'link_quality': 5, 'pr_file': 4, 'comment': 2, 'comment_chain': 2, 'thread': 1, 'repo': 1, 'issue_chain': 1, 'fix_outcome': 1, 'alignment': 1, 'blueprint_finding': 1}\nEdge types: {'comment_chain_touches_file': 8, 'chain_has_link_quality': 5, 'thread_touches_file': 4, 'issue_chain_touches_file': 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, 'alignment_uses_comment': 1, 'alignment_uses_finding': 1, 'comment_aligns_finding': 1}\nLabels: {'not_resolved_or_not_observed': 4, 'ui_or_frontend': 2, 'human_reported_issue_no_linked_fix': 2, 'thread_has_human_issue_without_fix_context': 2, 'issue_or_pull_request_thread': 1, 'api_integration_gap': 1, 'deployment_env_gap': 1, 'source_or_other': 1, 'api_or_backend': 1, 'blueprint_human_gap_disagreement': 1, 'mostly follows blueprint': 1}\nOutcomes: {'not_resolved_or_not_observed': 8}\nQuality tiers: {'unresolved': 4, 'assumption_check': 1}\nCI labels: {}\nCurriculum targets:\n- Teach models to preserve unresolved human feedback instead of hallucinating fixes.\n- Build issue-to-regression examples where no accepted fix exists yet.\nAssumption checks:\n- Can a commit be linked by issue number, SHA, changed path, or time window?\n- If no link exists, is this explicitly labelled unresolved?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/ramxak2025/zr-auto-pro", "source_id": "graph-query-motif_query-679f5fb68572c4fa", "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": "ramxak2025/zr-auto-pro", "source_dataset": "graph_queries/unresolved_feedback", "training_usage": "negative_or_unresolved"}}}, {"ruleId": "foundry_unresolved_feedback", "level": "warning", "message": {"text": "Foundry mined unresolved feedback: ramxak2025/zr-auto-pro"}, "properties": {"repobilityId": 369477, "scanner": "foundry_dataset", "fingerprint": "df62126bdcb476ab40904f4d5415ad99737c5f6658dc83daae92ad07aa3d04c8", "category": "practices", "severity": "medium", "confidence": 0.7, "triageState": "open", "verdict": "needs_review", "isResolved": false, "reason": "Imported from mined Foundry/Fable5 evidence with real GitHub/source provenance. Review source_id before acting.", "evidence": {"meta": {"kind": "graph_query_record", "title": "Human feedback without linked fix evidence", "intent": "Negative/unresolved examples that should not be hallucinated into fixes.", "labels": {"bug_fix": 3, "api_or_backend": 11, "docs_or_claims": 55, "schema_or_data": 1, "ui_or_frontend": 16, "source_or_other": 14, "deployment_env_gap": 1, "api_integration_gap": 1, "dependency_or_build": 3, "verification_or_tests": 2, "mostly follows blueprint": 1, "issue_or_pull_request_thread": 1, "not_resolved_or_not_observed": 1, "blueprint_human_gap_disagreement": 1, "human_reported_issue_no_linked_fix": 1, "thread_has_human_issue_and_fix_context": 2, "claimed_resolved_with_verification_signal": 3, "human_reported_issue_then_verified_fix_attempt": 1}, "source": "graph_query_export", "motif_id": "unlinked_feedback_needs_evidence", "outcomes": {"not_resolved_or_not_observed": 2, "claimed_resolved_with_verification_signal": 6}, "polarity": "bad", "query_id": "unresolved_feedback", "severity": "medium", "ci_labels": {}, "synthetic": false, "edge_count": 161, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 2, "thread_has_comment": 2, "thread_touches_file": 100, "alignment_uses_comment": 1, "alignment_uses_finding": 1, "chain_has_link_quality": 5, "comment_aligns_finding": 1, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "issue_chain_touches_file": 12, "thread_has_comment_chain": 2, "comment_chain_links_commit": 5, "comment_chain_touches_file": 24, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 2}, "node_count": 120, "node_types": {"repo": 1, "commit": 5, "thread": 1, "comment": 2, "pr_file": 100, "alignment": 1, "fix_outcome": 1, "issue_chain": 1, "link_quality": 5, "comment_chain": 2, "blueprint_finding": 1}, "query_type": "motif_query", "thread_key": "ramxak2025/zr-auto-pro#4", "issue_number": "4", "quality_tiers": {"unresolved": 1, "assumption_check": 1, "weak_supervision": 3}, "repo_full_name": "ramxak2025/zr-auto-pro", "training_usage": "negative_or_unresolved", "source_motif_id": "graph-pattern-motif-thread-41749f81843b408a", "graph_gold_label": "supported_by_verification_signal", "changed_file_labels": {"api_or_backend": 55, "docs_or_claims": 275, "schema_or_data": 5, "ui_or_frontend": 80, "source_or_other": 70, "dependency_or_build": 15}}, "text": "Graph query export: Human feedback without linked fix evidence\nQuery id: unresolved_feedback\nQuery type: motif_query\nIntent: Negative/unresolved examples that should not be hallucinated into fixes.\nMotif: unlinked_feedback_needs_evidence\nTraining usage: negative_or_unresolved\nGraph gold label: supported_by_verification_signal\nRepo: ramxak2025/zr-auto-pro\nThread: ramxak2025/zr-auto-pro#4\nEvidence:\nGraph motif: Human feedback exists without a linked fix\nMotif id: unlinked_feedback_needs_evidence\nPolarity: bad\nTraining usage: negative_or_unresolved\nSeverity: medium\nRepo: ramxak2025/zr-auto-pro\nThread: ramxak2025/zr-auto-pro#4\nGraph gold label: supported_by_verification_signal\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: ramxak2025/zr-auto-pro#4\nRepo: ramxak2025/zr-auto-pro\nIssue/PR number: 4\nGraph consistency label: supported_by_verification_signal\nNodes: 120\nEdges: 161\nNode types: {'pr_file': 100, 'commit': 5, 'link_quality': 5, 'comment': 2, 'comment_chain': 2, 'thread': 1, 'repo': 1, 'issue_chain': 1, 'fix_outcome': 1, 'alignment': 1, 'blueprint_finding': 1}\nEdge types: {'thread_touches_file': 100, 'comment_chain_touches_file': 24, 'issue_chain_touches_file': 12, 'comment_chain_links_commit': 5, 'chain_has_link_quality': 5, '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, 'alignment_uses_comment': 1, 'alignment_uses_finding': 1, 'comment_aligns_finding': 1}\nLabels: {'docs_or_claims': 55, 'ui_or_frontend': 16, 'source_or_other': 14, 'api_or_backend': 11, 'dependency_or_build': 3, '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, 'api_integration_gap': 1, 'deployment_env_gap': 1, 'schema_or_data': 1, 'human_reported_issue_then_verified_fix_attempt': 1, 'human_reported_issue_no_linked_fix': 1, 'not_resolved_or_not_observed': 1}\nOutcomes: {'claimed_resolved_with_verification_signal': 6, 'not_resolved_or_not_observed': 2}\nQuality tiers: {'weak_supervision': 3, 'unresolved': 1, 'assumption_check': 1}\nCI labels: {}\nCurriculum targets:\n- Teach models to preserve unresolved human feedback instead of hallucinating fixes.\n- Build issue-to-regression examples where no accepted fix exists yet.\nAssumption checks:\n- Can a commit be linked by issue number, SHA, changed path, or time window?\n- If no link exists, is this explicitly labelled unresolved?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/ramxak2025/zr-auto-pro", "source_id": "graph-query-motif_query-9a5fc929c7764170", "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": "ramxak2025/zr-auto-pro", "source_dataset": "graph_queries/unresolved_feedback", "training_usage": "negative_or_unresolved"}}}, {"ruleId": "foundry_unresolved_feedback", "level": "warning", "message": {"text": "Foundry mined unresolved feedback: ramxak2025/zr-auto-pro"}, "properties": {"repobilityId": 369476, "scanner": "foundry_dataset", "fingerprint": "27f3dfd10e6fe729ee30e0211a461a2566f2b935b210c014254cfa46f494d8b4", "category": "practices", "severity": "medium", "confidence": 0.7, "triageState": "open", "verdict": "needs_review", "isResolved": false, "reason": "Imported from mined Foundry/Fable5 evidence with real GitHub/source provenance. Review source_id before acting.", "evidence": {"meta": {"kind": "graph_query_record", "title": "Human feedback without linked fix evidence", "intent": "Negative/unresolved examples that should not be hallucinated into fixes.", "labels": {"bug_fix": 1, "test_or_ci": 1, "api_or_backend": 80, "schema_or_data": 15, "source_or_other": 4, "deployment_env_gap": 1, "security_auth_secret": 1, "claimed_resolved_unverified": 3, "issue_or_pull_request_thread": 1, "not_resolved_or_not_observed": 1, "human_reported_issue_no_linked_fix": 1, "human_reported_issue_then_fix_attempt": 1, "thread_has_human_issue_and_fix_context": 2}, "source": "graph_query_export", "motif_id": "unlinked_feedback_needs_evidence", "outcomes": {"claimed_resolved_unverified": 6, "not_resolved_or_not_observed": 2}, "polarity": "bad", "query_id": "unresolved_feedback", "severity": "medium", "ci_labels": {}, "synthetic": false, "edge_count": 153, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 2, "thread_has_comment": 2, "thread_touches_file": 100, "chain_has_link_quality": 4, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "issue_chain_touches_file": 12, "thread_has_comment_chain": 2, "comment_chain_links_commit": 1, "comment_chain_touches_file": 24, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 2}, "node_count": 113, "node_types": {"repo": 1, "commit": 1, "thread": 1, "comment": 2, "pr_file": 100, "fix_outcome": 1, "issue_chain": 1, "link_quality": 4, "comment_chain": 2}, "query_type": "motif_query", "thread_key": "ramxak2025/zr-auto-pro#3", "issue_number": "3", "quality_tiers": {"unresolved": 1, "weak_supervision": 3}, "repo_full_name": "ramxak2025/zr-auto-pro", "training_usage": "negative_or_unresolved", "source_motif_id": "graph-pattern-motif-thread-abd937fcf1695ba8", "graph_gold_label": "weak_supervision_needs_review", "changed_file_labels": {"test_or_ci": 5, "api_or_backend": 400, "schema_or_data": 75, "source_or_other": 20}}, "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: ramxak2025/zr-auto-pro\nThread: ramxak2025/zr-auto-pro#3\nEvidence:\nGraph motif: Human feedback exists without a linked fix\nMotif id: unlinked_feedback_needs_evidence\nPolarity: bad\nTraining usage: negative_or_unresolved\nSeverity: medium\nRepo: ramxak2025/zr-auto-pro\nThread: ramxak2025/zr-auto-pro#3\nGraph gold label: weak_supervision_needs_review\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: ramxak2025/zr-auto-pro#3\nRepo: ramxak2025/zr-auto-pro\nIssue/PR number: 3\nGraph consistency label: weak_supervision_needs_review\nNodes: 113\nEdges: 153\nNode types: {'pr_file': 100, 'link_quality': 4, 'comment': 2, 'comment_chain': 2, 'thread': 1, 'repo': 1, 'commit': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'thread_touches_file': 100, 'comment_chain_touches_file': 24, 'issue_chain_touches_file': 12, 'chain_has_link_quality': 4, 'thread_has_comment': 2, 'thread_has_comment_chain': 2, 'comment_has_chain': 2, 'issue_chain_has_comment_chain': 2, 'repo_has_thread': 1, 'comment_chain_links_commit': 1, 'thread_has_issue_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'api_or_backend': 80, 'schema_or_data': 15, 'source_or_other': 4, 'claimed_resolved_unverified': 3, 'thread_has_human_issue_and_fix_context': 2, 'issue_or_pull_request_thread': 1, 'security_auth_secret': 1, 'deployment_env_gap': 1, 'test_or_ci': 1, 'human_reported_issue_then_fix_attempt': 1, 'bug_fix': 1, 'human_reported_issue_no_linked_fix': 1, 'not_resolved_or_not_observed': 1}\nOutcomes: {'claimed_resolved_unverified': 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/ramxak2025/zr-auto-pro", "source_id": "graph-query-motif_query-76c032b04b442729", "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": "ramxak2025/zr-auto-pro", "source_dataset": "graph_queries/unresolved_feedback", "training_usage": "negative_or_unresolved"}}}, {"ruleId": "foundry_unresolved_feedback", "level": "warning", "message": {"text": "Foundry mined unresolved feedback: ramxak2025/zr-auto-pro"}, "properties": {"repobilityId": 369475, "scanner": "foundry_dataset", "fingerprint": "cd9b0e1ca3df0ae32ecad38f347a66b772acc483c1f64d5d0b00adfbc20dd2e0", "category": "practices", "severity": "medium", "confidence": 0.7, "triageState": "open", "verdict": "needs_review", "isResolved": false, "reason": "Imported from mined Foundry/Fable5 evidence with real GitHub/source provenance. Review source_id before acting.", "evidence": {"meta": {"kind": "graph_query_record", "title": "Human feedback without linked fix evidence", "intent": "Negative/unresolved examples that should not be hallucinated into fixes.", "labels": {"bug_fix": 1, "test_or_ci": 1, "api_or_backend": 93, "schema_or_data": 4, "source_or_other": 2, "deployment_env_gap": 1, "security_auth_secret": 1, "claimed_resolved_unverified": 3, "issue_or_pull_request_thread": 1, "not_resolved_or_not_observed": 1, "human_reported_issue_no_linked_fix": 1, "human_reported_issue_then_fix_attempt": 1, "thread_has_human_issue_and_fix_context": 2}, "source": "graph_query_export", "motif_id": "unlinked_feedback_needs_evidence", "outcomes": {"claimed_resolved_unverified": 6, "not_resolved_or_not_observed": 2}, "polarity": "bad", "query_id": "unresolved_feedback", "severity": "medium", "ci_labels": {}, "synthetic": false, "edge_count": 153, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 2, "thread_has_comment": 2, "thread_touches_file": 100, "chain_has_link_quality": 4, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "issue_chain_touches_file": 12, "thread_has_comment_chain": 2, "comment_chain_links_commit": 1, "comment_chain_touches_file": 24, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 2}, "node_count": 113, "node_types": {"repo": 1, "commit": 1, "thread": 1, "comment": 2, "pr_file": 100, "fix_outcome": 1, "issue_chain": 1, "link_quality": 4, "comment_chain": 2}, "query_type": "motif_query", "thread_key": "ramxak2025/zr-auto-pro#2", "issue_number": "2", "quality_tiers": {"unresolved": 1, "weak_supervision": 3}, "repo_full_name": "ramxak2025/zr-auto-pro", "training_usage": "negative_or_unresolved", "source_motif_id": "graph-pattern-motif-thread-8b5c529b366858dd", "graph_gold_label": "weak_supervision_needs_review", "changed_file_labels": {"test_or_ci": 5, "api_or_backend": 465, "schema_or_data": 20, "source_or_other": 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: weak_supervision_needs_review\nRepo: ramxak2025/zr-auto-pro\nThread: ramxak2025/zr-auto-pro#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: ramxak2025/zr-auto-pro\nThread: ramxak2025/zr-auto-pro#2\nGraph gold label: weak_supervision_needs_review\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: ramxak2025/zr-auto-pro#2\nRepo: ramxak2025/zr-auto-pro\nIssue/PR number: 2\nGraph consistency label: weak_supervision_needs_review\nNodes: 113\nEdges: 153\nNode types: {'pr_file': 100, 'link_quality': 4, 'comment': 2, 'comment_chain': 2, 'thread': 1, 'repo': 1, 'commit': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'thread_touches_file': 100, 'comment_chain_touches_file': 24, 'issue_chain_touches_file': 12, 'chain_has_link_quality': 4, 'thread_has_comment': 2, 'thread_has_comment_chain': 2, 'comment_has_chain': 2, 'issue_chain_has_comment_chain': 2, 'repo_has_thread': 1, 'comment_chain_links_commit': 1, 'thread_has_issue_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'api_or_backend': 93, 'schema_or_data': 4, 'claimed_resolved_unverified': 3, 'source_or_other': 2, 'thread_has_human_issue_and_fix_context': 2, 'issue_or_pull_request_thread': 1, 'security_auth_secret': 1, 'deployment_env_gap': 1, 'test_or_ci': 1, 'human_reported_issue_then_fix_attempt': 1, 'bug_fix': 1, 'human_reported_issue_no_linked_fix': 1, 'not_resolved_or_not_observed': 1}\nOutcomes: {'claimed_resolved_unverified': 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/ramxak2025/zr-auto-pro", "source_id": "graph-query-motif_query-274a122853c7e948", "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": "ramxak2025/zr-auto-pro", "source_dataset": "graph_queries/unresolved_feedback", "training_usage": "negative_or_unresolved"}}}, {"ruleId": "foundry_unresolved_feedback", "level": "warning", "message": {"text": "Foundry mined unresolved feedback: ramxak2025/zr-auto-pro"}, "properties": {"repobilityId": 369474, "scanner": "foundry_dataset", "fingerprint": "8308d2d6e0a6bac5a83f092889dc2da11d484c872f0c9ab75dc0c0b089282536", "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": 25, "ui_or_frontend": 8, "source_or_other": 3, "dependency_or_build": 1, "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": 89, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 2, "thread_has_comment": 2, "thread_touches_file": 37, "chain_has_link_quality": 4, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "issue_chain_touches_file": 12, "thread_has_comment_chain": 2, "comment_chain_touches_file": 24, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 2}, "node_count": 49, "node_types": {"repo": 1, "thread": 1, "comment": 2, "pr_file": 37, "fix_outcome": 1, "issue_chain": 1, "link_quality": 4, "comment_chain": 2}, "query_type": "motif_query", "thread_key": "ramxak2025/zr-auto-pro#1", "issue_number": "1", "quality_tiers": {"unresolved": 4}, "repo_full_name": "ramxak2025/zr-auto-pro", "training_usage": "negative_or_unresolved", "source_motif_id": "graph-pattern-motif-thread-81c23e840077cb19", "graph_gold_label": "needs_more_evidence", "changed_file_labels": {"api_or_backend": 125, "ui_or_frontend": 40, "source_or_other": 15, "dependency_or_build": 5}}, "text": "Graph query export: Human feedback without linked fix evidence\nQuery id: unresolved_feedback\nQuery type: motif_query\nIntent: Negative/unresolved examples that should not be hallucinated into fixes.\nMotif: unlinked_feedback_needs_evidence\nTraining usage: negative_or_unresolved\nGraph gold label: needs_more_evidence\nRepo: ramxak2025/zr-auto-pro\nThread: ramxak2025/zr-auto-pro#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: ramxak2025/zr-auto-pro\nThread: ramxak2025/zr-auto-pro#1\nGraph gold label: needs_more_evidence\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: ramxak2025/zr-auto-pro#1\nRepo: ramxak2025/zr-auto-pro\nIssue/PR number: 1\nGraph consistency label: needs_more_evidence\nNodes: 49\nEdges: 89\nNode types: {'pr_file': 37, 'link_quality': 4, 'comment': 2, 'comment_chain': 2, 'thread': 1, 'repo': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'thread_touches_file': 37, 'comment_chain_touches_file': 24, 'issue_chain_touches_file': 12, '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: {'api_or_backend': 25, 'ui_or_frontend': 8, 'not_resolved_or_not_observed': 4, 'source_or_other': 3, '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, 'dependency_or_build': 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/ramxak2025/zr-auto-pro", "source_id": "graph-query-motif_query-ee7def9534b32f1b", "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": "ramxak2025/zr-auto-pro", "source_dataset": "graph_queries/unresolved_feedback", "training_usage": "negative_or_unresolved"}}}, {"ruleId": "foundry_blueprint_gap", "level": "warning", "message": {"text": "Foundry mined blueprint gap alignment: ramxak2025/zr-auto-pro"}, "properties": {"repobilityId": 355156, "scanner": "foundry_dataset", "fingerprint": "19a20a0906eaeb6790e3170e3629e9fa3f66b616a2312dbd443a9271dfa5b649", "category": "tech_debt", "severity": "medium", "confidence": 0.7, "triageState": "open", "verdict": "needs_review", "isResolved": false, "reason": "Imported from mined Foundry/Fable5 evidence with real GitHub/source provenance. Review source_id before acting.", "evidence": {"meta": {"kind": "graph_query_record", "title": "Human feedback aligned with blueprint or architecture gaps", "intent": "Curriculum-gap examples connecting issue threads to helicopter-view gaps.", "labels": {"test_or_ci": 2, "test_ci_gap": 1, "api_or_backend": 2, "docs_or_claims": 6, "source_or_other": 3, "deployment_env_gap": 1, "dependency_or_build": 2, "mostly follows blueprint": 1, "issue_or_pull_request_thread": 1, "not_resolved_or_not_observed": 4, "blueprint_human_gap_disagreement": 1, "human_reported_issue_no_linked_fix": 2, "thread_has_human_issue_without_fix_context": 2}, "source": "graph_query_export", "motif_id": "blueprint_gap_alignment", "outcomes": {"not_resolved_or_not_observed": 8}, "polarity": "mixed", "query_id": "blueprint_gap_alignment", "severity": "medium", "ci_labels": {}, "synthetic": false, "edge_count": 71, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 2, "thread_has_comment": 2, "thread_touches_file": 15, "alignment_uses_comment": 1, "alignment_uses_finding": 1, "chain_has_link_quality": 5, "comment_aligns_finding": 1, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "issue_chain_touches_file": 12, "thread_has_comment_chain": 2, "comment_chain_touches_file": 24, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 2}, "node_count": 30, "node_types": {"repo": 1, "thread": 1, "comment": 2, "pr_file": 15, "alignment": 1, "fix_outcome": 1, "issue_chain": 1, "link_quality": 5, "comment_chain": 2, "blueprint_finding": 1}, "query_type": "motif_query", "thread_key": "ramxak2025/zr-auto-pro#9", "issue_number": "9", "quality_tiers": {"unresolved": 4, "assumption_check": 1}, "repo_full_name": "ramxak2025/zr-auto-pro", "training_usage": "curriculum_gap", "source_motif_id": "graph-pattern-motif-thread-c278c611b129d8e2", "graph_gold_label": "assumption_check", "changed_file_labels": {"test_or_ci": 10, "api_or_backend": 10, "docs_or_claims": 30, "source_or_other": 15, "dependency_or_build": 10}}, "text": "Graph query export: Human feedback aligned with blueprint or architecture gaps\nQuery id: blueprint_gap_alignment\nQuery type: motif_query\nIntent: Curriculum-gap examples connecting issue threads to helicopter-view gaps.\nMotif: blueprint_gap_alignment\nTraining usage: curriculum_gap\nGraph gold label: assumption_check\nRepo: ramxak2025/zr-auto-pro\nThread: ramxak2025/zr-auto-pro#9\nEvidence:\nGraph motif: Human feedback aligns with blueprint or architecture gaps\nMotif id: blueprint_gap_alignment\nPolarity: mixed\nTraining usage: curriculum_gap\nSeverity: medium\nRepo: ramxak2025/zr-auto-pro\nThread: ramxak2025/zr-auto-pro#9\nGraph gold label: assumption_check\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: ramxak2025/zr-auto-pro#9\nRepo: ramxak2025/zr-auto-pro\nIssue/PR number: 9\nGraph consistency label: assumption_check\nNodes: 30\nEdges: 71\nNode types: {'pr_file': 15, 'link_quality': 5, 'comment': 2, 'comment_chain': 2, 'thread': 1, 'repo': 1, 'issue_chain': 1, 'fix_outcome': 1, 'alignment': 1, 'blueprint_finding': 1}\nEdge types: {'comment_chain_touches_file': 24, 'thread_touches_file': 15, 'issue_chain_touches_file': 12, 'chain_has_link_quality': 5, '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, 'alignment_uses_comment': 1, 'alignment_uses_finding': 1, 'comment_aligns_finding': 1}\nLabels: {'docs_or_claims': 6, 'not_resolved_or_not_observed': 4, 'source_or_other': 3, 'api_or_backend': 2, 'test_or_ci': 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, 'test_ci_gap': 1, 'deployment_env_gap': 1, 'blueprint_human_gap_disagreement': 1, 'mostly follows blueprint': 1}\nOutcomes: {'not_resolved_or_not_observed': 8}\nQuality tiers: {'unresolved': 4, 'assumption_check': 1}\nCI labels: {}\nCurriculum targets:\n- Use helicopter-view architecture/schema/design evidence beside issue threads.\n- Teach models to compare requested product class against implementation layers.\nAssumption checks:\n- Which blueprint layer is absent: frontend, API, data, auth, tests, or deployment?\n- Does human feedback confirm the same architectural gap?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/ramxak2025/zr-auto-pro", "source_id": "graph-query-motif_query-954cc11aa552c1b5", "synthetic": false, "gold_label": "", "graph_label": "", "source_path": "/data/distillate/foundry_data/graph_queries/blueprint_gap_alignment/shard-0.jsonl", "bundle_label": "", "priority_band": "", "priority_score": 0, "repo_full_name": "ramxak2025/zr-auto-pro", "source_dataset": "graph_queries/blueprint_gap_alignment", "training_usage": "curriculum_gap"}}}, {"ruleId": "foundry_blueprint_gap", "level": "warning", "message": {"text": "Foundry mined blueprint gap alignment: ramxak2025/zr-auto-pro"}, "properties": {"repobilityId": 355155, "scanner": "foundry_dataset", "fingerprint": "eb481ee407a4130397cb538ea9acc0ceb1080e3d6acb10d92f562dd6cce81866", "category": "tech_debt", "severity": "medium", "confidence": 0.7, "triageState": "open", "verdict": "needs_review", "isResolved": false, "reason": "Imported from mined Foundry/Fable5 evidence with real GitHub/source provenance. Review source_id before acting.", "evidence": {"meta": {"kind": "graph_query_record", "title": "Human feedback aligned with blueprint or architecture gaps", "intent": "Curriculum-gap examples connecting issue threads to helicopter-view gaps.", "labels": {"bug_fix": 1, "api_or_backend": 4, "ui_or_frontend": 15, "ci_success_signal": 1, "deployment_env_gap": 1, "api_integration_gap": 1, "mostly follows blueprint": 1, "issue_or_pull_request_thread": 1, "not_resolved_or_not_observed": 1, "blueprint_human_gap_disagreement": 1, "human_reported_issue_no_linked_fix": 1, "thread_has_human_issue_and_fix_context": 2, "claimed_resolved_with_verification_signal": 3, "human_reported_issue_then_verified_fix_attempt": 1}, "source": "graph_query_export", "motif_id": "blueprint_gap_alignment", "outcomes": {"not_resolved_or_not_observed": 2, "claimed_resolved_with_verification_signal": 6}, "polarity": "mixed", "query_id": "blueprint_gap_alignment", "severity": "medium", "ci_labels": {"ci_success_signal": 2}, "synthetic": false, "edge_count": 77, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 2, "thread_has_comment": 2, "thread_touches_file": 19, "comment_chain_has_ci": 1, "alignment_uses_comment": 1, "alignment_uses_finding": 1, "chain_has_link_quality": 5, "comment_aligns_finding": 1, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "issue_chain_touches_file": 12, "thread_has_comment_chain": 2, "comment_chain_links_commit": 1, "comment_chain_touches_file": 24, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 2}, "node_count": 36, "node_types": {"repo": 1, "commit": 1, "thread": 1, "comment": 2, "pr_file": 19, "alignment": 1, "ci_summary": 1, "fix_outcome": 1, "issue_chain": 1, "link_quality": 5, "comment_chain": 2, "blueprint_finding": 1}, "query_type": "motif_query", "thread_key": "ramxak2025/zr-auto-pro#8", "issue_number": "8", "quality_tiers": {"unresolved": 1, "assumption_check": 1, "weak_supervision": 3}, "repo_full_name": "ramxak2025/zr-auto-pro", "training_usage": "curriculum_gap", "source_motif_id": "graph-pattern-motif-thread-1ad1b5b23fc70a29", "graph_gold_label": "supported_by_verification_signal", "changed_file_labels": {"api_or_backend": 20, "ui_or_frontend": 75}}, "text": "Graph query export: Human feedback aligned with blueprint or architecture gaps\nQuery id: blueprint_gap_alignment\nQuery type: motif_query\nIntent: Curriculum-gap examples connecting issue threads to helicopter-view gaps.\nMotif: blueprint_gap_alignment\nTraining usage: curriculum_gap\nGraph gold label: supported_by_verification_signal\nRepo: ramxak2025/zr-auto-pro\nThread: ramxak2025/zr-auto-pro#8\nEvidence:\nGraph motif: Human feedback aligns with blueprint or architecture gaps\nMotif id: blueprint_gap_alignment\nPolarity: mixed\nTraining usage: curriculum_gap\nSeverity: medium\nRepo: ramxak2025/zr-auto-pro\nThread: ramxak2025/zr-auto-pro#8\nGraph gold label: supported_by_verification_signal\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: ramxak2025/zr-auto-pro#8\nRepo: ramxak2025/zr-auto-pro\nIssue/PR number: 8\nGraph consistency label: supported_by_verification_signal\nNodes: 36\nEdges: 77\nNode types: {'pr_file': 19, 'link_quality': 5, 'comment': 2, 'comment_chain': 2, 'thread': 1, 'repo': 1, 'commit': 1, 'ci_summary': 1, 'issue_chain': 1, 'fix_outcome': 1, 'alignment': 1, 'blueprint_finding': 1}\nEdge types: {'comment_chain_touches_file': 24, 'thread_touches_file': 19, 'issue_chain_touches_file': 12, 'chain_has_link_quality': 5, 'thread_has_comment': 2, 'thread_has_comment_chain': 2, 'comment_has_chain': 2, 'issue_chain_has_comment_chain': 2, 'repo_has_thread': 1, 'comment_chain_links_commit': 1, 'comment_chain_has_ci': 1, 'thread_has_issue_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1, 'alignment_uses_comment': 1, 'alignment_uses_finding': 1}\nLabels: {'ui_or_frontend': 15, 'api_or_backend': 4, 'claimed_resolved_with_verification_signal': 3, 'thread_has_human_issue_and_fix_context': 2, 'issue_or_pull_request_thread': 1, 'api_integration_gap': 1, 'deployment_env_gap': 1, 'human_reported_issue_then_verified_fix_attempt': 1, 'bug_fix': 1, 'ci_success_signal': 1, 'human_reported_issue_no_linked_fix': 1, 'not_resolved_or_not_observed': 1, 'blueprint_human_gap_disagreement': 1, 'mostly follows blueprint': 1}\nOutcomes: {'claimed_resolved_with_verification_signal': 6, 'not_resolved_or_not_observed': 2}\nQuality tiers: {'weak_supervision': 3, 'unresolved': 1, 'assumption_check': 1}\nCI labels: {'ci_success_signal': 2}\nCurriculum targets:\n- Use helicopter-view architecture/schema/design evidence beside issue threads.\n- Teach models to compare requested product class against implementation layers.\nAssumption checks:\n- Which blueprint layer is absent: frontend, API, data, auth, tests, or deployment?\n- Does human feedback confirm the same architectural gap?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/ramxak2025/zr-auto-pro", "source_id": "graph-query-motif_query-0f605308cda47c9c", "synthetic": false, "gold_label": "", "graph_label": "", "source_path": "/data/distillate/foundry_data/graph_queries/blueprint_gap_alignment/shard-0.jsonl", "bundle_label": "", "priority_band": "", "priority_score": 0, "repo_full_name": "ramxak2025/zr-auto-pro", "source_dataset": "graph_queries/blueprint_gap_alignment", "training_usage": "curriculum_gap"}}}, {"ruleId": "foundry_blueprint_gap", "level": "warning", "message": {"text": "Foundry mined blueprint gap alignment: ramxak2025/zr-auto-pro"}, "properties": {"repobilityId": 355154, "scanner": "foundry_dataset", "fingerprint": "9eb57f5ac0c2d09d22284b08bfdb88c8525d591355ccf913d75b500428f8402e", "category": "tech_debt", "severity": "medium", "confidence": 0.7, "triageState": "open", "verdict": "needs_review", "isResolved": false, "reason": "Imported from mined Foundry/Fable5 evidence with real GitHub/source provenance. Review source_id before acting.", "evidence": {"meta": {"kind": "graph_query_record", "title": "Human feedback aligned with blueprint or architecture gaps", "intent": "Curriculum-gap examples connecting issue threads to helicopter-view gaps.", "labels": {"bug_fix": 1, "api_or_backend": 3, "schema_or_data": 1, "ui_or_frontend": 1, "deployment_env_gap": 1, "data_schema_persistence": 1, "mostly follows blueprint": 1, "claimed_resolved_unverified": 3, "issue_or_pull_request_thread": 1, "not_resolved_or_not_observed": 1, "blueprint_human_gap_disagreement": 1, "human_reported_issue_no_linked_fix": 1, "human_reported_issue_then_fix_attempt": 1, "thread_has_human_issue_and_fix_context": 2}, "source": "graph_query_export", "motif_id": "blueprint_gap_alignment", "outcomes": {"claimed_resolved_unverified": 6, "not_resolved_or_not_observed": 2}, "polarity": "mixed", "query_id": "blueprint_gap_alignment", "severity": "medium", "ci_labels": {}, "synthetic": false, "edge_count": 41, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 2, "thread_has_comment": 2, "thread_touches_file": 5, "alignment_uses_comment": 1, "alignment_uses_finding": 1, "chain_has_link_quality": 5, "comment_aligns_finding": 1, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "issue_chain_touches_file": 5, "thread_has_comment_chain": 2, "comment_chain_links_commit": 1, "comment_chain_touches_file": 10, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 2}, "node_count": 21, "node_types": {"repo": 1, "commit": 1, "thread": 1, "comment": 2, "pr_file": 5, "alignment": 1, "fix_outcome": 1, "issue_chain": 1, "link_quality": 5, "comment_chain": 2, "blueprint_finding": 1}, "query_type": "motif_query", "thread_key": "ramxak2025/zr-auto-pro#7", "issue_number": "7", "quality_tiers": {"unresolved": 1, "assumption_check": 1, "weak_supervision": 3}, "repo_full_name": "ramxak2025/zr-auto-pro", "training_usage": "curriculum_gap", "source_motif_id": "graph-pattern-motif-thread-58a9d11468b00504", "graph_gold_label": "weak_supervision_needs_review", "changed_file_labels": {"api_or_backend": 15, "schema_or_data": 5, "ui_or_frontend": 5}}, "text": "Graph query export: Human feedback aligned with blueprint or architecture gaps\nQuery id: blueprint_gap_alignment\nQuery type: motif_query\nIntent: Curriculum-gap examples connecting issue threads to helicopter-view gaps.\nMotif: blueprint_gap_alignment\nTraining usage: curriculum_gap\nGraph gold label: weak_supervision_needs_review\nRepo: ramxak2025/zr-auto-pro\nThread: ramxak2025/zr-auto-pro#7\nEvidence:\nGraph motif: Human feedback aligns with blueprint or architecture gaps\nMotif id: blueprint_gap_alignment\nPolarity: mixed\nTraining usage: curriculum_gap\nSeverity: medium\nRepo: ramxak2025/zr-auto-pro\nThread: ramxak2025/zr-auto-pro#7\nGraph gold label: weak_supervision_needs_review\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: ramxak2025/zr-auto-pro#7\nRepo: ramxak2025/zr-auto-pro\nIssue/PR number: 7\nGraph consistency label: weak_supervision_needs_review\nNodes: 21\nEdges: 41\nNode types: {'pr_file': 5, 'link_quality': 5, 'comment': 2, 'comment_chain': 2, 'thread': 1, 'repo': 1, 'commit': 1, 'issue_chain': 1, 'fix_outcome': 1, 'alignment': 1, 'blueprint_finding': 1}\nEdge types: {'comment_chain_touches_file': 10, 'thread_touches_file': 5, 'chain_has_link_quality': 5, 'issue_chain_touches_file': 5, 'thread_has_comment': 2, 'thread_has_comment_chain': 2, 'comment_has_chain': 2, 'issue_chain_has_comment_chain': 2, 'repo_has_thread': 1, 'comment_chain_links_commit': 1, 'thread_has_issue_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1, 'alignment_uses_comment': 1, 'alignment_uses_finding': 1, 'comment_aligns_finding': 1}\nLabels: {'api_or_backend': 3, 'claimed_resolved_unverified': 3, 'thread_has_human_issue_and_fix_context': 2, 'issue_or_pull_request_thread': 1, 'data_schema_persistence': 1, 'deployment_env_gap': 1, 'schema_or_data': 1, 'ui_or_frontend': 1, 'human_reported_issue_then_fix_attempt': 1, 'bug_fix': 1, 'human_reported_issue_no_linked_fix': 1, 'not_resolved_or_not_observed': 1, 'blueprint_human_gap_disagreement': 1, 'mostly follows blueprint': 1}\nOutcomes: {'claimed_resolved_unverified': 6, 'not_resolved_or_not_observed': 2}\nQuality tiers: {'weak_supervision': 3, 'unresolved': 1, 'assumption_check': 1}\nCI labels: {}\nCurriculum targets:\n- Use helicopter-view architecture/schema/design evidence beside issue threads.\n- Teach models to compare requested product class against implementation layers.\nAssumption checks:\n- Which blueprint layer is absent: frontend, API, data, auth, tests, or deployment?\n- Does human feedback confirm the same architectural gap?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/ramxak2025/zr-auto-pro", "source_id": "graph-query-motif_query-138a2372bb6b0a63", "synthetic": false, "gold_label": "", "graph_label": "", "source_path": "/data/distillate/foundry_data/graph_queries/blueprint_gap_alignment/shard-0.jsonl", "bundle_label": "", "priority_band": "", "priority_score": 0, "repo_full_name": "ramxak2025/zr-auto-pro", "source_dataset": "graph_queries/blueprint_gap_alignment", "training_usage": "curriculum_gap"}}}, {"ruleId": "foundry_blueprint_gap", "level": "warning", "message": {"text": "Foundry mined blueprint gap alignment: ramxak2025/zr-auto-pro"}, "properties": {"repobilityId": 355153, "scanner": "foundry_dataset", "fingerprint": "d1298bb182988102254a1fadf9b543b82d36e77214b48c6bea8e56289fd74a0b", "category": "tech_debt", "severity": "medium", "confidence": 0.7, "triageState": "open", "verdict": "needs_review", "isResolved": false, "reason": "Imported from mined Foundry/Fable5 evidence with real GitHub/source provenance. Review source_id before acting.", "evidence": {"meta": {"kind": "graph_query_record", "title": "Human feedback aligned with blueprint or architecture gaps", "intent": "Curriculum-gap examples connecting issue threads to helicopter-view gaps.", "labels": {"api_or_backend": 1, "ui_or_frontend": 2, "source_or_other": 1, "deployment_env_gap": 1, "api_integration_gap": 1, "mostly follows blueprint": 1, "issue_or_pull_request_thread": 1, "not_resolved_or_not_observed": 4, "blueprint_human_gap_disagreement": 1, "human_reported_issue_no_linked_fix": 2, "thread_has_human_issue_without_fix_context": 2}, "source": "graph_query_export", "motif_id": "blueprint_gap_alignment", "outcomes": {"not_resolved_or_not_observed": 8}, "polarity": "mixed", "query_id": "blueprint_gap_alignment", "severity": "medium", "ci_labels": {}, "synthetic": false, "edge_count": 36, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 2, "thread_has_comment": 2, "thread_touches_file": 4, "alignment_uses_comment": 1, "alignment_uses_finding": 1, "chain_has_link_quality": 5, "comment_aligns_finding": 1, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "issue_chain_touches_file": 4, "thread_has_comment_chain": 2, "comment_chain_touches_file": 8, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 2}, "node_count": 19, "node_types": {"repo": 1, "thread": 1, "comment": 2, "pr_file": 4, "alignment": 1, "fix_outcome": 1, "issue_chain": 1, "link_quality": 5, "comment_chain": 2, "blueprint_finding": 1}, "query_type": "motif_query", "thread_key": "ramxak2025/zr-auto-pro#5", "issue_number": "5", "quality_tiers": {"unresolved": 4, "assumption_check": 1}, "repo_full_name": "ramxak2025/zr-auto-pro", "training_usage": "curriculum_gap", "source_motif_id": "graph-pattern-motif-thread-da592701d68fbf8f", "graph_gold_label": "assumption_check", "changed_file_labels": {"api_or_backend": 5, "ui_or_frontend": 10, "source_or_other": 5}}, "text": "Graph query export: Human feedback aligned with blueprint or architecture gaps\nQuery id: blueprint_gap_alignment\nQuery type: motif_query\nIntent: Curriculum-gap examples connecting issue threads to helicopter-view gaps.\nMotif: blueprint_gap_alignment\nTraining usage: curriculum_gap\nGraph gold label: assumption_check\nRepo: ramxak2025/zr-auto-pro\nThread: ramxak2025/zr-auto-pro#5\nEvidence:\nGraph motif: Human feedback aligns with blueprint or architecture gaps\nMotif id: blueprint_gap_alignment\nPolarity: mixed\nTraining usage: curriculum_gap\nSeverity: medium\nRepo: ramxak2025/zr-auto-pro\nThread: ramxak2025/zr-auto-pro#5\nGraph gold label: assumption_check\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: ramxak2025/zr-auto-pro#5\nRepo: ramxak2025/zr-auto-pro\nIssue/PR number: 5\nGraph consistency label: assumption_check\nNodes: 19\nEdges: 36\nNode types: {'link_quality': 5, 'pr_file': 4, 'comment': 2, 'comment_chain': 2, 'thread': 1, 'repo': 1, 'issue_chain': 1, 'fix_outcome': 1, 'alignment': 1, 'blueprint_finding': 1}\nEdge types: {'comment_chain_touches_file': 8, 'chain_has_link_quality': 5, 'thread_touches_file': 4, 'issue_chain_touches_file': 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, 'alignment_uses_comment': 1, 'alignment_uses_finding': 1, 'comment_aligns_finding': 1}\nLabels: {'not_resolved_or_not_observed': 4, 'ui_or_frontend': 2, 'human_reported_issue_no_linked_fix': 2, 'thread_has_human_issue_without_fix_context': 2, 'issue_or_pull_request_thread': 1, 'api_integration_gap': 1, 'deployment_env_gap': 1, 'source_or_other': 1, 'api_or_backend': 1, 'blueprint_human_gap_disagreement': 1, 'mostly follows blueprint': 1}\nOutcomes: {'not_resolved_or_not_observed': 8}\nQuality tiers: {'unresolved': 4, 'assumption_check': 1}\nCI labels: {}\nCurriculum targets:\n- Use helicopter-view architecture/schema/design evidence beside issue threads.\n- Teach models to compare requested product class against implementation layers.\nAssumption checks:\n- Which blueprint layer is absent: frontend, API, data, auth, tests, or deployment?\n- Does human feedback confirm the same architectural gap?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/ramxak2025/zr-auto-pro", "source_id": "graph-query-motif_query-0ccfc8ab2a87cdad", "synthetic": false, "gold_label": "", "graph_label": "", "source_path": "/data/distillate/foundry_data/graph_queries/blueprint_gap_alignment/shard-0.jsonl", "bundle_label": "", "priority_band": "", "priority_score": 0, "repo_full_name": "ramxak2025/zr-auto-pro", "source_dataset": "graph_queries/blueprint_gap_alignment", "training_usage": "curriculum_gap"}}}, {"ruleId": "foundry_blueprint_gap", "level": "warning", "message": {"text": "Foundry mined blueprint gap alignment: ramxak2025/zr-auto-pro"}, "properties": {"repobilityId": 355152, "scanner": "foundry_dataset", "fingerprint": "df3fd5f8a9ec6a9112f3504213f0fa05b8e4b41228229c36c0ce2287f4628f1f", "category": "tech_debt", "severity": "medium", "confidence": 0.7, "triageState": "open", "verdict": "needs_review", "isResolved": false, "reason": "Imported from mined Foundry/Fable5 evidence with real GitHub/source provenance. Review source_id before acting.", "evidence": {"meta": {"kind": "graph_query_record", "title": "Human feedback aligned with blueprint or architecture gaps", "intent": "Curriculum-gap examples connecting issue threads to helicopter-view gaps.", "labels": {"bug_fix": 3, "api_or_backend": 11, "docs_or_claims": 55, "schema_or_data": 1, "ui_or_frontend": 16, "source_or_other": 14, "deployment_env_gap": 1, "api_integration_gap": 1, "dependency_or_build": 3, "verification_or_tests": 2, "mostly follows blueprint": 1, "issue_or_pull_request_thread": 1, "not_resolved_or_not_observed": 1, "blueprint_human_gap_disagreement": 1, "human_reported_issue_no_linked_fix": 1, "thread_has_human_issue_and_fix_context": 2, "claimed_resolved_with_verification_signal": 3, "human_reported_issue_then_verified_fix_attempt": 1}, "source": "graph_query_export", "motif_id": "blueprint_gap_alignment", "outcomes": {"not_resolved_or_not_observed": 2, "claimed_resolved_with_verification_signal": 6}, "polarity": "mixed", "query_id": "blueprint_gap_alignment", "severity": "medium", "ci_labels": {}, "synthetic": false, "edge_count": 161, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 2, "thread_has_comment": 2, "thread_touches_file": 100, "alignment_uses_comment": 1, "alignment_uses_finding": 1, "chain_has_link_quality": 5, "comment_aligns_finding": 1, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "issue_chain_touches_file": 12, "thread_has_comment_chain": 2, "comment_chain_links_commit": 5, "comment_chain_touches_file": 24, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 2}, "node_count": 120, "node_types": {"repo": 1, "commit": 5, "thread": 1, "comment": 2, "pr_file": 100, "alignment": 1, "fix_outcome": 1, "issue_chain": 1, "link_quality": 5, "comment_chain": 2, "blueprint_finding": 1}, "query_type": "motif_query", "thread_key": "ramxak2025/zr-auto-pro#4", "issue_number": "4", "quality_tiers": {"unresolved": 1, "assumption_check": 1, "weak_supervision": 3}, "repo_full_name": "ramxak2025/zr-auto-pro", "training_usage": "curriculum_gap", "source_motif_id": "graph-pattern-motif-thread-893d0a1e07c0fa36", "graph_gold_label": "supported_by_verification_signal", "changed_file_labels": {"api_or_backend": 55, "docs_or_claims": 275, "schema_or_data": 5, "ui_or_frontend": 80, "source_or_other": 70, "dependency_or_build": 15}}, "text": "Graph query export: Human feedback aligned with blueprint or architecture gaps\nQuery id: blueprint_gap_alignment\nQuery type: motif_query\nIntent: Curriculum-gap examples connecting issue threads to helicopter-view gaps.\nMotif: blueprint_gap_alignment\nTraining usage: curriculum_gap\nGraph gold label: supported_by_verification_signal\nRepo: ramxak2025/zr-auto-pro\nThread: ramxak2025/zr-auto-pro#4\nEvidence:\nGraph motif: Human feedback aligns with blueprint or architecture gaps\nMotif id: blueprint_gap_alignment\nPolarity: mixed\nTraining usage: curriculum_gap\nSeverity: medium\nRepo: ramxak2025/zr-auto-pro\nThread: ramxak2025/zr-auto-pro#4\nGraph gold label: supported_by_verification_signal\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: ramxak2025/zr-auto-pro#4\nRepo: ramxak2025/zr-auto-pro\nIssue/PR number: 4\nGraph consistency label: supported_by_verification_signal\nNodes: 120\nEdges: 161\nNode types: {'pr_file': 100, 'commit': 5, 'link_quality': 5, 'comment': 2, 'comment_chain': 2, 'thread': 1, 'repo': 1, 'issue_chain': 1, 'fix_outcome': 1, 'alignment': 1, 'blueprint_finding': 1}\nEdge types: {'thread_touches_file': 100, 'comment_chain_touches_file': 24, 'issue_chain_touches_file': 12, 'comment_chain_links_commit': 5, 'chain_has_link_quality': 5, '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, 'alignment_uses_comment': 1, 'alignment_uses_finding': 1, 'comment_aligns_finding': 1}\nLabels: {'docs_or_claims': 55, 'ui_or_frontend': 16, 'source_or_other': 14, 'api_or_backend': 11, 'dependency_or_build': 3, '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, 'api_integration_gap': 1, 'deployment_env_gap': 1, 'schema_or_data': 1, 'human_reported_issue_then_verified_fix_attempt': 1, 'human_reported_issue_no_linked_fix': 1, 'not_resolved_or_not_observed': 1}\nOutcomes: {'claimed_resolved_with_verification_signal': 6, 'not_resolved_or_not_observed': 2}\nQuality tiers: {'weak_supervision': 3, 'unresolved': 1, 'assumption_check': 1}\nCI labels: {}\nCurriculum targets:\n- Use helicopter-view architecture/schema/design evidence beside issue threads.\n- Teach models to compare requested product class against implementation layers.\nAssumption checks:\n- Which blueprint layer is absent: frontend, API, data, auth, tests, or deployment?\n- Does human feedback confirm the same architectural gap?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/ramxak2025/zr-auto-pro", "source_id": "graph-query-motif_query-3fb84c630fb20a87", "synthetic": false, "gold_label": "", "graph_label": "", "source_path": "/data/distillate/foundry_data/graph_queries/blueprint_gap_alignment/shard-0.jsonl", "bundle_label": "", "priority_band": "", "priority_score": 0, "repo_full_name": "ramxak2025/zr-auto-pro", "source_dataset": "graph_queries/blueprint_gap_alignment", "training_usage": "curriculum_gap"}}}, {"ruleId": "foundry_assumption_check", "level": "warning", "message": {"text": "Foundry mined assumption checks: ramxak2025/zr-auto-pro"}, "properties": {"repobilityId": 311518, "scanner": "foundry_dataset", "fingerprint": "d91fe2e37b15cbc59058a9603a585ee2d7fc0d0d13c5fffa017bbd3f270720c0", "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": "ramxak2025/zr-auto-pro#7", "human_labels": ["api_or_backend", "data_schema_persistence", "deployment_env_gap", "schema_or_data", "ui_or_frontend"], "issue_number": "7", "thread_label": "thread_has_human_issue_and_fix_context", "outcome_label": "claimed_resolved_unverified", "source_backed": true, "max_confidence": 0.59, "repo_full_name": "ramxak2025/zr-auto-pro", "training_usage": "weak_supervision", "confidence_tier": "weak_supervision", "source_chain_id": "evidence-chain-issue_chain-92bb80a475337f99", "helicopter_views": {"graphs": 2, "schemas": 2}, "artifact_families": {"ci": 2, "docs": 1, "generated_claims": 2}, "source_chain_kind": "issue_chain", "changed_file_count": 5, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {"api_or_backend": 3, "schema_or_data": 1, "ui_or_frontend": 1}, "linked_commit_count": 1, "helicopter_view_count": 4, "source_artifact_count": 5, "classification_reasons": ["source_graph_has_real_artifacts", "source_graph_has_verification_artifacts", "repo_has_isolated_helicopter_views", "link_quality_weak_supervision", "high_risk_human_feedback_label"], "linked_ci_commit_count": 0, "verification_artifact_count": 2, "design_schema_api_artifact_count": 0}, "text": "Comment chain pattern product: assumption_checks\nRepo: ramxak2025/zr-auto-pro\nThread: ramxak2025/zr-auto-pro#7\nOutcome: claimed_resolved_unverified\nThread label: thread_has_human_issue_and_fix_context\nSource graph label: source_backed_multi_signal_graph\nReasons: source_graph_has_real_artifacts, source_graph_has_verification_artifacts, repo_has_isolated_helicopter_views, link_quality_weak_supervision, high_risk_human_feedback_label\nChain evidence:\nIssue/PR evidence chain: ramxak2025/zr-auto-pro#7\nRepo: ramxak2025/zr-auto-pro\nThread label: thread_has_human_issue_and_fix_context\nOutcome: claimed_resolved_unverified\nComment count: 2\nLinked commit count: 1\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 5\nLabels: {'data_schema_persistence': 1, 'deployment_env_gap': 1}\nPolarities: {'bad': 2}\nChanged file labels: {'schema_or_data': 1, 'api_or_backend': 3, 'ui_or_frontend': 1}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-c92b8fc56c37629a\",\n    \"kind\": \"pull_request_body\",\n    \"label\": \"data_schema_persistence\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/ramxak2025/zr-auto-pro/pull/7\",\n    \"text\": \"GitHub feedback: data_schema_persistence\\nPolarity: bad\\nKind: pull_request_body\\nRepo: ramxak2025/zr-auto-pro\\nAuthor: ramxak2025 (User)\\nURL: https://github.com/ramxak2025/zr-auto-pro/pull/7\\nTitle: feat(cars): \u0445\u0440\u0430\u043d\u0438\u0442\u044c \u0433\u043e\u0441\u043d\u043e\u043c\u0435\u0440\u0430 \u0431\u0435\u0437 \u043f\u0440\u043e\u0431\u0435\u043b\u043e\u0432\\nBody:\\n## \u0427\u0442\u043e\\n\u0413\u043e\u0441\u043d\u043e\u043c\u0435\u0440\u0430 \u0432 \u0411\u0414 \u0445\u0440\u0430\u043d\u044f\u0442\u0441\u044f **\u043a\u043e\u043c\u043f\u0430\u043a\u0442\u043d\u043e** (`\u0425807\u041a\u0421198`), \u0430 \u043d\u0435 \u0441 \u043f\u0440\u043e\u0431\u0435\u043b\u0430\u043c\u0438 \u043a\u0430\u043a \u0431\u044b\u043b\u043e (`\u0425 807 \u041a\u0421 198`). \u041f\u0440\u043e\u0431\u0435\u043b\u044b \u0442\u0435\u043f\u0435\u0440\u044c \u2014 \u0442\u043e\u043b\u044c\u043a\u043e UI-\u0444\u043e\u0440\u043c\u0430\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043f\u0440\u0438 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0438.\\n\\n## \u041f\u0440\u0430\u0432\u043a\u0438\\n- `migrations/027_compact_plate_numbers.sql` \u2014 `UPDATE cars SET plate_number = REPLACE(plate_number, ' ', '')`. \u0418\u0434\u0435\u043c\u043f\u043e\u0442\u0435\u043d\u0442\u043d\u0430\u044f.\\n- `imports.service.ts` \u2014 \u043f\u0438\u0448\u0435\u0442 \u0432 DB `plate.key` (\u0431\u0435\u0437 \u043f\u0440\u043e\u0431\u0435\u043b\u043e\u0432) \u0432\u043c\u0435\u0441\u0442\u043e `plate.display`.\\n- `clients.service.ts` / `cars.service.ts` \u2014 \u043f\u043e\u0438\u0441\u043a \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0438 \u0441 \u043f\u0440\u043e\u0431\u0435\u043b\u0430\u043c\u0438, \u0438 \u0431\u0435\u0437 (REPLACE \u0432 WHERE).\\n- `ClientDetailPage.tsx` \u2014 \u0444\u043e\u0440\u043c\u0430 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0430\u0432\u0442\u043e: \u043f\u0440\u043e\u0431\u0435\u043b\u044b \u0441\u0442\u0438\u0440\u0430\u044e\u0442\u0441\u044f \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438, \u0432\u0432\u043e\u0434 uppercase.\\n\\n## Deploy\\n```bash\\ncd /opt/zr-auto-pro\\ngit fetch origin refactor/full-audit-2026\\ngit reset --hard origin/refactor/full-audit-2026\\ndocker compose up -d --build backend\\n```\\nBackend \u0441\u0430\u043c \u043f\u0440\u0438\u043c\u0435\u043d\u0438\u0442 \u043c\u0438\u0433\u0440\u0430\u0446\u0438\u044e 027 \u043f\u0440\u0438 \u0441\u0442\u0430\u0440\u0442\u0435. Frontend \u043f\u0435\u0440\u0435\u0441\u043e\u0431\u0438\u0440\u0430\u0442\u044c \u043d\u0435 \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e (\u043c\u0438\u043d\u043e\u0440\u043d\u0430\u044f \u043f\u0440\u0430\u0432\u043a\u0430 \u0432 \u0444\u043e\u0440\u043c\u0435), \u043d\u043e \u043c\u043e\u0436\u043d\u043e `--build frontend` \u0435\u0441\u043b\u0438 \u0445\u043e\u0447\u0435\u0442\u0441\u044f.\\n\\n\\n---\\n_Generated by [Claude Code](https://claude\"\n  },\n  {\n    \"id\": \"github-feedback-comment-224b53135919d7b1\",\n    \"kind\": \"issue_comment\",\n    \"label\": \"deployment_env_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/ramxak2025/zr-auto-pro/pull/7#issuecomment-4439914575\",\n    \"text\": \"GitHub feedback: deployment_env_gap\\nPolarity: bad\\nKind: issue_comment\\nRepo: ramxak2025/zr-auto-pro\\nAuthor: vercel[bot] (Bot)\\nURL: https://github.com/ramxak2025/zr-auto-pro/pull/7#issuecomment-4439914575\\nTitle: \\nBody:\\n[vc]: #OVX7p/mm7ATiUJjC/IqJU2n1sSK0X91OcsrWXGw8/RY=:eyJpc01vbm9yZXBvIjp0cnVlLCJ0eXBlIjoiZ2l0aHViIiwicHJvamVjdHMiOlt7Im5h\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/ramxak2025/zr-auto-pro", "source_id": "comment-chain-pattern-assumption_checks-0345c7e9ef5506ff", "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": "ramxak2025/zr-auto-pro", "source_dataset": "comment_chain_patterns/assumption_checks", "training_usage": "weak_supervision"}}}, {"ruleId": "foundry_assumption_check", "level": "warning", "message": {"text": "Foundry mined assumption checks: ramxak2025/zr-auto-pro"}, "properties": {"repobilityId": 311517, "scanner": "foundry_dataset", "fingerprint": "74483578504aba335cf98b4a548542ce09c67c2e8c4c49325b99ffc15039ca1f", "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": "ramxak2025/zr-auto-pro#6", "human_labels": ["dependency_or_build", "deployment_env_gap", "schema_or_data", "security_auth_secret", "source_or_other", "ui_or_frontend"], "issue_number": "6", "thread_label": "thread_has_human_issue_and_fix_context", "outcome_label": "claimed_resolved_unverified", "source_backed": true, "max_confidence": 0.65, "repo_full_name": "ramxak2025/zr-auto-pro", "training_usage": "weak_supervision", "confidence_tier": "weak_supervision", "source_chain_id": "evidence-chain-issue_chain-a010757ae8886e6d", "helicopter_views": {"graphs": 2, "schemas": 2}, "artifact_families": {"ci": 2, "docs": 1, "generated_claims": 2}, "source_chain_kind": "issue_chain", "changed_file_count": 9, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {"schema_or_data": 1, "ui_or_frontend": 4, "source_or_other": 2, "dependency_or_build": 2}, "linked_commit_count": 5, "helicopter_view_count": 4, "source_artifact_count": 5, "classification_reasons": ["source_graph_has_real_artifacts", "source_graph_has_verification_artifacts", "repo_has_isolated_helicopter_views", "link_quality_weak_supervision", "high_risk_human_feedback_label"], "linked_ci_commit_count": 0, "verification_artifact_count": 2, "design_schema_api_artifact_count": 0}, "text": "Comment chain pattern product: assumption_checks\nRepo: ramxak2025/zr-auto-pro\nThread: ramxak2025/zr-auto-pro#6\nOutcome: claimed_resolved_unverified\nThread label: thread_has_human_issue_and_fix_context\nSource graph label: source_backed_multi_signal_graph\nReasons: source_graph_has_real_artifacts, source_graph_has_verification_artifacts, repo_has_isolated_helicopter_views, link_quality_weak_supervision, high_risk_human_feedback_label\nChain evidence:\nIssue/PR evidence chain: ramxak2025/zr-auto-pro#6\nRepo: ramxak2025/zr-auto-pro\nThread label: thread_has_human_issue_and_fix_context\nOutcome: claimed_resolved_unverified\nComment count: 2\nLinked commit count: 5\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 9\nLabels: {'security_auth_secret': 1, 'deployment_env_gap': 1}\nPolarities: {'bad': 2}\nChanged file labels: {'schema_or_data': 1, 'source_or_other': 2, 'dependency_or_build': 2, 'ui_or_frontend': 4}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-321c5e967ce0773b\",\n    \"kind\": \"pull_request_body\",\n    \"label\": \"security_auth_secret\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/ramxak2025/zr-auto-pro/pull/6\",\n    \"text\": \"GitHub feedback: security_auth_secret\\nPolarity: bad\\nKind: pull_request_body\\nRepo: ramxak2025/zr-auto-pro\\nAuthor: ramxak2025 (User)\\nURL: https://github.com/ramxak2025/zr-auto-pro/pull/6\\nTitle: perf: instant lists & search (Stage 1 \u2014 cache + prefetch + pg tuning + indexes)\\nBody:\\n## TL;DR\\n\\n\u041f\u043e\u0441\u043b\u0435 \u044d\u0442\u043e\u0433\u043e PR:\\n- \u0421\u043a\u043b\u0430\u0434 / \u041a\u043b\u0438\u0435\u043d\u0442\u044b / \u0416\u0443\u0440\u043d\u0430\u043b \u043d\u0430 \u0441\u0430\u0439\u0442\u0435 \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u044e\u0442\u0441\u044f **\u043c\u0433\u043d\u043e\u0432\u0435\u043d\u043d\u043e** \u043f\u0440\u0438 \u043f\u043e\u0432\u0442\u043e\u0440\u043d\u044b\u0445 \u0437\u0430\u0445\u043e\u0434\u0430\u0445 (\u0438\u0437 IndexedDB).\\n- \u041f\u0435\u0440\u0432\u044b\u0439 \u0437\u0430\u0445\u043e\u0434 \u043f\u043e\u0441\u043b\u0435 \u043b\u043e\u0433\u0438\u043d\u0430 \u2014 \u0434\u0430\u043d\u043d\u044b\u0435 **\u0443\u0436\u0435 \u0432 \u043a\u0435\u0448\u0435** \u0431\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u044f prefetch.\\n- \u041f\u043e\u0438\u0441\u043a \u043f\u043e \u0433\u043e\u0441\u043d\u043e\u043c\u0435\u0440\u0443 / \u043c\u043e\u0434\u0435\u043b\u0438 / \u0442\u0435\u043b\u0435\u0444\u043e\u043d\u0443 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0447\u0435\u0440\u0435\u0437 trigram-\u0438\u043d\u0434\u0435\u043a\u0441\u044b \u2014 \u043c\u0438\u043b\u043b\u0438\u0441\u0435\u043a\u0443\u043d\u0434\u044b \u043d\u0430 \u043b\u044e\u0431\u043e\u043c \u043e\u0431\u044a\u0451\u043c\u0435.\\n- Postgres \u0434\u044b\u0448\u0438\u0442 \u0441\u0432\u043e\u0431\u043e\u0434\u043d\u043e \u2014 \u043a\u043e\u043d\u0444\u0438\u0433 \u043f\u043e\u0434 6 GB RAM, NVMe.\\n\\n## \u0427\u0442\u043e \u043c\u0435\u043d\u044f\u043b\u043e\u0441\u044c\\n\\n### \u0412\u0435\u0431 (`frontend/`)\\n- **`@tanstack/react-query-persist-client` + `idb-keyval`** \u2014 \u0431\u0435\u043b\u044b\u0439 \u0441\u043f\u0438\u0441\u043e\u043a \u043a\u043b\u044e\u0447\u0435\u0439 \u0437\u0435\u0440\u043a\u0430\u043b\u0438\u0442 mobile/PERSISTED_KEYS (products, clients, cars, suppliers, services, users, schedule, dashboard, subscription \u0438 \u0442.\u043f.).\\n- **\u0413\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u044b\u0439 `placeholderData: prev => prev`** \u0432 `QueryClient` \u2014 \u0431\u043e\u043b\u044c\u0448\u0435 \u043d\u0435\u0442 \u00ab\u043c\u0438\u0433\u0430\u043d\u0438\u044f\u00bb \u043f\u0443\u0441\u0442\u044b\u043c \u0441\u043f\u0438\u0441\u043a\u043e\u043c \u043f\u0440\u0438 \u0441\u043c\u0435\u043d\u0435 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b/\u0444\u0438\u043b\u044c\u0442\u0440\u0430.\\n- **`prefetchAfterLogin`** \u0432 `AuthContext` \u0433\u0440\u0435\u0435\u0442 \u043a\u043b\u044e\u0447\u0435\u0432\u044b\u0435 reference-\u043b\u0438\u0441\u0442\u044b \u0441\u0440\u0430\u0437\u0443 \u043f\u043e\u0441\u043b\u0435 `auth/me` \u0438\u043b\u0438 \u0444\u0440\u0435\u0448-\u043b\u043e\u0433\u0438\u043d\u0430.\\n\\n### Mobile (`mobile/`)\\n- `prefetchAfterLogin` \u0434\u043e\u043f\u043e\u043b\u043d\u0435\u043d `subscription` \"\n  },\n  {\n    \"id\": \"github-feedback-comment-fa4df6e5f1f32cf7\",\n    \"kind\": \"issue_comment\",\n    \"label\": \"deployment_env_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/ramxak2025/zr-auto-pro/pull/6#issuecomment-4434981692\",\n    \"text\": \"GitHub feedback: deployment_env_gap\\nPolarity: bad\\nKind: issue_comment\\nRepo: ramxak2025/zr-auto-pro\\nAuthor: vercel[bot] (Bot)\\nURL: https://github.com/ramxak2025/zr-auto-pro/pull/6#issuecomment-4434981692\\nTitle: \\nBody:\\n[vc]: #dPDJvOEOyxPZnsHGu3685Cc3RfCefo+jwkIGg10Wexg=:eyJpc01vbm9yZXBvIjp0cnVlLCJ0eXBlIjoiZ2l0aHViIiwicHJ\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/ramxak2025/zr-auto-pro", "source_id": "comment-chain-pattern-assumption_checks-b2e030b94bea16a1", "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": "ramxak2025/zr-auto-pro", "source_dataset": "comment_chain_patterns/assumption_checks", "training_usage": "weak_supervision"}}}, {"ruleId": "foundry_assumption_check", "level": "warning", "message": {"text": "Foundry mined assumption checks: ramxak2025/zr-auto-pro"}, "properties": {"repobilityId": 311516, "scanner": "foundry_dataset", "fingerprint": "c4bd88bdba6f5a5bc4ba0b4748252401d2affbbe14f0ad340e39f860d598de49", "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": "ramxak2025/zr-auto-pro#3", "human_labels": ["api_or_backend", "deployment_env_gap", "schema_or_data", "security_auth_secret", "source_or_other", "test_or_ci"], "issue_number": "3", "thread_label": "thread_has_human_issue_and_fix_context", "outcome_label": "claimed_resolved_unverified", "source_backed": true, "max_confidence": 0.58, "repo_full_name": "ramxak2025/zr-auto-pro", "training_usage": "weak_supervision", "confidence_tier": "weak_supervision", "source_chain_id": "evidence-chain-issue_chain-b501c1eb95cb45d7", "helicopter_views": {"graphs": 2, "schemas": 2}, "artifact_families": {"ci": 2, "docs": 1, "generated_claims": 2}, "source_chain_kind": "issue_chain", "changed_file_count": 100, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {"test_or_ci": 1, "api_or_backend": 80, "schema_or_data": 15, "source_or_other": 4}, "linked_commit_count": 1, "helicopter_view_count": 4, "source_artifact_count": 5, "classification_reasons": ["source_graph_has_real_artifacts", "source_graph_has_verification_artifacts", "repo_has_isolated_helicopter_views", "link_quality_weak_supervision", "high_risk_human_feedback_label"], "linked_ci_commit_count": 0, "verification_artifact_count": 2, "design_schema_api_artifact_count": 0}, "text": "Comment chain pattern product: assumption_checks\nRepo: ramxak2025/zr-auto-pro\nThread: ramxak2025/zr-auto-pro#3\nOutcome: claimed_resolved_unverified\nThread label: thread_has_human_issue_and_fix_context\nSource graph label: source_backed_multi_signal_graph\nReasons: source_graph_has_real_artifacts, source_graph_has_verification_artifacts, repo_has_isolated_helicopter_views, link_quality_weak_supervision, high_risk_human_feedback_label\nChain evidence:\nIssue/PR evidence chain: ramxak2025/zr-auto-pro#3\nRepo: ramxak2025/zr-auto-pro\nThread label: thread_has_human_issue_and_fix_context\nOutcome: claimed_resolved_unverified\nComment count: 2\nLinked commit count: 1\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 100\nLabels: {'security_auth_secret': 1, 'deployment_env_gap': 1}\nPolarities: {'bad': 2}\nChanged file labels: {'source_or_other': 4, 'test_or_ci': 1, 'api_or_backend': 80, 'schema_or_data': 15}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-0c85993f82e95777\",\n    \"kind\": \"pull_request_body\",\n    \"label\": \"security_auth_secret\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/ramxak2025/zr-auto-pro/pull/3\",\n    \"text\": \"GitHub feedback: security_auth_secret\\nPolarity: bad\\nKind: pull_request_body\\nRepo: ramxak2025/zr-auto-pro\\nAuthor: ramxak2025 (User)\\nURL: https://github.com/ramxak2025/zr-auto-pro/pull/3\\nTitle: feat: \u043f\u043e\u043b\u043d\u0430\u044f \u043f\u0435\u0440\u0435\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u0441 \u043d\u0443\u043b\u044f (\u0441\u043e\u0445\u0440\u0430\u043d\u0451\u043d \u0434\u0438\u0437\u0430\u0439\u043d)\\nBody:\\n\u0423\u0434\u0430\u043b\u0451\u043d \u0432\u0435\u0441\u044c \u0441\u0442\u0430\u0440\u044b\u0439 \u043a\u043e\u0434 \u0438 \u043d\u0430\u043f\u0438\u0441\u0430\u043d \u0437\u0430\u043d\u043e\u0432\u043e \u0441 \u0447\u0438\u0441\u0442\u043e\u0433\u043e \u043b\u0438\u0441\u0442\u0430.\\n\u0421\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u044b: index.css, tailwind.config.js, postcss.config.js, \u043b\u043e\u0433\u043e\u0442\u0438\u043f\u044b, nginx.conf.\\n\\nBackend (NestJS): 18 \u043c\u043e\u0434\u0443\u043b\u0435\u0439 - auth, users, tenants, clients, cars, products,\\nservices, checks, suppliers, salary, schedule, shifts, reports, uploads, seed.\\nFrontend (React): 19 \u0441\u0442\u0440\u0430\u043d\u0438\u0446, 11 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u043e\u0432, API \u0441\u043b\u043e\u0439, AuthContext.\\nDocker: PostgreSQL + Backend + Frontend (Nginx).\\n\\n\u041b\u043e\u0433\u0438\u043d \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e: admin / admin123\\n\\nhttps://claude.ai/code/session_017Sdro9rDrep6ZS66DzmXkz\"\n  },\n  {\n    \"id\": \"github-feedback-comment-bf2dc007a14861b1\",\n    \"kind\": \"issue_comment\",\n    \"label\": \"deployment_env_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/ramxak2025/zr-auto-pro/pull/3#issuecomment-3977159399\",\n    \"text\": \"GitHub feedback: deployment_env_gap\\nPolarity: bad\\nKind: issue_comment\\nRepo: ramxak2025/zr-auto-pro\\nAuthor: vercel[bot] (Bot)\\nURL: https://github.com/ramxak2025/zr-auto-pro/pull/3#issuecomment-3977159399\\nTitle: \\nBody:\\n[vc]: #pBM5Xbj+vjcSfdg85T+eIKPs+bN8lQN+mZ7FE7EE3lk=:eyJpc01vbm9yZXBvIjp0cnVlLCJ0eXBlIjoiZ2l0aHViIiwicHJvamVjdHMiOlt7Im5hbWUiOiJ6ci1hdXRvLXBybyIsInByb2plY3RJZCI6InByal9JdExwcmZ1V3hpbUJRSlREWGxWUllWQlFqVXFlIiwibGl2ZUZlZWRiYWNrIjp7InJlc29sdmVkIjowLCJ1bnJlc29sdmVkIjowLCJ0b3RhbCI6MCwibGluayI6InpyLWF1dG8tcHJvLWdpdC1jbGF1ZGUtcmVmYWN0b3ItYS02NWEzNzktcmFteGFrNC0zNTY5cy1wcm9qZWN0cy52ZXJjZWwuYXBwIn0sImluc3BlY3RvclVybCI6Imh0dHBzOi8vdmVyY2VsLmNvbS9yYW14YWs0LTM1NjlzLXByb2plY3RzL3pyLWF1dG8tcHJvL21LUnNiMXA3UHhHWTVMU2Z1UWZidmJCOEpqUkQiLCJwcmV2aWV3VXJsIjoienIt\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/ramxak2025/zr-auto-pro", "source_id": "comment-chain-pattern-assumption_checks-6b704a7a64fa96bd", "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": "ramxak2025/zr-auto-pro", "source_dataset": "comment_chain_patterns/assumption_checks", "training_usage": "weak_supervision"}}}, {"ruleId": "foundry_assumption_check", "level": "warning", "message": {"text": "Foundry mined assumption checks: ramxak2025/zr-auto-pro"}, "properties": {"repobilityId": 311515, "scanner": "foundry_dataset", "fingerprint": "33f8fd741dfc175b89b4f63558c7ccc1f099cdb7dbee86a8db17df1a038e80fe", "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": "ramxak2025/zr-auto-pro#2", "human_labels": ["api_or_backend", "deployment_env_gap", "schema_or_data", "security_auth_secret", "source_or_other", "test_or_ci"], "issue_number": "2", "thread_label": "thread_has_human_issue_and_fix_context", "outcome_label": "claimed_resolved_unverified", "source_backed": true, "max_confidence": 0.58, "repo_full_name": "ramxak2025/zr-auto-pro", "training_usage": "weak_supervision", "confidence_tier": "weak_supervision", "source_chain_id": "evidence-chain-issue_chain-aff5075d56c22610", "helicopter_views": {"graphs": 2, "schemas": 2}, "artifact_families": {"ci": 2, "docs": 1, "generated_claims": 2}, "source_chain_kind": "issue_chain", "changed_file_count": 100, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {"test_or_ci": 1, "api_or_backend": 93, "schema_or_data": 4, "source_or_other": 2}, "linked_commit_count": 1, "helicopter_view_count": 4, "source_artifact_count": 5, "classification_reasons": ["source_graph_has_real_artifacts", "source_graph_has_verification_artifacts", "repo_has_isolated_helicopter_views", "link_quality_weak_supervision", "high_risk_human_feedback_label"], "linked_ci_commit_count": 0, "verification_artifact_count": 2, "design_schema_api_artifact_count": 0}, "text": "Comment chain pattern product: assumption_checks\nRepo: ramxak2025/zr-auto-pro\nThread: ramxak2025/zr-auto-pro#2\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: ramxak2025/zr-auto-pro#2\nRepo: ramxak2025/zr-auto-pro\nThread label: thread_has_human_issue_and_fix_context\nOutcome: claimed_resolved_unverified\nComment count: 2\nLinked commit count: 1\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 100\nLabels: {'security_auth_secret': 1, 'deployment_env_gap': 1}\nPolarities: {'bad': 2}\nChanged file labels: {'source_or_other': 2, 'test_or_ci': 1, 'api_or_backend': 93, 'schema_or_data': 4}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-ce191efd3dd09552\",\n    \"kind\": \"pull_request_body\",\n    \"label\": \"security_auth_secret\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/ramxak2025/zr-auto-pro/pull/2\",\n    \"text\": \"GitHub feedback: security_auth_secret\\nPolarity: bad\\nKind: pull_request_body\\nRepo: ramxak2025/zr-auto-pro\\nAuthor: ramxak2025 (User)\\nURL: https://github.com/ramxak2025/zr-auto-pro/pull/2\\nTitle: feat: \u043f\u043e\u043b\u043d\u0430\u044f \u043f\u0435\u0440\u0435\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u0441 \u043d\u0443\u043b\u044f (\u0441\u043e\u0445\u0440\u0430\u043d\u0451\u043d \u0434\u0438\u0437\u0430\u0439\u043d)\\nBody:\\n\u0423\u0434\u0430\u043b\u0451\u043d \u0432\u0435\u0441\u044c \u0441\u0442\u0430\u0440\u044b\u0439 \u043a\u043e\u0434 \u0438 \u043d\u0430\u043f\u0438\u0441\u0430\u043d \u0437\u0430\u043d\u043e\u0432\u043e \u0441 \u0447\u0438\u0441\u0442\u043e\u0433\u043e \u043b\u0438\u0441\u0442\u0430.\\n\u0421\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u044b: index.css, tailwind.config.js, postcss.config.js, \u043b\u043e\u0433\u043e\u0442\u0438\u043f\u044b, nginx.conf.\\n\\nBackend (NestJS): 18 \u043c\u043e\u0434\u0443\u043b\u0435\u0439 - auth, users, tenants, clients, cars, products,\\nservices, checks, suppliers, salary, schedule, shifts, reports, uploads, seed.\\nFrontend (React): 19 \u0441\u0442\u0440\u0430\u043d\u0438\u0446, 11 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u043e\u0432, API \u0441\u043b\u043e\u0439, AuthContext.\\nDocker: PostgreSQL + Backend + Frontend (Nginx).\\n\\n\u041b\u043e\u0433\u0438\u043d \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e: admin / admin123\\n\\nhttps://claude.ai/code/session_017Sdro9rDrep6ZS66DzmXkz\"\n  },\n  {\n    \"id\": \"github-feedback-comment-97a8fd099cd66036\",\n    \"kind\": \"issue_comment\",\n    \"label\": \"deployment_env_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/ramxak2025/zr-auto-pro/pull/2#issuecomment-3936317825\",\n    \"text\": \"GitHub feedback: deployment_env_gap\\nPolarity: bad\\nKind: issue_comment\\nRepo: ramxak2025/zr-auto-pro\\nAuthor: vercel[bot] (Bot)\\nURL: https://github.com/ramxak2025/zr-auto-pro/pull/2#issuecomment-3936317825\\nTitle: \\nBody:\\n[vc]: #UOGzCfCLS60gB5S6GzVE3Rk9zRXbKdrDGVxSadF1COo=:eyJpc01vbm9yZXBvIjp0cnVlLCJ0eXBlIjoiZ2l0aHViIiwicHJvamVjdHMiOlt7Im5hbWUiOiJ6ci1hdXRvLXBybyIsInByb2plY3RJZCI6InByal9JdExwcmZ1V3hpbUJRSlREWGxWUllWQlFqVXFlIiwibGl2ZUZlZWRiYWNrIjp7InJlc29sdmVkIjowLCJ1bnJlc29sdmVkIjowLCJ0b3RhbCI6MCwibGluayI6InpyLWF1dG8tcHJvLWdpdC1jbGF1ZGUtcmVkZXNpZ24tZi03YmM5NjQtcmFteGFrNC0zNTY5cy1wcm9qZWN0cy52ZXJjZWwuYXBwIn0sImluc3BlY3RvclVybCI6Imh0dHBzOi8vdmVyY2VsLmNvbS9yYW14YWs0LTM1NjlzLXByb2plY3RzL3pyLWF1dG8tcHJvL0FDQVFVeXZ5QW13SjJnWGd6cmRVRHB0QjJ4VUwiLCJwcmV2aWV3VXJsIjoienItY\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/ramxak2025/zr-auto-pro", "source_id": "comment-chain-pattern-assumption_checks-3b21d8b43b4fb567", "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": "ramxak2025/zr-auto-pro", "source_dataset": "comment_chain_patterns/assumption_checks", "training_usage": "weak_supervision"}}}, {"ruleId": "foundry_docs_only_fix", "level": "error", "message": {"text": "Foundry mined docs only runtime fix: ramxak2025/zr-auto-pro"}, "properties": {"repobilityId": 358273, "scanner": "foundry_dataset", "fingerprint": "84a511f5534e11aa7e237243c8f0a5aaad4537894866b7f832443aac6cd8f17d", "category": "practices", "severity": "high", "confidence": 0.8, "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": "Docs-only response to runtime or integration issue", "intent": "Assumption-check examples where docs or claims are not enough proof.", "labels": {"bug_fix": 3, "api_or_backend": 11, "docs_or_claims": 55, "schema_or_data": 1, "ui_or_frontend": 16, "source_or_other": 14, "deployment_env_gap": 1, "api_integration_gap": 1, "dependency_or_build": 3, "verification_or_tests": 2, "mostly follows blueprint": 1, "issue_or_pull_request_thread": 1, "not_resolved_or_not_observed": 1, "blueprint_human_gap_disagreement": 1, "human_reported_issue_no_linked_fix": 1, "thread_has_human_issue_and_fix_context": 2, "claimed_resolved_with_verification_signal": 3, "human_reported_issue_then_verified_fix_attempt": 1}, "source": "graph_query_export", "motif_id": "docs_only_runtime_fix", "outcomes": {"not_resolved_or_not_observed": 2, "claimed_resolved_with_verification_signal": 6}, "polarity": "bad", "query_id": "docs_only_runtime_fix", "severity": "high", "ci_labels": {}, "synthetic": false, "edge_count": 161, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 2, "thread_has_comment": 2, "thread_touches_file": 100, "alignment_uses_comment": 1, "alignment_uses_finding": 1, "chain_has_link_quality": 5, "comment_aligns_finding": 1, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "issue_chain_touches_file": 12, "thread_has_comment_chain": 2, "comment_chain_links_commit": 5, "comment_chain_touches_file": 24, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 2}, "node_count": 120, "node_types": {"repo": 1, "commit": 5, "thread": 1, "comment": 2, "pr_file": 100, "alignment": 1, "fix_outcome": 1, "issue_chain": 1, "link_quality": 5, "comment_chain": 2, "blueprint_finding": 1}, "query_type": "motif_query", "thread_key": "ramxak2025/zr-auto-pro#4", "issue_number": "4", "quality_tiers": {"unresolved": 1, "assumption_check": 1, "weak_supervision": 3}, "repo_full_name": "ramxak2025/zr-auto-pro", "training_usage": "assumption_check", "source_motif_id": "graph-pattern-motif-thread-c2eb0ac8c50cbe09", "graph_gold_label": "supported_by_verification_signal", "changed_file_labels": {"api_or_backend": 55, "docs_or_claims": 275, "schema_or_data": 5, "ui_or_frontend": 80, "source_or_other": 70, "dependency_or_build": 15}}, "text": "Graph query export: Docs-only response to runtime or integration issue\nQuery id: docs_only_runtime_fix\nQuery type: motif_query\nIntent: Assumption-check examples where docs or claims are not enough proof.\nMotif: docs_only_runtime_fix\nTraining usage: assumption_check\nGraph gold label: supported_by_verification_signal\nRepo: ramxak2025/zr-auto-pro\nThread: ramxak2025/zr-auto-pro#4\nEvidence:\nGraph motif: Runtime/integration complaint answered mostly with docs or claims\nMotif id: docs_only_runtime_fix\nPolarity: bad\nTraining usage: assumption_check\nSeverity: high\nRepo: ramxak2025/zr-auto-pro\nThread: ramxak2025/zr-auto-pro#4\nGraph gold label: supported_by_verification_signal\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: ramxak2025/zr-auto-pro#4\nRepo: ramxak2025/zr-auto-pro\nIssue/PR number: 4\nGraph consistency label: supported_by_verification_signal\nNodes: 120\nEdges: 161\nNode types: {'pr_file': 100, 'commit': 5, 'link_quality': 5, 'comment': 2, 'comment_chain': 2, 'thread': 1, 'repo': 1, 'issue_chain': 1, 'fix_outcome': 1, 'alignment': 1, 'blueprint_finding': 1}\nEdge types: {'thread_touches_file': 100, 'comment_chain_touches_file': 24, 'issue_chain_touches_file': 12, 'comment_chain_links_commit': 5, 'chain_has_link_quality': 5, '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, 'alignment_uses_comment': 1, 'alignment_uses_finding': 1, 'comment_aligns_finding': 1}\nLabels: {'docs_or_claims': 55, 'ui_or_frontend': 16, 'source_or_other': 14, 'api_or_backend': 11, 'dependency_or_build': 3, '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, 'api_integration_gap': 1, 'deployment_env_gap': 1, 'schema_or_data': 1, 'human_reported_issue_then_verified_fix_attempt': 1, 'human_reported_issue_no_linked_fix': 1, 'not_resolved_or_not_observed': 1}\nOutcomes: {'claimed_resolved_with_verification_signal': 6, 'not_resolved_or_not_observed': 2}\nQuality tiers: {'weak_supervision': 3, 'unresolved': 1, 'assumption_check': 1}\nCI labels: {}\nCurriculum targets:\n- Train models to reject docs-only fixes for runtime, integration, data, or security failures.\n- Add paired examples where the correct fix changes executable paths and adds verification.\nAssumption checks:\n- Do changed files include executable code or only documentation/claims?\n- Does the complaint require runtime behavior that docs cannot prove?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/ramxak2025/zr-auto-pro", "source_id": "graph-query-motif_query-365814c08a48617b", "synthetic": false, "gold_label": "", "graph_label": "", "source_path": "/data/distillate/foundry_data/graph_queries/docs_only_runtime_fix/shard-0.jsonl", "bundle_label": "", "priority_band": "", "priority_score": 0, "repo_full_name": "ramxak2025/zr-auto-pro", "source_dataset": "graph_queries/docs_only_runtime_fix", "training_usage": "assumption_check"}}}, {"ruleId": "foundry_test_ci_gap", "level": "error", "message": {"text": "Foundry mined test ci gap after feedback: ramxak2025/zr-auto-pro"}, "properties": {"repobilityId": 340675, "scanner": "foundry_dataset", "fingerprint": "05207cbec4e875a0e2d63e61519642b39bc1576e032790e9af059c0f25344101", "category": "testing", "severity": "high", "confidence": 0.78, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Imported from mined Foundry/Fable5 evidence with real GitHub/source provenance. Review source_id before acting.", "evidence": {"meta": {"kind": "graph_query_record", "title": "Feedback exposes missing tests or CI", "intent": "Hard negatives for feedback/fix chains without adequate guardrails.", "labels": {"test_or_ci": 2, "test_ci_gap": 1, "api_or_backend": 2, "docs_or_claims": 6, "source_or_other": 3, "deployment_env_gap": 1, "dependency_or_build": 2, "mostly follows blueprint": 1, "issue_or_pull_request_thread": 1, "not_resolved_or_not_observed": 4, "blueprint_human_gap_disagreement": 1, "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": 71, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 2, "thread_has_comment": 2, "thread_touches_file": 15, "alignment_uses_comment": 1, "alignment_uses_finding": 1, "chain_has_link_quality": 5, "comment_aligns_finding": 1, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "issue_chain_touches_file": 12, "thread_has_comment_chain": 2, "comment_chain_touches_file": 24, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 2}, "node_count": 30, "node_types": {"repo": 1, "thread": 1, "comment": 2, "pr_file": 15, "alignment": 1, "fix_outcome": 1, "issue_chain": 1, "link_quality": 5, "comment_chain": 2, "blueprint_finding": 1}, "query_type": "motif_query", "thread_key": "ramxak2025/zr-auto-pro#9", "issue_number": "9", "quality_tiers": {"unresolved": 4, "assumption_check": 1}, "repo_full_name": "ramxak2025/zr-auto-pro", "training_usage": "hard_negative", "source_motif_id": "graph-pattern-motif-thread-124521998220d262", "graph_gold_label": "assumption_check", "changed_file_labels": {"test_or_ci": 10, "api_or_backend": 10, "docs_or_claims": 30, "source_or_other": 15, "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: assumption_check\nRepo: ramxak2025/zr-auto-pro\nThread: ramxak2025/zr-auto-pro#9\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: ramxak2025/zr-auto-pro\nThread: ramxak2025/zr-auto-pro#9\nGraph gold label: assumption_check\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: ramxak2025/zr-auto-pro#9\nRepo: ramxak2025/zr-auto-pro\nIssue/PR number: 9\nGraph consistency label: assumption_check\nNodes: 30\nEdges: 71\nNode types: {'pr_file': 15, 'link_quality': 5, 'comment': 2, 'comment_chain': 2, 'thread': 1, 'repo': 1, 'issue_chain': 1, 'fix_outcome': 1, 'alignment': 1, 'blueprint_finding': 1}\nEdge types: {'comment_chain_touches_file': 24, 'thread_touches_file': 15, 'issue_chain_touches_file': 12, 'chain_has_link_quality': 5, '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, 'alignment_uses_comment': 1, 'alignment_uses_finding': 1, 'comment_aligns_finding': 1}\nLabels: {'docs_or_claims': 6, 'not_resolved_or_not_observed': 4, 'source_or_other': 3, 'api_or_backend': 2, 'test_or_ci': 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, 'test_ci_gap': 1, 'deployment_env_gap': 1, 'blueprint_human_gap_disagreement': 1, 'mostly follows blueprint': 1}\nOutcomes: {'not_resolved_or_not_observed': 8}\nQuality tiers: {'unresolved': 4, 'assumption_check': 1}\nCI labels: {}\nCurriculum targets:\n- Turn human feedback into regression tests and CI gates.\n- Penalize fixes that do not add or exercise verification for affected workflows.\nAssumption checks:\n- Did the fix add tests for the exact complaint?\n- Does CI run those tests, or is verification only implied?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/ramxak2025/zr-auto-pro", "source_id": "graph-query-motif_query-b9fa8d54f392ff3a", "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": "ramxak2025/zr-auto-pro", "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: ramxak2025/zr-auto-pro"}, "properties": {"repobilityId": 330819, "scanner": "foundry_dataset", "fingerprint": "946bd7cac48056f5847df5fb5aedb267ee9bc12cac589edc9d53d6a393619101", "category": "quality", "severity": "high", "confidence": 0.76, "triageState": "open", "verdict": "needs_review", "isResolved": false, "reason": "Imported from mined Foundry/Fable5 evidence with real GitHub/source provenance. Review source_id before acting.", "evidence": {"meta": {"kind": "graph_query_record", "title": "Schema, UI, and API mismatch", "intent": "Assumption-check examples for data-path consistency across layers.", "labels": {"bug_fix": 1, "api_or_backend": 3, "schema_or_data": 1, "ui_or_frontend": 1, "deployment_env_gap": 1, "data_schema_persistence": 1, "mostly follows blueprint": 1, "claimed_resolved_unverified": 3, "issue_or_pull_request_thread": 1, "not_resolved_or_not_observed": 1, "blueprint_human_gap_disagreement": 1, "human_reported_issue_no_linked_fix": 1, "human_reported_issue_then_fix_attempt": 1, "thread_has_human_issue_and_fix_context": 2}, "source": "graph_query_export", "motif_id": "schema_ui_api_mismatch", "outcomes": {"claimed_resolved_unverified": 6, "not_resolved_or_not_observed": 2}, "polarity": "bad", "query_id": "schema_ui_api_mismatch", "severity": "high", "ci_labels": {}, "synthetic": false, "edge_count": 41, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 2, "thread_has_comment": 2, "thread_touches_file": 5, "alignment_uses_comment": 1, "alignment_uses_finding": 1, "chain_has_link_quality": 5, "comment_aligns_finding": 1, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "issue_chain_touches_file": 5, "thread_has_comment_chain": 2, "comment_chain_links_commit": 1, "comment_chain_touches_file": 10, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 2}, "node_count": 21, "node_types": {"repo": 1, "commit": 1, "thread": 1, "comment": 2, "pr_file": 5, "alignment": 1, "fix_outcome": 1, "issue_chain": 1, "link_quality": 5, "comment_chain": 2, "blueprint_finding": 1}, "query_type": "motif_query", "thread_key": "ramxak2025/zr-auto-pro#7", "issue_number": "7", "quality_tiers": {"unresolved": 1, "assumption_check": 1, "weak_supervision": 3}, "repo_full_name": "ramxak2025/zr-auto-pro", "training_usage": "assumption_check", "source_motif_id": "graph-pattern-motif-thread-7075e06b65324079", "graph_gold_label": "weak_supervision_needs_review", "changed_file_labels": {"api_or_backend": 15, "schema_or_data": 5, "ui_or_frontend": 5}}, "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: ramxak2025/zr-auto-pro\nThread: ramxak2025/zr-auto-pro#7\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: ramxak2025/zr-auto-pro\nThread: ramxak2025/zr-auto-pro#7\nGraph gold label: weak_supervision_needs_review\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: ramxak2025/zr-auto-pro#7\nRepo: ramxak2025/zr-auto-pro\nIssue/PR number: 7\nGraph consistency label: weak_supervision_needs_review\nNodes: 21\nEdges: 41\nNode types: {'pr_file': 5, 'link_quality': 5, 'comment': 2, 'comment_chain': 2, 'thread': 1, 'repo': 1, 'commit': 1, 'issue_chain': 1, 'fix_outcome': 1, 'alignment': 1, 'blueprint_finding': 1}\nEdge types: {'comment_chain_touches_file': 10, 'thread_touches_file': 5, 'chain_has_link_quality': 5, 'issue_chain_touches_file': 5, 'thread_has_comment': 2, 'thread_has_comment_chain': 2, 'comment_has_chain': 2, 'issue_chain_has_comment_chain': 2, 'repo_has_thread': 1, 'comment_chain_links_commit': 1, 'thread_has_issue_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1, 'alignment_uses_comment': 1, 'alignment_uses_finding': 1, 'comment_aligns_finding': 1}\nLabels: {'api_or_backend': 3, 'claimed_resolved_unverified': 3, 'thread_has_human_issue_and_fix_context': 2, 'issue_or_pull_request_thread': 1, 'data_schema_persistence': 1, 'deployment_env_gap': 1, 'schema_or_data': 1, 'ui_or_frontend': 1, 'human_reported_issue_then_fix_attempt': 1, 'bug_fix': 1, 'human_reported_issue_no_linked_fix': 1, 'not_resolved_or_not_observed': 1, 'blueprint_human_gap_disagreement': 1, 'mostly follows blueprint': 1}\nOutcomes: {'claimed_resolved_unverified': 6, 'not_resolved_or_not_observed': 2}\nQuality tiers: {'weak_supervision': 3, 'unresolved': 1, 'assumption_check': 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/ramxak2025/zr-auto-pro", "source_id": "graph-query-motif_query-107e681469c31a46", "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": "ramxak2025/zr-auto-pro", "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: ramxak2025/zr-auto-pro"}, "properties": {"repobilityId": 330818, "scanner": "foundry_dataset", "fingerprint": "b6279db58be8dc35f589e33785d915a9c052192d3f98dd16454e7270c1b34086", "category": "quality", "severity": "high", "confidence": 0.76, "triageState": "open", "verdict": "needs_review", "isResolved": false, "reason": "Imported from mined Foundry/Fable5 evidence with real GitHub/source provenance. Review source_id before acting.", "evidence": {"meta": {"kind": "graph_query_record", "title": "Schema, UI, and API mismatch", "intent": "Assumption-check examples for data-path consistency across layers.", "labels": {"bug_fix": 4, "schema_or_data": 1, "ui_or_frontend": 4, "source_or_other": 2, "deployment_env_gap": 1, "dependency_or_build": 3, "security_auth_secret": 1, "claimed_resolved_unverified": 3, "issue_or_pull_request_thread": 1, "not_resolved_or_not_observed": 1, "human_reported_issue_no_linked_fix": 1, "human_reported_issue_then_fix_attempt": 1, "thread_has_human_issue_and_fix_context": 2}, "source": "graph_query_export", "motif_id": "schema_ui_api_mismatch", "outcomes": {"claimed_resolved_unverified": 6, "not_resolved_or_not_observed": 2}, "polarity": "bad", "query_id": "schema_ui_api_mismatch", "severity": "high", "ci_labels": {}, "synthetic": false, "edge_count": 57, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 2, "thread_has_comment": 2, "thread_touches_file": 9, "chain_has_link_quality": 4, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "issue_chain_touches_file": 9, "thread_has_comment_chain": 2, "comment_chain_links_commit": 5, "comment_chain_touches_file": 18, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 2}, "node_count": 26, "node_types": {"repo": 1, "commit": 5, "thread": 1, "comment": 2, "pr_file": 9, "fix_outcome": 1, "issue_chain": 1, "link_quality": 4, "comment_chain": 2}, "query_type": "motif_query", "thread_key": "ramxak2025/zr-auto-pro#6", "issue_number": "6", "quality_tiers": {"unresolved": 1, "weak_supervision": 3}, "repo_full_name": "ramxak2025/zr-auto-pro", "training_usage": "assumption_check", "source_motif_id": "graph-pattern-motif-thread-52eafcdd08b6bdcd", "graph_gold_label": "weak_supervision_needs_review", "changed_file_labels": {"schema_or_data": 5, "ui_or_frontend": 20, "source_or_other": 10, "dependency_or_build": 10}}, "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: ramxak2025/zr-auto-pro\nThread: ramxak2025/zr-auto-pro#6\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: ramxak2025/zr-auto-pro\nThread: ramxak2025/zr-auto-pro#6\nGraph gold label: weak_supervision_needs_review\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: ramxak2025/zr-auto-pro#6\nRepo: ramxak2025/zr-auto-pro\nIssue/PR number: 6\nGraph consistency label: weak_supervision_needs_review\nNodes: 26\nEdges: 57\nNode types: {'pr_file': 9, 'commit': 5, 'link_quality': 4, 'comment': 2, 'comment_chain': 2, 'thread': 1, 'repo': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'comment_chain_touches_file': 18, 'thread_touches_file': 9, 'issue_chain_touches_file': 9, 'comment_chain_links_commit': 5, 'chain_has_link_quality': 4, 'thread_has_comment': 2, 'thread_has_comment_chain': 2, 'comment_has_chain': 2, 'issue_chain_has_comment_chain': 2, 'repo_has_thread': 1, 'thread_has_issue_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'ui_or_frontend': 4, 'bug_fix': 4, 'dependency_or_build': 3, 'claimed_resolved_unverified': 3, 'source_or_other': 2, 'thread_has_human_issue_and_fix_context': 2, 'issue_or_pull_request_thread': 1, 'security_auth_secret': 1, 'deployment_env_gap': 1, 'schema_or_data': 1, 'human_reported_issue_then_fix_attempt': 1, 'human_reported_issue_no_linked_fix': 1, 'not_resolved_or_not_observed': 1}\nOutcomes: {'claimed_resolved_unverified': 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/ramxak2025/zr-auto-pro", "source_id": "graph-query-motif_query-7e65e37fd39fcb16", "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": "ramxak2025/zr-auto-pro", "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: ramxak2025/zr-auto-pro"}, "properties": {"repobilityId": 330817, "scanner": "foundry_dataset", "fingerprint": "c1dc3352f24e5e98294a336608b497254ec971336db02b9a958efccd33e6ff98", "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": 3, "api_or_backend": 11, "docs_or_claims": 55, "schema_or_data": 1, "ui_or_frontend": 16, "source_or_other": 14, "deployment_env_gap": 1, "api_integration_gap": 1, "dependency_or_build": 3, "verification_or_tests": 2, "mostly follows blueprint": 1, "issue_or_pull_request_thread": 1, "not_resolved_or_not_observed": 1, "blueprint_human_gap_disagreement": 1, "human_reported_issue_no_linked_fix": 1, "thread_has_human_issue_and_fix_context": 2, "claimed_resolved_with_verification_signal": 3, "human_reported_issue_then_verified_fix_attempt": 1}, "source": "graph_query_export", "motif_id": "schema_ui_api_mismatch", "outcomes": {"not_resolved_or_not_observed": 2, "claimed_resolved_with_verification_signal": 6}, "polarity": "bad", "query_id": "schema_ui_api_mismatch", "severity": "high", "ci_labels": {}, "synthetic": false, "edge_count": 161, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 2, "thread_has_comment": 2, "thread_touches_file": 100, "alignment_uses_comment": 1, "alignment_uses_finding": 1, "chain_has_link_quality": 5, "comment_aligns_finding": 1, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "issue_chain_touches_file": 12, "thread_has_comment_chain": 2, "comment_chain_links_commit": 5, "comment_chain_touches_file": 24, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 2}, "node_count": 120, "node_types": {"repo": 1, "commit": 5, "thread": 1, "comment": 2, "pr_file": 100, "alignment": 1, "fix_outcome": 1, "issue_chain": 1, "link_quality": 5, "comment_chain": 2, "blueprint_finding": 1}, "query_type": "motif_query", "thread_key": "ramxak2025/zr-auto-pro#4", "issue_number": "4", "quality_tiers": {"unresolved": 1, "assumption_check": 1, "weak_supervision": 3}, "repo_full_name": "ramxak2025/zr-auto-pro", "training_usage": "assumption_check", "source_motif_id": "graph-pattern-motif-thread-ade16f12105e6440", "graph_gold_label": "supported_by_verification_signal", "changed_file_labels": {"api_or_backend": 55, "docs_or_claims": 275, "schema_or_data": 5, "ui_or_frontend": 80, "source_or_other": 70, "dependency_or_build": 15}}, "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: ramxak2025/zr-auto-pro\nThread: ramxak2025/zr-auto-pro#4\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: ramxak2025/zr-auto-pro\nThread: ramxak2025/zr-auto-pro#4\nGraph gold label: supported_by_verification_signal\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: ramxak2025/zr-auto-pro#4\nRepo: ramxak2025/zr-auto-pro\nIssue/PR number: 4\nGraph consistency label: supported_by_verification_signal\nNodes: 120\nEdges: 161\nNode types: {'pr_file': 100, 'commit': 5, 'link_quality': 5, 'comment': 2, 'comment_chain': 2, 'thread': 1, 'repo': 1, 'issue_chain': 1, 'fix_outcome': 1, 'alignment': 1, 'blueprint_finding': 1}\nEdge types: {'thread_touches_file': 100, 'comment_chain_touches_file': 24, 'issue_chain_touches_file': 12, 'comment_chain_links_commit': 5, 'chain_has_link_quality': 5, '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, 'alignment_uses_comment': 1, 'alignment_uses_finding': 1, 'comment_aligns_finding': 1}\nLabels: {'docs_or_claims': 55, 'ui_or_frontend': 16, 'source_or_other': 14, 'api_or_backend': 11, 'dependency_or_build': 3, '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, 'api_integration_gap': 1, 'deployment_env_gap': 1, 'schema_or_data': 1, 'human_reported_issue_then_verified_fix_attempt': 1, 'human_reported_issue_no_linked_fix': 1, 'not_resolved_or_not_observed': 1}\nOutcomes: {'claimed_resolved_with_verification_signal': 6, 'not_resolved_or_not_observed': 2}\nQuality tiers: {'weak_supervision': 3, 'unresolved': 1, 'assumption_check': 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/ramxak2025/zr-auto-pro", "source_id": "graph-query-motif_query-92b923ba6cab33db", "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": "ramxak2025/zr-auto-pro", "source_dataset": "graph_queries/schema_ui_api_mismatch", "training_usage": "assumption_check"}}}, {"ruleId": "foundry_bad_chain", "level": "error", "message": {"text": "Foundry mined bad chains: ramxak2025/zr-auto-pro"}, "properties": {"repobilityId": 322304, "scanner": "foundry_dataset", "fingerprint": "3e19cf318c9fc7302f69a7a21aad538862b6a158540884700af468f942124f14", "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": "ramxak2025/zr-auto-pro#9", "human_labels": ["api_or_backend", "dependency_or_build", "deployment_env_gap", "docs_or_claims", "source_or_other", "test_ci_gap", "test_or_ci"], "issue_number": "9", "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": "ramxak2025/zr-auto-pro", "training_usage": "negative_or_unresolved", "confidence_tier": "unresolved", "source_chain_id": "evidence-chain-issue_chain-9d6707bb6b6e1420", "helicopter_views": {"graphs": 2, "schemas": 2}, "artifact_families": {"ci": 2, "docs": 1, "generated_claims": 2}, "source_chain_kind": "issue_chain", "changed_file_count": 15, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {"test_or_ci": 2, "api_or_backend": 2, "docs_or_claims": 6, "source_or_other": 3, "dependency_or_build": 2}, "linked_commit_count": 0, "helicopter_view_count": 4, "source_artifact_count": 5, "classification_reasons": ["source_graph_has_real_artifacts", "source_graph_has_verification_artifacts", "repo_has_isolated_helicopter_views", "link_quality_unresolved", "high_risk_human_feedback_label"], "linked_ci_commit_count": 0, "verification_artifact_count": 2, "design_schema_api_artifact_count": 0}, "text": "Comment chain pattern product: bad_chains\nRepo: ramxak2025/zr-auto-pro\nThread: ramxak2025/zr-auto-pro#9\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: ramxak2025/zr-auto-pro#9\nRepo: ramxak2025/zr-auto-pro\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: 15\nLabels: {'test_ci_gap': 1, 'deployment_env_gap': 1}\nPolarities: {'bad': 2}\nChanged file labels: {'docs_or_claims': 6, 'api_or_backend': 2, 'test_or_ci': 2, 'source_or_other': 3, 'dependency_or_build': 2}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-4896289fdf78d37f\",\n    \"kind\": \"pull_request_body\",\n    \"label\": \"test_ci_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/ramxak2025/zr-auto-pro/pull/9\",\n    \"text\": \"GitHub feedback: test_ci_gap\\nPolarity: bad\\nKind: pull_request_body\\nRepo: ramxak2025/zr-auto-pro\\nAuthor: ramxak2025 (User)\\nURL: https://github.com/ramxak2025/zr-auto-pro/pull/9\\nTitle: \u041e\u0440\u043a\u0435\u0441\u0442\u0440\u0430\u0446\u0438\u044f \u0430\u0433\u0435\u043d\u0442\u043e\u0432 + \u0447\u0438\u0441\u0442\u043a\u0430 \u0443\u0441\u0442\u0430\u0440\u0435\u0432\u0448\u0435\u0433\u043e \u0434\u0435\u043f\u043b\u043e\u044f\\nBody:\\n## Summary\\n\\n\u0414\u0432\u0435 \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0435 \u0437\u0430\u0434\u0430\u0447\u0438: \u0432\u0432\u0435\u0441\u0442\u0438 \u043c\u043e\u0434\u0435\u043b\u044c \u00ab\u0442\u0438\u043c-\u043b\u0438\u0434 + 4 \u0448\u0438\u0440\u043e\u043a\u0438\u0445 \u0430\u0433\u0435\u043d\u0442\u0430\u00bb \u0438 \u0437\u0430\u0444\u0438\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0432 \u0440\u0435\u043f\u043e \u0440\u0435\u0430\u043b\u044c\u043d\u044b\u0439 \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c \u0434\u0435\u043f\u043b\u043e\u044f.\\n\\n**\u0410\u0433\u0435\u043d\u0442\u044b \u0438 \u043e\u0440\u043a\u0435\u0441\u0442\u0440\u0430\u0446\u0438\u044f:**\\n- 4 \u043d\u043e\u0432\u044b\u0445 \u0448\u0438\u0440\u043e\u043a\u0438\u0445 role-based \u0430\u0433\u0435\u043d\u0442\u0430: `backend-engineer`, `web-engineer`, `ios-engineer`, `android-engineer` \u0432 `.claude/agents/`.\\n- `docs/AGENTS_PLAYBOOK.md` \u2014 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c \u0440\u0430\u0431\u043e\u0442\u044b \u0442\u0438\u043c-\u043b\u0438\u0434\u0430 (\u0433\u043b\u0430\u0432\u043d\u043e\u0433\u043e Claude \u0432 \u0447\u0430\u0442\u0435): \u0440\u0430\u0437\u0432\u0435\u0434\u043a\u0430 \u2192 \u0440\u0430\u0437\u0431\u0438\u0432\u043a\u0430 \u043f\u043e \u0441\u043b\u043e\u044f\u043c \u2192 \u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u044c\u043d\u044b\u0435/\u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0432\u044b\u0437\u043e\u0432\u044b \u0430\u0433\u0435\u043d\u0442\u043e\u0432 \u0447\u0435\u0440\u0435\u0437 Agent tool \u2192 \u0441\u0431\u043e\u0440\u043a\u0430 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u0432 \u2192 QA-gate \u0447\u0435\u0440\u0435\u0437 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0439 `qa-build-engineer`.\\n- \u0421\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 10 \u0443\u0437\u043a\u0438\u0445 screen-specific \u0430\u0433\u0435\u043d\u0442\u043e\u0432 (`cash-plate-engineer`, `schedule-engineer`, \u0438 \u0442.\u0434.) \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u044b \u2014 \u0442\u0438\u043c-\u043b\u0438\u0434 \u0437\u043e\u0432\u0451\u0442 \u0438\u0445 \u0432\u043c\u0435\u0441\u0442\u043e \u0448\u0438\u0440\u043e\u043a\u043e\u0433\u043e `ios-engineer`, \u043a\u043e\u0433\u0434\u0430 \u0437\u0430\u0434\u0430\u0447\u0430 \u0443\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0432 \u0438\u0445 \u043f\u0440\u043e\u0444\u0438\u043b\u044c.\\n- \u041a\u043e\u0440\u043d\u0435\u0432\u043e\u0439 `CLAUDE.md`: \u043d\u043e\u0432\u0430\u044f \u0441\u0435\u043a\u0446\u0438\u044f **N. \u041e\u0440\u043a\u0435\u0441\u0442\u0440\u0430\u0446\u0438\u044f \u0430\u0433\u0435\u043d\u0442\u043e\u0432** \u0441\u043e \u0441\u0441\u044b\u043b\u043a\u043e\u0439 \u043d\u0430 playbook \u0438 \u0442\u0430\u0431\u043b\u0438\u0446\u0435\u0439 \u00ab\u0441\u043b\u043e\u0439 \u2192 \u0430\u0433\u0435\u043d\u0442\u00bb.\\n\\n**\u041b\u043e\u043a\u0430\u043b\u044c\u043d\u0430\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0430:**\\n- `docs/LOCAL_DEV_SETUP.md` \u2014 \u043f\u043e\u0448\u0430\u0433\u043e\u0432\u0430\u044f \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044f \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u043d\u0430 MacBook: \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u0442\u0443\u043b\u0447\u0435\u0439\u043d\u0430, \u043b\u043e\"\n  },\n  {\n    \"id\": \"github-feedback-comment-1bb0564439252113\",\n    \"kind\": \"issue_comment\",\n    \"label\": \"deployment_env_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/ramxak2025/zr-auto-pro/pull/9#issuecomment-4480573091\",\n    \"text\": \"GitHub feedback: deployment_env_gap\\nPolarity: bad\\nKind: issue_comment\\nRepo: ramxak2025/zr-auto-pro\\nAuthor: vercel[bot] (Bot)\\nURL: https://github.com/ramxak2025/zr-auto-pro/pull/9#issuecomment-4480573091\\nTitle: \\nBody:\\n[vc]: #8mOw+F/5YZEPUEpyK95XVztT/NBanApjBEtj0u58RGc=:eyJpc01vbm9yZXBvIjp0cnVlLCJ0eXBlIjoiZ2l0aHViIiwicHJvamVjdHM\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/ramxak2025/zr-auto-pro", "source_id": "comment-chain-pattern-bad_chains-1e2828ce4fb39df7", "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": "ramxak2025/zr-auto-pro", "source_dataset": "comment_chain_patterns/bad_chains", "training_usage": "negative_or_unresolved"}}}, {"ruleId": "foundry_bad_chain", "level": "error", "message": {"text": "Foundry mined bad chains: ramxak2025/zr-auto-pro"}, "properties": {"repobilityId": 322303, "scanner": "foundry_dataset", "fingerprint": "f3bd41fa5f9cfd44fdbbe716d8a70002a965887698b6bcf5f33055854ccacb87", "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": "ramxak2025/zr-auto-pro#5", "human_labels": ["api_integration_gap", "api_or_backend", "deployment_env_gap", "source_or_other", "ui_or_frontend"], "issue_number": "5", "thread_label": "thread_has_human_issue_without_fix_context", "outcome_label": "not_resolved_or_not_observed", "source_backed": true, "max_confidence": 0.0, "repo_full_name": "ramxak2025/zr-auto-pro", "training_usage": "negative_or_unresolved", "confidence_tier": "unresolved", "source_chain_id": "evidence-chain-issue_chain-5039d608fc293167", "helicopter_views": {"graphs": 2, "schemas": 2}, "artifact_families": {"ci": 2, "docs": 1, "generated_claims": 2}, "source_chain_kind": "issue_chain", "changed_file_count": 4, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {"api_or_backend": 1, "ui_or_frontend": 2, "source_or_other": 1}, "linked_commit_count": 0, "helicopter_view_count": 4, "source_artifact_count": 5, "classification_reasons": ["source_graph_has_real_artifacts", "source_graph_has_verification_artifacts", "repo_has_isolated_helicopter_views", "link_quality_unresolved", "high_risk_human_feedback_label"], "linked_ci_commit_count": 0, "verification_artifact_count": 2, "design_schema_api_artifact_count": 0}, "text": "Comment chain pattern product: bad_chains\nRepo: ramxak2025/zr-auto-pro\nThread: ramxak2025/zr-auto-pro#5\nOutcome: not_resolved_or_not_observed\nThread label: thread_has_human_issue_without_fix_context\nSource graph label: source_backed_multi_signal_graph\nReasons: source_graph_has_real_artifacts, source_graph_has_verification_artifacts, repo_has_isolated_helicopter_views, link_quality_unresolved, high_risk_human_feedback_label\nChain evidence:\nIssue/PR evidence chain: ramxak2025/zr-auto-pro#5\nRepo: ramxak2025/zr-auto-pro\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: 4\nLabels: {'api_integration_gap': 1, 'deployment_env_gap': 1}\nPolarities: {'bad': 2}\nChanged file labels: {'source_or_other': 1, 'ui_or_frontend': 2, 'api_or_backend': 1}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-3145a504c14b4d09\",\n    \"kind\": \"pull_request_body\",\n    \"label\": \"api_integration_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/ramxak2025/zr-auto-pro/pull/5\",\n    \"text\": \"GitHub feedback: api_integration_gap\\nPolarity: bad\\nKind: pull_request_body\\nRepo: ramxak2025/zr-auto-pro\\nAuthor: ramxak2025 (User)\\nURL: https://github.com/ramxak2025/zr-auto-pro/pull/5\\nTitle: fix(imports): \u0434\u0435\u0441\u043a\u0442\u043e\u043f-only + \u0443\u0432\u0435\u043b\u0438\u0447\u0435\u043d\u043d\u044b\u0435 \u0442\u0430\u0439\u043c\u0430\u0443\u0442\u044b \u0434\u043b\u044f \u0431\u043e\u043b\u044c\u0448\u0438\u0445 \u0444\u0430\u0439\u043b\u043e\u0432\\nBody:\\n## \u0427\u0442\u043e \u0447\u0438\u043d\u0438\u043c\\n\\n\u041f\u043e\u0441\u043b\u0435 \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u0434\u0435\u043f\u043b\u043e\u044f \u0438\u043c\u043f\u043e\u0440\u0442\u0430 \u0441\u0442\u0430\u043b\u043e \u043f\u043e\u043d\u044f\u0442\u043d\u043e:\\n\\n1. \u041d\u0430 \u0442\u0435\u043b\u0435\u0444\u043e\u043d\u0435 UI \u0438\u043c\u043f\u043e\u0440\u0442\u0430 \u043d\u0435\u0443\u0434\u043e\u0431\u0435\u043d (\u043d\u0443\u0436\u043d\u0430 \u0431\u043e\u043b\u044c\u0448\u0430\u044f \u0442\u0430\u0431\u043b\u0438\u0446\u0430 \u0441\u043e\u043f\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043a\u043e\u043b\u043e\u043d\u043e\u043a \u0438 preview).\\n2. \u041f\u0440\u0438 \u043d\u0430\u0436\u0430\u0442\u0438\u0438 \u00ab\u041f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c\u00bb \u043d\u0430 \u0444\u0430\u0439\u043b\u0435 \u0441 25 000 \u0441\u0442\u0440\u043e\u043a (\u224810-15 \u041c\u0411 JSON) \u043f\u0430\u0434\u0430\u043b\u043e \u00ab\u043e\u0448\u0438\u0431\u043a\u0430 \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u044f\u00bb. \u0412\u0438\u043d\u043e\u0432\u0430\u0442 \u043d\u0435 \u043a\u043e\u0434, \u0430 \u043b\u0438\u043c\u0438\u0442\u044b: axios timeout 15 \u0441\u0435\u043a\u0443\u043d\u0434, nginx `client_max_body_size 10M` \u0438 `proxy_read_timeout 60s` \u2014 \u0432\u0441\u0451 \u044d\u0442\u043e \u0440\u0435\u0436\u0435\u0442\u0441\u044f \u043d\u0430 \u0431\u043e\u043b\u044c\u0448\u0438\u0445 \u0444\u0430\u0439\u043b\u0430\u0445.\\n\\n## \u041f\u0440\u0430\u0432\u043a\u0438\\n\\n- `frontend/src/pages/ClientsPage.tsx` \u2014 \u043a\u043d\u043e\u043f\u043a\u0430 \u00ab\u0418\u043c\u043f\u043e\u0440\u0442\u00bb \u0441\u043a\u0440\u044b\u0442\u0430 \u043d\u0430 \u044d\u043a\u0440\u0430\u043d\u0430\u0445 \u043c\u0435\u043d\u044c\u0448\u0435 `md` (768px).\\n- `frontend/src/pages/ImportClientsCarsPage.tsx` \u2014 \u0435\u0441\u043b\u0438 \u043a\u0442\u043e-\u0442\u043e \u0437\u0430\u0448\u0451\u043b \u043d\u0430 `/clients/import` \u043d\u0430\u043f\u0440\u044f\u043c\u0443\u044e \u0441 \u0442\u0435\u043b\u0435\u0444\u043e\u043d\u0430, \u0432\u0438\u0434\u0438\u0442 \u044d\u043a\u0440\u0430\u043d \u00ab\u041e\u0442\u043a\u0440\u043e\u0439\u0442\u0435 \u043d\u0430 \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u0435\u00bb \u0432\u043c\u0435\u0441\u0442\u043e \u0441\u043b\u043e\u043c\u0430\u043d\u043d\u043e\u0433\u043e \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430.\\n- `shared/api/createServices.ts` \u2014 `importsApi.previewClientsCars` \u0438 `confirmClientsCars` \u0442\u0435\u043f\u0435\u0440\u044c \u0438\u0434\u0443\u0442 \u0441 axios `timeout: 600_000` (10 \u043c\u0438\u043d\u0443\u0442).\\n- `frontend/nginx.conf` \u2014 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 `location /api/imports/` \u0441 `proxy_read_timeout 600s`, `proxy_send_timeout 60\"\n  },\n  {\n    \"id\": \"github-feedback-comment-cde6caab850c6791\",\n    \"kind\": \"issue_comment\",\n    \"label\": \"deployment_env_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/ramxak2025/zr-auto-pro/pull/5#issuecomment-4429748372\",\n    \"text\": \"GitHub feedback: deployment_env_gap\\nPolarity: bad\\nKind: issue_comment\\nRepo: ramxak2025/zr-auto-pro\\nAuthor: vercel[bot] (Bot)\\nURL: https://github.com/ramxak2025/zr-auto-pro/pull/5#issuecomment-4429748372\\nTitle: \\nBody:\\n[vc]: #TmWz1y9yISVkT975dxrBg3DI59ImZbNF0El2qGznyUI=:eyJpc01vbm9yZXBvIjp0cnVlLCJ0eXBlIjoiZ2l0aHViIiwicHJvamVjdHMiOlt7Im5hbWUiOiJ6ci1hdXRvLX\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/ramxak2025/zr-auto-pro", "source_id": "comment-chain-pattern-bad_chains-021acf262a7a77df", "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": "ramxak2025/zr-auto-pro", "source_dataset": "comment_chain_patterns/bad_chains", "training_usage": "negative_or_unresolved"}}}, {"ruleId": "foundry_bad_chain", "level": "error", "message": {"text": "Foundry mined bad chains: ramxak2025/zr-auto-pro"}, "properties": {"repobilityId": 322302, "scanner": "foundry_dataset", "fingerprint": "083fb46c7844886a341f45dcadf7f69ed1630127db6495bc4e18ef69b86b140f", "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": "ramxak2025/zr-auto-pro#1", "human_labels": ["agent_instruction_gap", "api_or_backend", "dependency_or_build", "security_auth_secret", "source_or_other", "ui_or_frontend"], "issue_number": "1", "thread_label": "thread_has_human_issue_without_fix_context", "outcome_label": "not_resolved_or_not_observed", "source_backed": true, "max_confidence": 0.0, "repo_full_name": "ramxak2025/zr-auto-pro", "training_usage": "negative_or_unresolved", "confidence_tier": "unresolved", "source_chain_id": "evidence-chain-issue_chain-32c4cf217eb180eb", "helicopter_views": {"graphs": 2, "schemas": 2}, "artifact_families": {"ci": 2, "docs": 1, "generated_claims": 2}, "source_chain_kind": "issue_chain", "changed_file_count": 37, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {"api_or_backend": 25, "ui_or_frontend": 8, "source_or_other": 3, "dependency_or_build": 1}, "linked_commit_count": 0, "helicopter_view_count": 4, "source_artifact_count": 5, "classification_reasons": ["source_graph_has_real_artifacts", "source_graph_has_verification_artifacts", "repo_has_isolated_helicopter_views", "link_quality_unresolved", "high_risk_human_feedback_label"], "linked_ci_commit_count": 0, "verification_artifact_count": 2, "design_schema_api_artifact_count": 0}, "text": "Comment chain pattern product: bad_chains\nRepo: ramxak2025/zr-auto-pro\nThread: ramxak2025/zr-auto-pro#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: ramxak2025/zr-auto-pro#1\nRepo: ramxak2025/zr-auto-pro\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: 37\nLabels: {'agent_instruction_gap': 1, 'security_auth_secret': 1}\nPolarities: {'bad': 2}\nChanged file labels: {'api_or_backend': 25, 'source_or_other': 3, 'ui_or_frontend': 8, 'dependency_or_build': 1}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-6a505e4038637fe7\",\n    \"kind\": \"pull_request_body\",\n    \"label\": \"agent_instruction_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/ramxak2025/zr-auto-pro/pull/1\",\n    \"text\": \"GitHub feedback: agent_instruction_gap\\nPolarity: bad\\nKind: pull_request_body\\nRepo: ramxak2025/zr-auto-pro\\nAuthor: ramxak2025 (User)\\nURL: https://github.com/ramxak2025/zr-auto-pro/pull/1\\nTitle: fix: \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0432\u0445\u043e\u0434 + \u0440\u043e\u0437\u043d\u0438\u0447\u043d\u044b\u0439 \u043f\u043e\u043a\u0443\u043f\u0430\u0442\u0435\u043b\u044c \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0432 \u0447\u0435\u043a\u0430\u0445\\nBody:\\n\u0412\u0445\u043e\u0434 \u0432 \u0430\u043a\u043a\u0430\u0443\u043d\u0442\u044b:\\n- \u041d\u043e\u0440\u043c\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u0442\u0435\u043b\u0435\u0444\u043e\u043d\u043e\u0432: \u0435\u0434\u0438\u043d\u044b\u0439 \u0444\u043e\u0440\u043c\u0430\u0442 +7XXXXXXXXXX \u043f\u0440\u0438 \u043b\u043e\u0433\u0438\u043d\u0435, \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u0438 \u0438 \u043f\u043e\u0438\u0441\u043a\u0435\\n- \u0410\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u0438\u0441\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0444\u043e\u0440\u043c\u0430\u0442\u0430 \u0442\u0435\u043b\u0435\u0444\u043e\u043d\u0430 \u0432 \u0411\u0414 \u043f\u0440\u0438 \u0443\u0441\u043f\u0435\u0448\u043d\u043e\u043c \u0432\u0445\u043e\u0434\u0435\\n- \u0423\u0441\u0442\u0440\u0430\u043d\u0435\u043d\u0438\u0435 race condition \u0432 AuthContext: \u0443\u0431\u0440\u0430\u043d\u0430 \u0434\u0432\u043e\u0439\u043d\u0430\u044f \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u043f\u0440\u043e\u0444\u0438\u043b\u044f \u043f\u043e\u0441\u043b\u0435 \u043b\u043e\u0433\u0438\u043d\u0430\\n- Retry \u043b\u043e\u0433\u0438\u043a\u0430 \u0432 axios: 2 \u043f\u043e\u0432\u0442\u043e\u0440\u0430 \u043f\u0440\u0438 \u0441\u0435\u0442\u0435\u0432\u044b\u0445 \u043e\u0448\u0438\u0431\u043a\u0430\u0445 \u0438 5xx\\n\\n\u0427\u0435\u043a\u0438 \u2014 \u0440\u043e\u0437\u043d\u0438\u0447\u043d\u044b\u0439 \u043f\u043e\u043a\u0443\u043f\u0430\u0442\u0435\u043b\u044c:\\n- \u041f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0432\u044b\u0431\u0440\u0430\u043d \\\"\u0420\u043e\u0437\u043d\u0438\u0447\u043d\u044b\u0439 \u043f\u043e\u043a\u0443\u043f\u0430\u0442\u0435\u043b\u044c\\\" (\u0431\u0435\u0437 \u043f\u0440\u0438\u0432\u044f\u0437\u043a\u0438 \u043a \u043a\u043b\u0438\u0435\u043d\u0442\u0443)\\n- clientId \u0438 carId \u0442\u0435\u043f\u0435\u0440\u044c \u043e\u043f\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u044b \u0432 \u0431\u044d\u043a\u0435\u043d\u0434\u0435\\n- \u041d\u043e\u0432\u043e\u0435 \u043f\u043e\u043b\u0435 clientName \u0432 \u0447\u0435\u043a\u0435 \u0434\u043b\u044f \u0440\u043e\u0437\u043d\u0438\u0447\u043d\u044b\u0445 \u043f\u0440\u043e\u0434\u0430\u0436\\n- \u041f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0430\u0442\u0435\u043b\u044c \\\"\u0420\u043e\u0437\u043d\u0438\u0447\u043d\u044b\u0439 / \u041f\u043e \u043a\u043b\u0438\u0435\u043d\u0442\u0443\\\" \u0432 \u0444\u043e\u0440\u043c\u0435 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0447\u0435\u043a\u0430\\n- \u041a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e\u0435 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0440\u043e\u0437\u043d\u0438\u0447\u043d\u043e\u0433\u043e \u043f\u043e\u043a\u0443\u043f\u0430\u0442\u0435\u043b\u044f \u0432 \u0441\u043f\u0438\u0441\u043a\u0435, \u0434\u0435\u0442\u0430\u043b\u0438 \u0438 \u043f\u0435\u0447\u0430\u0442\u0438 \u0447\u0435\u043a\u043e\u0432\\n\\nhttps://claude.ai/code/session_01GN2nAxfiB2s1ERiqLF1541\"\n  },\n  {\n    \"id\": \"github-feedback-comment-38074ad590e7716c\",\n    \"kind\": \"issue_comment\",\n    \"label\": \"security_auth_secret\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/ramxak2025/zr-auto-pro/pull/1#issuecomment-3911684581\",\n    \"text\": \"GitHub feedback: security_auth_secret\\nPolarity: bad\\nKind: issue_comment\\nRepo: ramxak2025/zr-auto-pro\\nAuthor: vercel[bot] (Bot)\\nURL: https://github.com/ramxak2025/zr-auto-pro/pull/1#issuecomment-3911684581\\nTitle: \\nBody:\\n[vc]: #Onw8RaqlH/cCUOStPOwA3CraOqmejxciVZ5WCupHKj4=:eyJpc01vbm9yZXBvIjp0cnVlLCJ0eXBlIjoiZ2l0aHViIiwicHJvamVjdHMiOlt7Im5hbWUiOiJ6ci1hdXRvLXBybyIsInByb2plY3RJZCI6InByal9JdExwcmZ1V3hpbUJRSlREWGxWUllWQlFqVXFlIiwibGl2ZUZlZWRiYWNrIjp7InJlc29sdmVkIjowLCJ1bnJlc29sdmVkIjowLCJ0b3RhbCI6MCwibGluayI6InpyLWF1dG8tcHJvLWdpdC1jbG\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/ramxak2025/zr-auto-pro", "source_id": "comment-chain-pattern-bad_chains-938ff51049f30028", "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": "ramxak2025/zr-auto-pro", "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: ramxak2025/zr-auto-pro"}, "properties": {"repobilityId": 334803, "scanner": "foundry_dataset", "fingerprint": "387fda967f9ed475d92230ccc6f00cc6a6062d85ac4643abaabcef0f51cdc822", "category": "auth", "severity": "critical", "confidence": 0.78, "triageState": "open", "verdict": "needs_review", "isResolved": false, "reason": "Imported from mined Foundry/Fable5 evidence with real GitHub/source provenance. Review source_id before acting.", "evidence": {"meta": {"kind": "graph_query_record", "title": "Security/auth changes without enough guardrails", "intent": "Assumption-check security/auth examples requiring stronger tests or CI.", "labels": {"bug_fix": 4, "schema_or_data": 1, "ui_or_frontend": 4, "source_or_other": 2, "deployment_env_gap": 1, "dependency_or_build": 3, "security_auth_secret": 1, "claimed_resolved_unverified": 3, "issue_or_pull_request_thread": 1, "not_resolved_or_not_observed": 1, "human_reported_issue_no_linked_fix": 1, "human_reported_issue_then_fix_attempt": 1, "thread_has_human_issue_and_fix_context": 2}, "source": "graph_query_export", "motif_id": "security_auth_without_guardrails", "outcomes": {"claimed_resolved_unverified": 6, "not_resolved_or_not_observed": 2}, "polarity": "bad", "query_id": "security_auth_guardrail_gaps", "severity": "critical", "ci_labels": {}, "synthetic": false, "edge_count": 57, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 2, "thread_has_comment": 2, "thread_touches_file": 9, "chain_has_link_quality": 4, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "issue_chain_touches_file": 9, "thread_has_comment_chain": 2, "comment_chain_links_commit": 5, "comment_chain_touches_file": 18, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 2}, "node_count": 26, "node_types": {"repo": 1, "commit": 5, "thread": 1, "comment": 2, "pr_file": 9, "fix_outcome": 1, "issue_chain": 1, "link_quality": 4, "comment_chain": 2}, "query_type": "motif_query", "thread_key": "ramxak2025/zr-auto-pro#6", "issue_number": "6", "quality_tiers": {"unresolved": 1, "weak_supervision": 3}, "repo_full_name": "ramxak2025/zr-auto-pro", "training_usage": "assumption_check", "source_motif_id": "graph-pattern-motif-thread-d7fa1aa66ce0f0c8", "graph_gold_label": "weak_supervision_needs_review", "changed_file_labels": {"schema_or_data": 5, "ui_or_frontend": 20, "source_or_other": 10, "dependency_or_build": 10}}, "text": "Graph query export: Security/auth changes without enough guardrails\nQuery id: security_auth_guardrail_gaps\nQuery type: motif_query\nIntent: Assumption-check security/auth examples requiring stronger tests or CI.\nMotif: security_auth_without_guardrails\nTraining usage: assumption_check\nGraph gold label: weak_supervision_needs_review\nRepo: ramxak2025/zr-auto-pro\nThread: ramxak2025/zr-auto-pro#6\nEvidence:\nGraph motif: Security/auth change without enough guardrails\nMotif id: security_auth_without_guardrails\nPolarity: bad\nTraining usage: assumption_check\nSeverity: critical\nRepo: ramxak2025/zr-auto-pro\nThread: ramxak2025/zr-auto-pro#6\nGraph gold label: weak_supervision_needs_review\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: ramxak2025/zr-auto-pro#6\nRepo: ramxak2025/zr-auto-pro\nIssue/PR number: 6\nGraph consistency label: weak_supervision_needs_review\nNodes: 26\nEdges: 57\nNode types: {'pr_file': 9, 'commit': 5, 'link_quality': 4, 'comment': 2, 'comment_chain': 2, 'thread': 1, 'repo': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'comment_chain_touches_file': 18, 'thread_touches_file': 9, 'issue_chain_touches_file': 9, 'comment_chain_links_commit': 5, 'chain_has_link_quality': 4, 'thread_has_comment': 2, 'thread_has_comment_chain': 2, 'comment_has_chain': 2, 'issue_chain_has_comment_chain': 2, 'repo_has_thread': 1, 'thread_has_issue_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'ui_or_frontend': 4, 'bug_fix': 4, 'dependency_or_build': 3, 'claimed_resolved_unverified': 3, 'source_or_other': 2, 'thread_has_human_issue_and_fix_context': 2, 'issue_or_pull_request_thread': 1, 'security_auth_secret': 1, 'deployment_env_gap': 1, 'schema_or_data': 1, 'human_reported_issue_then_fix_attempt': 1, 'human_reported_issue_no_linked_fix': 1, 'not_resolved_or_not_observed': 1}\nOutcomes: {'claimed_resolved_unverified': 6, 'not_resolved_or_not_observed': 2}\nQuality tiers: {'weak_supervision': 3, 'unresolved': 1}\nCI labels: {}\nCurriculum targets:\n- Train auth boundary repair with tests, permission matrices, and secret-handling checks.\n- Keep risky auth changes separate from ordinary bug-fix examples.\nAssumption checks:\n- Are auth/permission paths covered by tests?\n- Are secrets, CORS, or access rules verified rather than summarized?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/ramxak2025/zr-auto-pro", "source_id": "graph-query-motif_query-72e313f260957ef1", "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": "ramxak2025/zr-auto-pro", "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: ramxak2025/zr-auto-pro"}, "properties": {"repobilityId": 334802, "scanner": "foundry_dataset", "fingerprint": "c922e7d893f1ca901f778de24a752a0e28da52c99ec468c4f5e80f57e56b7822", "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_or_backend": 25, "ui_or_frontend": 8, "source_or_other": 3, "dependency_or_build": 1, "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": 89, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 2, "thread_has_comment": 2, "thread_touches_file": 37, "chain_has_link_quality": 4, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "issue_chain_touches_file": 12, "thread_has_comment_chain": 2, "comment_chain_touches_file": 24, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 2}, "node_count": 49, "node_types": {"repo": 1, "thread": 1, "comment": 2, "pr_file": 37, "fix_outcome": 1, "issue_chain": 1, "link_quality": 4, "comment_chain": 2}, "query_type": "motif_query", "thread_key": "ramxak2025/zr-auto-pro#1", "issue_number": "1", "quality_tiers": {"unresolved": 4}, "repo_full_name": "ramxak2025/zr-auto-pro", "training_usage": "assumption_check", "source_motif_id": "graph-pattern-motif-thread-7a4d957ab723f2f8", "graph_gold_label": "needs_more_evidence", "changed_file_labels": {"api_or_backend": 125, "ui_or_frontend": 40, "source_or_other": 15, "dependency_or_build": 5}}, "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: ramxak2025/zr-auto-pro\nThread: ramxak2025/zr-auto-pro#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: ramxak2025/zr-auto-pro\nThread: ramxak2025/zr-auto-pro#1\nGraph gold label: needs_more_evidence\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: ramxak2025/zr-auto-pro#1\nRepo: ramxak2025/zr-auto-pro\nIssue/PR number: 1\nGraph consistency label: needs_more_evidence\nNodes: 49\nEdges: 89\nNode types: {'pr_file': 37, 'link_quality': 4, 'comment': 2, 'comment_chain': 2, 'thread': 1, 'repo': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'thread_touches_file': 37, 'comment_chain_touches_file': 24, 'issue_chain_touches_file': 12, '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: {'api_or_backend': 25, 'ui_or_frontend': 8, 'not_resolved_or_not_observed': 4, 'source_or_other': 3, '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, 'dependency_or_build': 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/ramxak2025/zr-auto-pro", "source_id": "graph-query-motif_query-1c1a6839c1652bc4", "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": "ramxak2025/zr-auto-pro", "source_dataset": "graph_queries/security_auth_guardrail_gaps", "training_usage": "assumption_check"}}}, {"ruleId": "scanner-5308ac02e41b4703", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/FeatureGate.tsx:104"}, "properties": {"repobilityId": "a93901727b33ad47", "scanner": "scanner-primary", "fingerprint": "5308ac02e41b4703", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-e5f478d75b24ac77", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/TrashModal.tsx:122"}, "properties": {"repobilityId": "f5823c544747cc1a", "scanner": "scanner-primary", "fingerprint": "e5f478d75b24ac77", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-8c17059593a6f433", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/DatePeriodPicker.tsx:108"}, "properties": {"repobilityId": "5730935b8e76d134", "scanner": "scanner-primary", "fingerprint": "8c17059593a6f433", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-fb9afda0db42b429", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/Layout.tsx:133"}, "properties": {"repobilityId": "4d0ca9e37bee02cd", "scanner": "scanner-primary", "fingerprint": "fb9afda0db42b429", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-4bf1d4570838a882", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/DuplicateWarningDialog.tsx:55"}, "properties": {"repobilityId": "4d08fcdc47444cfc", "scanner": "scanner-primary", "fingerprint": "4bf1d4570838a882", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-54ac90ca1354155f", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/AdminLayout.tsx:64"}, "properties": {"repobilityId": "b1da2e3f481a0c76", "scanner": "scanner-primary", "fingerprint": "54ac90ca1354155f", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-80cc7a5dec4877d8", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/pages/UsersPage.tsx:292"}, "properties": {"repobilityId": "be5d984cbca5b33b", "scanner": "scanner-primary", "fingerprint": "80cc7a5dec4877d8", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-ed87e33cefbcb36e", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/pages/EmployeeDetailPage.tsx:137"}, "properties": {"repobilityId": "f78c306cdcae7814", "scanner": "scanner-primary", "fingerprint": "ed87e33cefbcb36e", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-4eb4c5e2e8bece93", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/pages/ProductsPage.tsx:392"}, "properties": {"repobilityId": "c9408659cdd548c5", "scanner": "scanner-primary", "fingerprint": "4eb4c5e2e8bece93", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-b0c459c157dc7898", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/pages/ClientDetailPage.tsx:257"}, "properties": {"repobilityId": "a861f3a97fcfe2fe", "scanner": "scanner-primary", "fingerprint": "b0c459c157dc7898", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-25fff5c7e6ff75f8", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/pages/EquipmentPage.tsx:100"}, "properties": {"repobilityId": "30ebd96728ca52dd", "scanner": "scanner-primary", "fingerprint": "25fff5c7e6ff75f8", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-5b0d2cbbfbc0816a", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/pages/MorePage.tsx:279"}, "properties": {"repobilityId": "267224e51ca8702e", "scanner": "scanner-primary", "fingerprint": "5b0d2cbbfbc0816a", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-7f7f8b119c5fcdd3", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/pages/ChecksPage.tsx:87"}, "properties": {"repobilityId": "7ed735e63eac3483", "scanner": "scanner-primary", "fingerprint": "7f7f8b119c5fcdd3", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-63598b14eb30c284", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/pages/SupplierDetailPage.tsx:137"}, "properties": {"repobilityId": "9683ee44c38af31f", "scanner": "scanner-primary", "fingerprint": "63598b14eb30c284", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-51bd75f212c30fe9", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/pages/RetailChecksPage.tsx:112"}, "properties": {"repobilityId": "b15293fd685ef9c3", "scanner": "scanner-primary", "fingerprint": "51bd75f212c30fe9", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-f67a9812946ef4f0", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/pages/MarketingPage.tsx:111"}, "properties": {"repobilityId": "cd5eed18823b219f", "scanner": "scanner-primary", "fingerprint": "f67a9812946ef4f0", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-1bfb19cbaabbb176", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/pages/SalaryPage.tsx:117"}, "properties": {"repobilityId": "a61dba42e5760338", "scanner": "scanner-primary", "fingerprint": "1bfb19cbaabbb176", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-8e3767d6040c8559", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/pages/SuppliersPage.tsx:159"}, "properties": {"repobilityId": "cfee92965fa2a3fe", "scanner": "scanner-primary", "fingerprint": "8e3767d6040c8559", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-dba94cac9c18ab9d", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/pages/CheckDetailPage.tsx:212"}, "properties": {"repobilityId": "19c46261ea636930", "scanner": "scanner-primary", "fingerprint": "dba94cac9c18ab9d", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-45a41a0626da5451", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/pages/CallsPage.tsx:255"}, "properties": {"repobilityId": "391326f697dc4e06", "scanner": "scanner-primary", "fingerprint": "45a41a0626da5451", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-1f2e3dd4251c1b47", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/pages/KnowledgeBasePage.tsx:241"}, "properties": {"repobilityId": "358235da2cc680fe", "scanner": "scanner-primary", "fingerprint": "1f2e3dd4251c1b47", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-db70c693d128445f", "level": "note", "message": {"text": "\"active\" state uses light bg in a dark theme \u2014 frontend/src/pages/KnowledgeBasePage.tsx:346"}, "properties": {"repobilityId": "7a2501d15d902551", "scanner": "scanner-primary", "fingerprint": "db70c693d128445f", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.active-light-bg"]}}, {"ruleId": "scanner-df3eff4692e5af40", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/pages/DashboardPage.tsx:220"}, "properties": {"repobilityId": "98f645e60235535e", "scanner": "scanner-primary", "fingerprint": "df3eff4692e5af40", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-621b41b5fdf53480", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/pages/EmployeesPage.tsx:384"}, "properties": {"repobilityId": "d85f65f134f559d8", "scanner": "scanner-primary", "fingerprint": "621b41b5fdf53480", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-60e19e67b420bfcb", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/pages/ImportClientsCarsPage.tsx:547"}, "properties": {"repobilityId": "bd368ffd3d6f1385", "scanner": "scanner-primary", "fingerprint": "60e19e67b420bfcb", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-b9c54346735d3d4b", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/pages/ExpensesPage.tsx:191"}, "properties": {"repobilityId": "5170abd97d38f8e8", "scanner": "scanner-primary", "fingerprint": "b9c54346735d3d4b", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-e96fe245c1ff7e65", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/pages/CheckCreatePage.tsx:211"}, "properties": {"repobilityId": "5530a77f574bb94b", "scanner": "scanner-primary", "fingerprint": "e96fe245c1ff7e65", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-8a5c4ba7b0fca199", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/pages/SchedulePage.tsx:141"}, "properties": {"repobilityId": "4aee060e5dbc267e", "scanner": "scanner-primary", "fingerprint": "8a5c4ba7b0fca199", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-423f2e55ba46b710", "level": "note", "message": {"text": "\"active\" state uses light bg in a dark theme \u2014 frontend/src/pages/SchedulePage.tsx:768"}, "properties": {"repobilityId": "55ffe48c87b3cc2e", "scanner": "scanner-primary", "fingerprint": "423f2e55ba46b710", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.active-light-bg"]}}, {"ruleId": "scanner-3ad3ada89a895a0b", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/pages/admin/AdminTenantsPage.tsx:255"}, "properties": {"repobilityId": "be01b2a0a160e87f", "scanner": "scanner-primary", "fingerprint": "3ad3ada89a895a0b", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-1de18134fb8d621b", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/pages/knowledge/LearningCenter.tsx:340"}, "properties": {"repobilityId": "0dd1909b01fcdc44", "scanner": "scanner-primary", "fingerprint": "1de18134fb8d621b", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-2cf786387f7495ca", "level": "warning", "message": {"text": "Privileged port 254 in use"}, "properties": {"repobilityId": "7283e7e42c2b4220", "scanner": "scanner-primary", "fingerprint": "2cf786387f7495ca", "layer": "network", "severity": "medium", "confidence": 1.0, "tags": ["security", "ports"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/full-setup.sh"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-60427b03771411b6", "level": "warning", "message": {"text": "Dockerfile runs as root: frontend/Dockerfile"}, "properties": {"repobilityId": "735c01d8531dfd2c", "scanner": "scanner-primary", "fingerprint": "60427b03771411b6", "layer": "hardware", "severity": "medium", "confidence": 1.0, "tags": ["security", "container"]}}, {"ruleId": "scanner-faa134129e5545ff", "level": "note", "message": {"text": "Docker base image is tag-pinned but not digest-pinned: node:20-alpine"}, "properties": {"repobilityId": "3e90d440e1f9ece1", "scanner": "scanner-primary", "fingerprint": "faa134129e5545ff", "layer": "hardware", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "docker", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/Dockerfile"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-b048d166901fd868", "level": "note", "message": {"text": "Docker base image is tag-pinned but not digest-pinned: nginx:alpine"}, "properties": {"repobilityId": "a9d2e8c79d593187", "scanner": "scanner-primary", "fingerprint": "b048d166901fd868", "layer": "hardware", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "docker", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/Dockerfile"}, "region": {"startLine": 11}}}]}, {"ruleId": "scanner-f557fb07724157c4", "level": "warning", "message": {"text": "Dockerfile runs as root: webhook/Dockerfile"}, "properties": {"repobilityId": "62fbdbfd1df1c3cd", "scanner": "scanner-primary", "fingerprint": "f557fb07724157c4", "layer": "hardware", "severity": "medium", "confidence": 1.0, "tags": ["security", "container"]}}, {"ruleId": "scanner-a8e9a1642238d1e9", "level": "note", "message": {"text": "Docker base image is tag-pinned but not digest-pinned: golang:1.22-alpine"}, "properties": {"repobilityId": "46d0beb645cfb5c7", "scanner": "scanner-primary", "fingerprint": "a8e9a1642238d1e9", "layer": "hardware", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "docker", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "webhook/Dockerfile"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-6496c55664deaa3c", "level": "note", "message": {"text": "Docker base image is tag-pinned but not digest-pinned: alpine:3.19"}, "properties": {"repobilityId": "8cd9b4d1f769b64b", "scanner": "scanner-primary", "fingerprint": "6496c55664deaa3c", "layer": "hardware", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "docker", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "webhook/Dockerfile"}, "region": {"startLine": 6}}}]}, {"ruleId": "scanner-1f66ad88286ca30a", "level": "warning", "message": {"text": "Dockerfile runs as root: backend/Dockerfile"}, "properties": {"repobilityId": "7afd2b0e8a8c9eeb", "scanner": "scanner-primary", "fingerprint": "1f66ad88286ca30a", "layer": "hardware", "severity": "medium", "confidence": 1.0, "tags": ["security", "container"]}}, {"ruleId": "scanner-3d2a6283f9ebab24", "level": "note", "message": {"text": "Docker base image is tag-pinned but not digest-pinned: node:20-alpine"}, "properties": {"repobilityId": "e866ff9772e76d62", "scanner": "scanner-primary", "fingerprint": "3d2a6283f9ebab24", "layer": "hardware", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "docker", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/Dockerfile"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-3d2a6283f9ebab24", "level": "note", "message": {"text": "Docker base image is tag-pinned but not digest-pinned: node:20-alpine"}, "properties": {"repobilityId": "0365d2c6f637d06c", "scanner": "scanner-primary", "fingerprint": "3d2a6283f9ebab24", "layer": "hardware", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "docker", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/Dockerfile"}, "region": {"startLine": 7}}}]}, {"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-6133b7a67ee0e151", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in frontend/src/utils/generateReceiptPdf.ts:57"}, "properties": {"repobilityId": "d12bf9745580a99c", "scanner": "scanner-primary", "fingerprint": "6133b7a67ee0e151", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/src/utils/generateReceiptPdf.ts"}, "region": {"startLine": 57}}}]}, {"ruleId": "scanner-5c6b7c48daf2ab79", "level": "warning", "message": {"text": "Insecure pattern 'local_storage_auth_token' in frontend/src/contexts/AuthContext.tsx:159"}, "properties": {"repobilityId": "9aa5fcb9fec9b1ac", "scanner": "scanner-primary", "fingerprint": "5c6b7c48daf2ab79", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "local_storage_auth_token"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/src/contexts/AuthContext.tsx"}, "region": {"startLine": 159}}}]}, {"ruleId": "scanner-87845c975eb2fe57", "level": "warning", "message": {"text": "Insecure pattern 'local_storage_auth_token' in frontend/src/pages/admin/AdminTenantDetailPage.tsx:220"}, "properties": {"repobilityId": "a365ca5c20805834", "scanner": "scanner-primary", "fingerprint": "87845c975eb2fe57", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "local_storage_auth_token"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/src/pages/admin/AdminTenantDetailPage.tsx"}, "region": {"startLine": 220}}}]}, {"ruleId": "scanner-c1a8bc5edf0a723b", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in frontend/src/hooks/usePullToRefresh.ts:44"}, "properties": {"repobilityId": "047f4b615801f55b", "scanner": "scanner-primary", "fingerprint": "c1a8bc5edf0a723b", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/src/hooks/usePullToRefresh.ts"}, "region": {"startLine": 44}}}]}, {"ruleId": "scanner-cb639d9a10a47b23", "level": "note", "message": {"text": "package.json defines install-time lifecycle scripts"}, "properties": {"repobilityId": "b86179956da3a4a8", "scanner": "scanner-primary", "fingerprint": "cb639d9a10a47b23", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "npm", "install-scripts"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-af4204d6b72e3401", "level": "note", "message": {"text": "Very large file: frontend/src/pages/ProductsPage.tsx (3268 lines)"}, "properties": {"repobilityId": "9cbbb0411cd67e3f", "scanner": "scanner-primary", "fingerprint": "af4204d6b72e3401", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-66c9f1d9892bebf9", "level": "note", "message": {"text": "Very large file: frontend/src/pages/SupplierDetailPage.tsx (1400 lines)"}, "properties": {"repobilityId": "6392bd7ad077313d", "scanner": "scanner-primary", "fingerprint": "66c9f1d9892bebf9", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-882fe85e6fd2de1e", "level": "note", "message": {"text": "Very large file: frontend/src/pages/MarketingPage.tsx (1019 lines)"}, "properties": {"repobilityId": "9ed4649bb47f7beb", "scanner": "scanner-primary", "fingerprint": "882fe85e6fd2de1e", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-c501980a00954159", "level": "note", "message": {"text": "Very large file: frontend/src/pages/KnowledgeBasePage.tsx (1248 lines)"}, "properties": {"repobilityId": "ff20c3a60ca06fe0", "scanner": "scanner-primary", "fingerprint": "c501980a00954159", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-9c0f6e9eba0b1184", "level": "note", "message": {"text": "Very large file: frontend/src/pages/CheckCreatePage.tsx (1481 lines)"}, "properties": {"repobilityId": "b5e95e97ea87dc9a", "scanner": "scanner-primary", "fingerprint": "9c0f6e9eba0b1184", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-e534a89eec6bb93f", "level": "note", "message": {"text": "Very large file: frontend/src/pages/SchedulePage.tsx (1466 lines)"}, "properties": {"repobilityId": "cbb9798b27593765", "scanner": "scanner-primary", "fingerprint": "e534a89eec6bb93f", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-44b0b786e434d7a7", "level": "note", "message": {"text": "Very large file: shared/api/createServices.ts (1056 lines)"}, "properties": {"repobilityId": "9ada8e0cb013a22f", "scanner": "scanner-primary", "fingerprint": "44b0b786e434d7a7", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-b9f55cb18641d8ab", "level": "note", "message": {"text": "Very large file: mobile/src/screens/CashFlowScreen.tsx (1417 lines)"}, "properties": {"repobilityId": "171b65e46122821e", "scanner": "scanner-primary", "fingerprint": "b9f55cb18641d8ab", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-7c02eef31fee2141", "level": "note", "message": {"text": "Very large file: mobile/src/screens/WarehouseAnalyticsScreen.tsx (1530 lines)"}, "properties": {"repobilityId": "cb13c34edbe5fc3b", "scanner": "scanner-primary", "fingerprint": "7c02eef31fee2141", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-f9ffd94069e59a83", "level": "note", "message": {"text": "Very large file: mobile/src/screens/MarketingScreen.tsx (1493 lines)"}, "properties": {"repobilityId": "a71084812f2b353e", "scanner": "scanner-primary", "fingerprint": "f9ffd94069e59a83", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-3bb8a7a5b26f62d5", "level": "note", "message": {"text": "Very large file: mobile/src/screens/CheckCreateScreen.tsx (3178 lines)"}, "properties": {"repobilityId": "b1055d433d921f3b", "scanner": "scanner-primary", "fingerprint": "3bb8a7a5b26f62d5", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-3368d717960d2aa8", "level": "note", "message": {"text": "Very large file: mobile/src/screens/ClientDetailScreen.tsx (2180 lines)"}, "properties": {"repobilityId": "0e7ff6819942a5f2", "scanner": "scanner-primary", "fingerprint": "3368d717960d2aa8", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-f9c9f533146805d0", "level": "note", "message": {"text": "Very large file: mobile/src/screens/EquipmentScreen.tsx (2168 lines)"}, "properties": {"repobilityId": "7ab5bb6f7b9c7433", "scanner": "scanner-primary", "fingerprint": "f9c9f533146805d0", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-41970cff96f9c449", "level": "note", "message": {"text": "Very large file: mobile/src/screens/ProductsScreen.tsx (3347 lines)"}, "properties": {"repobilityId": "0adaf8391a92b6cc", "scanner": "scanner-primary", "fingerprint": "41970cff96f9c449", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-fd9c4362806fb369", "level": "note", "message": {"text": "Very large file: mobile/src/screens/SalaryScreen.tsx (1985 lines)"}, "properties": {"repobilityId": "c5c5f08688e67801", "scanner": "scanner-primary", "fingerprint": "fd9c4362806fb369", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-e66f2dc8cd9f3dd4", "level": "note", "message": {"text": "Very large file: mobile/src/screens/EmployeeDetailScreen.tsx (2289 lines)"}, "properties": {"repobilityId": "45cc84da3aceff18", "scanner": "scanner-primary", "fingerprint": "e66f2dc8cd9f3dd4", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-71ee02ac4939a2b8", "level": "note", "message": {"text": "Very large file: mobile/src/screens/ExpensesScreen.tsx (2571 lines)"}, "properties": {"repobilityId": "cce723057224713d", "scanner": "scanner-primary", "fingerprint": "71ee02ac4939a2b8", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-1f5b14557e51e958", "level": "note", "message": {"text": "Very large file: mobile/src/screens/ScheduleScreen.tsx (3933 lines)"}, "properties": {"repobilityId": "908a90e5134e30c7", "scanner": "scanner-primary", "fingerprint": "1f5b14557e51e958", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-052bde02ffc10e2c", "level": "note", "message": {"text": "Very large file: mobile/src/screens/ReportsScreen.tsx (2326 lines)"}, "properties": {"repobilityId": "0f54248b1aa7087e", "scanner": "scanner-primary", "fingerprint": "052bde02ffc10e2c", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-58d2301126031e50", "level": "note", "message": {"text": "Very large file: mobile/src/screens/CheckDetailScreen.tsx (2021 lines)"}, "properties": {"repobilityId": "23720464f51cff25", "scanner": "scanner-primary", "fingerprint": "58d2301126031e50", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-f464979c0889e0e9", "level": "note", "message": {"text": "Very large file: mobile/src/screens/DashboardScreen.tsx (4640 lines)"}, "properties": {"repobilityId": "171b3e85e39f7d78", "scanner": "scanner-primary", "fingerprint": "f464979c0889e0e9", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-498d33ea87f8c1ac", "level": "note", "message": {"text": "Very large file: mobile/src/screens/ClientsScreen.tsx (1288 lines)"}, "properties": {"repobilityId": "144fd6b565d83b19", "scanner": "scanner-primary", "fingerprint": "498d33ea87f8c1ac", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-1dfdc02dd2917ae6", "level": "note", "message": {"text": "Very large file: mobile/src/screens/ChecksScreen.tsx (1706 lines)"}, "properties": {"repobilityId": "73b3065a1be71c65", "scanner": "scanner-primary", "fingerprint": "1dfdc02dd2917ae6", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-a0aeb4c528bf0973", "level": "note", "message": {"text": "Very large file: mobile/src/screens/SupplierDetailScreen.tsx (1824 lines)"}, "properties": {"repobilityId": "65eacff82ebb7c1c", "scanner": "scanner-primary", "fingerprint": "a0aeb4c528bf0973", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-5438aa2c9efd73a7", "level": "note", "message": {"text": "Very large file: backend/src/checks/checks.service.ts (1345 lines)"}, "properties": {"repobilityId": "70854d6b34413158", "scanner": "scanner-primary", "fingerprint": "5438aa2c9efd73a7", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-6eb82d4fe225a975", "level": "note", "message": {"text": "Very large file: backend/src/knowledge/knowledge.service.ts (1792 lines)"}, "properties": {"repobilityId": "4f6f436e25dd07c9", "scanner": "scanner-primary", "fingerprint": "6eb82d4fe225a975", "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": "c2abc0aed427d98c", "scanner": "scanner-primary", "fingerprint": "141b30a41e03817b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["license", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-72b2a6250083a784", "level": "warning", "message": {"text": "Placeholder or mock-heavy implementation detected"}, "properties": {"repobilityId": "3d50eebe513e166b", "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": "3ee3a46494778097", "scanner": "scanner-primary", "fingerprint": "2d0c7b7ab8f8aacf", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["placeholder", "mock-data", "critical-flow", "generated-repo-pattern"]}}, {"ruleId": "scanner-749d4bc1bd66df5f", "level": "warning", "message": {"text": "Agent instructions exist but release-hardening basics are missing"}, "properties": {"repobilityId": "a50b3fa2600110f4", "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": "4b652b2266d3ff5c", "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": "f94f894e8a04f3d6", "scanner": "scanner-primary", "fingerprint": "8424db9c75e04ba4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["provenance", "git-history", "generated-repo-pattern"]}}, {"ruleId": "scanner-226cbf1aff8ef5c4", "level": "warning", "message": {"text": "Agent instruction contains unpinned remote install: .claude/skills/ios-qa-build/SKILL.md"}, "properties": {"repobilityId": "c1b672b8e52e7521", "scanner": "scanner-primary", "fingerprint": "226cbf1aff8ef5c4", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "supply-chain", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/skills/ios-qa-build/SKILL.md"}, "region": {"startLine": 57}}}]}, {"ruleId": "scanner-7203ea9a1231afad", "level": "none", "message": {"text": "Commented-code block (9 lines) in frontend/public/sw.js:4"}, "properties": {"repobilityId": "465592826de1d662", "scanner": "scanner-primary", "fingerprint": "7203ea9a1231afad", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-9f0050b1d663c43a", "level": "none", "message": {"text": "Commented-code block (6 lines) in frontend/src/App.tsx:13"}, "properties": {"repobilityId": "9870156b28e15f82", "scanner": "scanner-primary", "fingerprint": "9f0050b1d663c43a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8f6e13feaf3e28ab", "level": "none", "message": {"text": "Commented-code block (9 lines) in frontend/src/api/axios.ts:59"}, "properties": {"repobilityId": "8660d19aab2a9bdf", "scanner": "scanner-primary", "fingerprint": "8f6e13feaf3e28ab", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-542713675765aafd", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/src/contexts/AuthContext.tsx:149"}, "properties": {"repobilityId": "4698345e11afce5c", "scanner": "scanner-primary", "fingerprint": "542713675765aafd", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7809580d84255e54", "level": "none", "message": {"text": "Commented-code block (6 lines) in frontend/src/pages/ProductsPage.tsx:1018"}, "properties": {"repobilityId": "88492bcee8d7ac5c", "scanner": "scanner-primary", "fingerprint": "7809580d84255e54", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e9fae7020592605f", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/src/pages/SupplierDetailPage.tsx:313"}, "properties": {"repobilityId": "ed214f793ca12233", "scanner": "scanner-primary", "fingerprint": "e9fae7020592605f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-520bf0d09a376c61", "level": "none", "message": {"text": "Commented-code block (5 lines) in shared/types/index.ts:1139"}, "properties": {"repobilityId": "601e3ac5ad7ebe13", "scanner": "scanner-primary", "fingerprint": "520bf0d09a376c61", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ccd3509f47691c3b", "level": "none", "message": {"text": "Commented-code block (5 lines) in shared/api/createServices.ts:6"}, "properties": {"repobilityId": "ca86c62978d913b0", "scanner": "scanner-primary", "fingerprint": "ccd3509f47691c3b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2a6726549cc46332", "level": "none", "message": {"text": "Commented-code block (13 lines) in shared/utils/attendance.ts:7"}, "properties": {"repobilityId": "7b9db18467e0ebed", "scanner": "scanner-primary", "fingerprint": "2a6726549cc46332", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8fe0c4f5f1641661", "level": "none", "message": {"text": "Commented-code block (7 lines) in mobile/metro.config.js:27"}, "properties": {"repobilityId": "14327efa60eca8b4", "scanner": "scanner-primary", "fingerprint": "8fe0c4f5f1641661", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-da9fee9a548b71f9", "level": "none", "message": {"text": "Commented-code block (5 lines) in mobile/App.tsx:24"}, "properties": {"repobilityId": "2fac33fa88288158", "scanner": "scanner-primary", "fingerprint": "da9fee9a548b71f9", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-70ac5d04752a5ea2", "level": "none", "message": {"text": "Commented-code block (5 lines) in mobile/src/navigation/AdminTabBar.tsx:105"}, "properties": {"repobilityId": "b2eec436b5386068", "scanner": "scanner-primary", "fingerprint": "70ac5d04752a5ea2", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5390dbdfccd7717b", "level": "none", "message": {"text": "Commented-code block (6 lines) in mobile/src/navigation/TabBar.android.tsx:154"}, "properties": {"repobilityId": "bdf12e8c7051c855", "scanner": "scanner-primary", "fingerprint": "5390dbdfccd7717b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1b6b57b6049ad7d1", "level": "none", "message": {"text": "Commented-code block (6 lines) in mobile/src/navigation/AppNavigator.tsx:116"}, "properties": {"repobilityId": "340519c2041c6e4f", "scanner": "scanner-primary", "fingerprint": "1b6b57b6049ad7d1", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8d0191f36b687b9b", "level": "none", "message": {"text": "Commented-code block (5 lines) in mobile/src/navigation/TabBar.ios.tsx:57"}, "properties": {"repobilityId": "ffc86f3ca8971d91", "scanner": "scanner-primary", "fingerprint": "8d0191f36b687b9b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5f69c38f53a0cfc5", "level": "none", "message": {"text": "Commented-code block (7 lines) in mobile/src/api/axios.ts:33"}, "properties": {"repobilityId": "d9dd9f6e7a0acbc0", "scanner": "scanner-primary", "fingerprint": "5f69c38f53a0cfc5", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a4d445c0efb1300c", "level": "none", "message": {"text": "Commented-code block (8 lines) in mobile/src/screens/CashFlowScreen.tsx:191"}, "properties": {"repobilityId": "687e14d1b6c5fcbf", "scanner": "scanner-primary", "fingerprint": "a4d445c0efb1300c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4147b48f40874c88", "level": "none", "message": {"text": "Commented-code block (7 lines) in mobile/src/screens/WarehouseAnalyticsScreen.tsx:1246"}, "properties": {"repobilityId": "877fbfc58bb81961", "scanner": "scanner-primary", "fingerprint": "4147b48f40874c88", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5ee6b371669b6728", "level": "none", "message": {"text": "Commented-code block (5 lines) in mobile/src/screens/LoginScreen.tsx:38"}, "properties": {"repobilityId": "3f2375463cf17e48", "scanner": "scanner-primary", "fingerprint": "5ee6b371669b6728", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-9b660846640337b8", "level": "none", "message": {"text": "Commented-code block (5 lines) in mobile/src/screens/MarketingScreen.tsx:250"}, "properties": {"repobilityId": "ec20a018413750d2", "scanner": "scanner-primary", "fingerprint": "9b660846640337b8", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-926ee93a754e6a5a", "level": "none", "message": {"text": "Commented-code block (10 lines) in mobile/src/screens/CheckCreateScreen.tsx:110"}, "properties": {"repobilityId": "ec4b2c2daf018aca", "scanner": "scanner-primary", "fingerprint": "926ee93a754e6a5a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8ccaf14e92f81e1e", "level": "none", "message": {"text": "Commented-code block (5 lines) in mobile/src/screens/ClientDetailScreen.tsx:187"}, "properties": {"repobilityId": "df7d58446304194e", "scanner": "scanner-primary", "fingerprint": "8ccaf14e92f81e1e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-74ecc32d61aa1dc9", "level": "none", "message": {"text": "Commented-code block (5 lines) in mobile/src/screens/UsersScreen.tsx:137"}, "properties": {"repobilityId": "21f1afce4856f16b", "scanner": "scanner-primary", "fingerprint": "74ecc32d61aa1dc9", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c75729bda0f9b787", "level": "none", "message": {"text": "Commented-code block (5 lines) in mobile/src/screens/EquipmentScreen.tsx:108"}, "properties": {"repobilityId": "2a9872e0b398247e", "scanner": "scanner-primary", "fingerprint": "c75729bda0f9b787", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-88d0e20e1a0b853d", "level": "none", "message": {"text": "Commented-code block (6 lines) in mobile/src/screens/CallsScreen.tsx:90"}, "properties": {"repobilityId": "d7fa0ee6772e3e98", "scanner": "scanner-primary", "fingerprint": "88d0e20e1a0b853d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ce0bb8690922ebfc", "level": "none", "message": {"text": "Commented-code block (7 lines) in mobile/src/screens/ProductsScreen.tsx:65"}, "properties": {"repobilityId": "b574f1442b165afb", "scanner": "scanner-primary", "fingerprint": "ce0bb8690922ebfc", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5783964bd5d0433c", "level": "none", "message": {"text": "Commented-code block (7 lines) in mobile/src/screens/MoreScreen.tsx:62"}, "properties": {"repobilityId": "c4c0700026dafe25", "scanner": "scanner-primary", "fingerprint": "5783964bd5d0433c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c8ca33ddeb5ff38c", "level": "none", "message": {"text": "Commented-code block (5 lines) in mobile/src/screens/ServicesScreen.tsx:40"}, "properties": {"repobilityId": "d6ca874720836ef6", "scanner": "scanner-primary", "fingerprint": "c8ca33ddeb5ff38c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0b4d1d6973c7d6f6", "level": "none", "message": {"text": "Commented-code block (6 lines) in mobile/src/screens/SalaryScreen.tsx:340"}, "properties": {"repobilityId": "6d5321ded69b5d4f", "scanner": "scanner-primary", "fingerprint": "0b4d1d6973c7d6f6", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2a90c24b8ff1f3b2", "level": "none", "message": {"text": "Commented-code block (6 lines) in mobile/src/screens/EmployeeDetailScreen.tsx:242"}, "properties": {"repobilityId": "5c166ca05c484c81", "scanner": "scanner-primary", "fingerprint": "2a90c24b8ff1f3b2", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-fb835397bc8b83a9", "level": "none", "message": {"text": "Commented-code block (9 lines) in mobile/src/screens/ExpensesScreen.tsx:164"}, "properties": {"repobilityId": "6ec1865be2b6a4b0", "scanner": "scanner-primary", "fingerprint": "fb835397bc8b83a9", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-54bbafb2ff4998a2", "level": "none", "message": {"text": "Commented-code block (6 lines) in mobile/src/screens/ScheduleScreen.tsx:214"}, "properties": {"repobilityId": "80b6c2097b7a858d", "scanner": "scanner-primary", "fingerprint": "54bbafb2ff4998a2", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b88cf96b56a91a81", "level": "none", "message": {"text": "Commented-code block (5 lines) in mobile/src/screens/ReportsScreen.tsx:394"}, "properties": {"repobilityId": "efb67e1bb009c894", "scanner": "scanner-primary", "fingerprint": "b88cf96b56a91a81", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-bdda8514f50f5576", "level": "none", "message": {"text": "Commented-code block (6 lines) in mobile/src/screens/CheckDetailScreen.tsx:247"}, "properties": {"repobilityId": "bc5d1015aa071788", "scanner": "scanner-primary", "fingerprint": "bdda8514f50f5576", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-19b7fbf7a5712192", "level": "none", "message": {"text": "Commented-code block (5 lines) in mobile/src/screens/SuppliersScreen.tsx:52"}, "properties": {"repobilityId": "4d999e4a450028dc", "scanner": "scanner-primary", "fingerprint": "19b7fbf7a5712192", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c57894be07e79d61", "level": "none", "message": {"text": "Commented-code block (5 lines) in mobile/src/screens/DashboardScreen.tsx:77"}, "properties": {"repobilityId": "2a873101fb8151db", "scanner": "scanner-primary", "fingerprint": "c57894be07e79d61", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1c98eb66f49f08c7", "level": "none", "message": {"text": "Commented-code block (6 lines) in mobile/src/screens/ClientsScreen.tsx:51"}, "properties": {"repobilityId": "d551bdb3c616bba9", "scanner": "scanner-primary", "fingerprint": "1c98eb66f49f08c7", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-53e1af981f5de669", "level": "none", "message": {"text": "Commented-code block (11 lines) in mobile/src/screens/ChecksScreen.tsx:132"}, "properties": {"repobilityId": "2c7252d959ad54e4", "scanner": "scanner-primary", "fingerprint": "53e1af981f5de669", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c763865419ecf288", "level": "none", "message": {"text": "Commented-code block (8 lines) in mobile/src/screens/SupplierDetailScreen.tsx:191"}, "properties": {"repobilityId": "07934d7a21e00b55", "scanner": "scanner-primary", "fingerprint": "c763865419ecf288", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c04faf32332da488", "level": "none", "message": {"text": "Commented-code block (7 lines) in mobile/src/utils/persistentCache.ts:49"}, "properties": {"repobilityId": "cf1ffdfad51c28ca", "scanner": "scanner-primary", "fingerprint": "c04faf32332da488", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b68feeb62452de64", "level": "none", "message": {"text": "Commented-code block (5 lines) in mobile/src/utils/__tests__/sharedPlate.test.ts:201"}, "properties": {"repobilityId": "c3c27f3580721ae1", "scanner": "scanner-primary", "fingerprint": "b68feeb62452de64", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-74f26c93688ca7e4", "level": "none", "message": {"text": "Commented-code block (5 lines) in mobile/src/platform/iosSurface.ts:91"}, "properties": {"repobilityId": "970d04d92b7749f1", "scanner": "scanner-primary", "fingerprint": "74f26c93688ca7e4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6b514d43c1983a0a", "level": "none", "message": {"text": "Commented-code block (5 lines) in mobile/src/components/FeatureGate.tsx:52"}, "properties": {"repobilityId": "973464d3306772bf", "scanner": "scanner-primary", "fingerprint": "6b514d43c1983a0a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-9c56b26b004c3de4", "level": "none", "message": {"text": "Commented-code block (5 lines) in mobile/src/components/ClientListRow.tsx:95"}, "properties": {"repobilityId": "9ef55a98f43c6046", "scanner": "scanner-primary", "fingerprint": "9c56b26b004c3de4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6d3fd1bc63fa13e4", "level": "none", "message": {"text": "Commented-code block (5 lines) in mobile/src/components/DateTimePickerModal.tsx:66"}, "properties": {"repobilityId": "e38be9e7ddcfcc50", "scanner": "scanner-primary", "fingerprint": "6d3fd1bc63fa13e4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e6486919dcf9b74e", "level": "none", "message": {"text": "Commented-code block (7 lines) in mobile/src/components/SalaryEnvelopeAnimation.tsx:194"}, "properties": {"repobilityId": "ea81491755de19a8", "scanner": "scanner-primary", "fingerprint": "e6486919dcf9b74e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ce7505043da49e95", "level": "none", "message": {"text": "Commented-code block (6 lines) in mobile/src/components/ProductPickerModal.tsx:30"}, "properties": {"repobilityId": "87092e33bc24721d", "scanner": "scanner-primary", "fingerprint": "ce7505043da49e95", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-153318c329fcdd3e", "level": "none", "message": {"text": "Commented-code block (5 lines) in mobile/src/components/Modal.tsx:63"}, "properties": {"repobilityId": "cd353fbfa852603e", "scanner": "scanner-primary", "fingerprint": "153318c329fcdd3e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f4d1e20d96b16de2", "level": "none", "message": {"text": "Commented-code block (6 lines) in mobile/src/components/AnimatedCard.tsx:31"}, "properties": {"repobilityId": "0a94d6ad6de43083", "scanner": "scanner-primary", "fingerprint": "f4d1e20d96b16de2", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-081209b343ea5e63", "level": "none", "message": {"text": "Commented-code block (7 lines) in mobile/src/components/SearchInput.tsx:18"}, "properties": {"repobilityId": "658a116ce7e39283", "scanner": "scanner-primary", "fingerprint": "081209b343ea5e63", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5755a044a45b8134", "level": "none", "message": {"text": "Commented-code block (6 lines) in mobile/src/components/RussianPlateInput.tsx:177"}, "properties": {"repobilityId": "fa44023042baa052", "scanner": "scanner-primary", "fingerprint": "5755a044a45b8134", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e13ed8a327c1e90e", "level": "none", "message": {"text": "Commented-code block (5 lines) in mobile/src/components/ClientCallsSection.tsx:69"}, "properties": {"repobilityId": "b09c33d9953987ae", "scanner": "scanner-primary", "fingerprint": "e13ed8a327c1e90e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7d6c793883886ce4", "level": "none", "message": {"text": "Commented-code block (9 lines) in mobile/src/components/ActiveWarrantiesSection.tsx:185"}, "properties": {"repobilityId": "73a464e3e40b9b1e", "scanner": "scanner-primary", "fingerprint": "7d6c793883886ce4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f7d2389b995f701c", "level": "none", "message": {"text": "Commented-code block (5 lines) in mobile/src/components/ModalBlurBackdrop.tsx:53"}, "properties": {"repobilityId": "713e969f80c67eb7", "scanner": "scanner-primary", "fingerprint": "f7d2389b995f701c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2355545c8f717bcb", "level": "none", "message": {"text": "Commented-code block (7 lines) in mobile/src/components/icons/ioniconsMap.ts:372"}, "properties": {"repobilityId": "7a0975ffd28c8435", "scanner": "scanner-primary", "fingerprint": "2355545c8f717bcb", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-52232aab96fdd2c6", "level": "none", "message": {"text": "Commented-code block (5 lines) in mobile/src/contexts/AuthContext.tsx:64"}, "properties": {"repobilityId": "00952aac2cc338cc", "scanner": "scanner-primary", "fingerprint": "52232aab96fdd2c6", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-db55f9948c0d50c8", "level": "none", "message": {"text": "Commented-code block (6 lines) in mobile/plugins/withWidgetExtension.js:23"}, "properties": {"repobilityId": "3238b3f27ef7fcd8", "scanner": "scanner-primary", "fingerprint": "db55f9948c0d50c8", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2b2a0e9158435ef6", "level": "none", "message": {"text": "Commented-code block (5 lines) in backend/src/schedule/schedule.service.ts:17"}, "properties": {"repobilityId": "6311151a003e5c22", "scanner": "scanner-primary", "fingerprint": "2b2a0e9158435ef6", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-996cb348fa43fb70", "level": "none", "message": {"text": "Commented-code block (6 lines) in backend/src/employees/employees.service.ts:228"}, "properties": {"repobilityId": "a426d028e6415754", "scanner": "scanner-primary", "fingerprint": "996cb348fa43fb70", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4bdc6a84fd2afa8a", "level": "none", "message": {"text": "Commented-code block (5 lines) in backend/src/users/users.controller.ts:9"}, "properties": {"repobilityId": "5ca5dd0ef53d701c", "scanner": "scanner-primary", "fingerprint": "4bdc6a84fd2afa8a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d656e80e83d73363", "level": "none", "message": {"text": "Commented-code block (10 lines) in backend/src/push/push.service.ts:13"}, "properties": {"repobilityId": "f064c903209b8049", "scanner": "scanner-primary", "fingerprint": "d656e80e83d73363", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5ba1d0b892c31b09", "level": "none", "message": {"text": "Commented-code block (5 lines) in backend/src/auth/jwt.strategy.ts:30"}, "properties": {"repobilityId": "81be9109838993a2", "scanner": "scanner-primary", "fingerprint": "5ba1d0b892c31b09", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-95f8032539b546b1", "level": "none", "message": {"text": "Commented-code block (5 lines) in backend/src/stock-movements/stock-movements.service.ts:210"}, "properties": {"repobilityId": "c5d2e964fe1531ff", "scanner": "scanner-primary", "fingerprint": "95f8032539b546b1", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c30ccc373e7c5a74", "level": "none", "message": {"text": "Commented-code block (5 lines) in backend/src/stock-movements/stock-movements.controller.ts:84"}, "properties": {"repobilityId": "ccede5d22e82182a", "scanner": "scanner-primary", "fingerprint": "c30ccc373e7c5a74", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-66dc5b490521b600", "level": "none", "message": {"text": "Commented-code block (5 lines) in backend/src/common/field-filter.ts:1"}, "properties": {"repobilityId": "7c19a26091429e06", "scanner": "scanner-primary", "fingerprint": "66dc5b490521b600", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0ebd534be521bb86", "level": "none", "message": {"text": "Commented-code block (5 lines) in backend/src/common/guards/rate-limit.guard.ts:61"}, "properties": {"repobilityId": "0f5a1f97abee95b2", "scanner": "scanner-primary", "fingerprint": "0ebd534be521bb86", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d0d538eec2b2a6b6", "level": "none", "message": {"text": "Commented-code block (5 lines) in backend/src/tenants/tenants.service.ts:79"}, "properties": {"repobilityId": "3cb954fc7c7105a7", "scanner": "scanner-primary", "fingerprint": "d0d538eec2b2a6b6", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d4aebb0e5f14e178", "level": "none", "message": {"text": "Commented-code block (5 lines) in backend/src/uploads/storage.service.ts:19"}, "properties": {"repobilityId": "4fdc454c4a124c60", "scanner": "scanner-primary", "fingerprint": "d4aebb0e5f14e178", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5ff0e0bc62097951", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 backend/src/marketing/marketing.service.ts:53"}, "properties": {"repobilityId": "d929a91b1518a751", "scanner": "scanner-primary", "fingerprint": "5ff0e0bc62097951", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-ab455902836eeb60", "level": "none", "message": {"text": "Commented-code block (7 lines) in backend/src/marketing/marketing.controller.ts:116"}, "properties": {"repobilityId": "56c02e549d9b27d3", "scanner": "scanner-primary", "fingerprint": "ab455902836eeb60", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8d4624f862e5683a", "level": "none", "message": {"text": "Commented-code block (5 lines) in backend/src/calls/calls.service.ts:260"}, "properties": {"repobilityId": "bc0786a42034fbc6", "scanner": "scanner-primary", "fingerprint": "8d4624f862e5683a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-55229b807846dba4", "level": "none", "message": {"text": "Commented-code block (5 lines) in backend/src/suppliers/suppliers.controller.ts:68"}, "properties": {"repobilityId": "a8018ecbb8ecfcbd", "scanner": "scanner-primary", "fingerprint": "55229b807846dba4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-db27efb4f3a0a259", "level": "none", "message": {"text": "Commented-code block (5 lines) in backend/src/suppliers/suppliers.service.ts:117"}, "properties": {"repobilityId": "eb5eacd6d978056e", "scanner": "scanner-primary", "fingerprint": "db27efb4f3a0a259", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5f303289e5a141c6", "level": "none", "message": {"text": "Commented-code block (8 lines) in backend/src/warehouse/warehouse.service.ts:58"}, "properties": {"repobilityId": "c3f3bcc8ee4047ba", "scanner": "scanner-primary", "fingerprint": "5f303289e5a141c6", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0db016bc55d215c8", "level": "none", "message": {"text": "Commented-code block (5 lines) in backend/src/reports/reports.controller.ts:7"}, "properties": {"repobilityId": "a07a3c5b9c37d164", "scanner": "scanner-primary", "fingerprint": "0db016bc55d215c8", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a7eec5f0c0903eb4", "level": "none", "message": {"text": "Commented-code block (5 lines) in backend/src/reports/reports.service.ts:268"}, "properties": {"repobilityId": "780d39e9376110ab", "scanner": "scanner-primary", "fingerprint": "a7eec5f0c0903eb4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0ec1748564887d2d", "level": "none", "message": {"text": "Commented-code block (9 lines) in backend/src/checks/checks.service.ts:171"}, "properties": {"repobilityId": "b372fc0676dfd761", "scanner": "scanner-primary", "fingerprint": "0ec1748564887d2d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0d492eb353d78205", "level": "none", "message": {"text": "Commented-code block (5 lines) in backend/src/products/products.service.ts:118"}, "properties": {"repobilityId": "993f51260f3b2d83", "scanner": "scanner-primary", "fingerprint": "0d492eb353d78205", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f2ebb1b2cfb99770", "level": "none", "message": {"text": "Commented-code block (8 lines) in backend/src/warranty/warranty.service.ts:267"}, "properties": {"repobilityId": "5a7d9aa96ccd3c2d", "scanner": "scanner-primary", "fingerprint": "f2ebb1b2cfb99770", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0b9912249555ef56", "level": "none", "message": {"text": "Commented-code block (7 lines) in backend/src/knowledge/knowledge.service.ts:318"}, "properties": {"repobilityId": "5c12d7f2413d50dc", "scanner": "scanner-primary", "fingerprint": "0b9912249555ef56", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-af022f937dd5b7fd", "level": "note", "message": {"text": "9 env vars used in code but missing from .env.example"}, "properties": {"repobilityId": "5597384795dea7a4", "scanner": "scanner-primary", "fingerprint": "af022f937dd5b7fd", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "config-drift"]}}, {"ruleId": "scanner-851f124dbde0e5d6", "level": "warning", "message": {"text": "Frontend route `/review/:token` has no Link/navigate to it \u2014 frontend/src/App.tsx"}, "properties": {"repobilityId": "b5b9e64130fe163f", "scanner": "scanner-primary", "fingerprint": "851f124dbde0e5d6", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-0dc6ea9a3f2de04d", "level": "warning", "message": {"text": "Frontend route `/checks/:id/edit` has no Link/navigate to it \u2014 frontend/src/App.tsx"}, "properties": {"repobilityId": "d6e11de0e34a7d1d", "scanner": "scanner-primary", "fingerprint": "0dc6ea9a3f2de04d", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-f5240130ae7f21e2", "level": "warning", "message": {"text": "Frontend route `/checks/:id` has no Link/navigate to it \u2014 frontend/src/App.tsx"}, "properties": {"repobilityId": "e2ff9ae95771f6aa", "scanner": "scanner-primary", "fingerprint": "f5240130ae7f21e2", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-8f668b1ce595eaf9", "level": "warning", "message": {"text": "Frontend route `/clients/:id` has no Link/navigate to it \u2014 frontend/src/App.tsx"}, "properties": {"repobilityId": "e8a0dcb14d0e92dd", "scanner": "scanner-primary", "fingerprint": "8f668b1ce595eaf9", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-90351fcf18f2bed2", "level": "warning", "message": {"text": "Frontend route `/cars` has no Link/navigate to it \u2014 frontend/src/App.tsx"}, "properties": {"repobilityId": "9fd79f55e5a4ac5b", "scanner": "scanner-primary", "fingerprint": "90351fcf18f2bed2", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-63df1bb2693cd0d0", "level": "warning", "message": {"text": "Frontend route `/suppliers/:id` has no Link/navigate to it \u2014 frontend/src/App.tsx"}, "properties": {"repobilityId": "55a91306e4f3d332", "scanner": "scanner-primary", "fingerprint": "63df1bb2693cd0d0", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-24e38f37f16dac2b", "level": "warning", "message": {"text": "Frontend route `/employees/:id` has no Link/navigate to it \u2014 frontend/src/App.tsx"}, "properties": {"repobilityId": "7542966f156ab7c1", "scanner": "scanner-primary", "fingerprint": "24e38f37f16dac2b", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-7cac8a06a730a35b", "level": "warning", "message": {"text": "Frontend route `/admin` has no Link/navigate to it \u2014 frontend/src/App.tsx"}, "properties": {"repobilityId": "518bbd33606ca41a", "scanner": "scanner-primary", "fingerprint": "7cac8a06a730a35b", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-784b9ca239ab8e0e", "level": "warning", "message": {"text": "Frontend route `/admin/tenants/:id` has no Link/navigate to it \u2014 frontend/src/App.tsx"}, "properties": {"repobilityId": "4da799e98e6d930d", "scanner": "scanner-primary", "fingerprint": "784b9ca239ab8e0e", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-1ed45faf9ecafe16", "level": "error", "message": {"text": "Dangling fetch: GET /dashboard (frontend/src/hooks/useRoutePrefetch.ts:36)"}, "properties": {"repobilityId": "49be7643bb43104f", "scanner": "scanner-primary", "fingerprint": "1ed45faf9ecafe16", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-16543be1e31225c4", "level": "error", "message": {"text": "Dangling fetch: GET https://sms.ru/sms/send?${params.toString()} (backend/src/marketing/marketing.service.ts:53)"}, "properties": {"repobilityId": "e95c6aed3a86a79c", "scanner": "scanner-primary", "fingerprint": "16543be1e31225c4", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-67d28fa8cd6bb12f", "level": "note", "message": {"text": "Unused endpoint: PUT /"}, "properties": {"repobilityId": "35b9a00876ce5950", "scanner": "scanner-primary", "fingerprint": "67d28fa8cd6bb12f", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-c059f57186114027", "level": "note", "message": {"text": "Unused endpoint: POST /auth/logout"}, "properties": {"repobilityId": "f6439dbc81966498", "scanner": "scanner-primary", "fingerprint": "c059f57186114027", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-1378adfa31e352e3", "level": "note", "message": {"text": "Unused endpoint: POST /users/order"}, "properties": {"repobilityId": "5d2e5af955cc4c43", "scanner": "scanner-primary", "fingerprint": "1378adfa31e352e3", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-186db8a11675eb25", "level": "note", "message": {"text": "Unused endpoint: GET /clients/export-csv"}, "properties": {"repobilityId": "78df1174118ff915", "scanner": "scanner-primary", "fingerprint": "186db8a11675eb25", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-3bb3072239c339e9", "level": "note", "message": {"text": "Unused endpoint: GET /products/export-csv"}, "properties": {"repobilityId": "7e5d04afa7c17cf8", "scanner": "scanner-primary", "fingerprint": "3bb3072239c339e9", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-4f7a28f63569c93a", "level": "note", "message": {"text": "Unused endpoint: PATCH /schedule/"}, "properties": {"repobilityId": "ba6ec0cd1cae0b4d", "scanner": "scanner-primary", "fingerprint": "4f7a28f63569c93a", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-ae6a9aa131d04375", "level": "note", "message": {"text": "Unused endpoint: POST /expenses"}, "properties": {"repobilityId": "e1d9651dd537e369", "scanner": "scanner-primary", "fingerprint": "ae6a9aa131d04375", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-18acb0c37b391c42", "level": "note", "message": {"text": "Unused endpoint: PATCH /warehouse/categories/order"}, "properties": {"repobilityId": "96125cd100c1bdfe", "scanner": "scanner-primary", "fingerprint": "18acb0c37b391c42", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-5e2cf47f45be5160", "level": "note", "message": {"text": "Unused endpoint: POST /marketing/integrations/test"}, "properties": {"repobilityId": "da39abd9d39ef568", "scanner": "scanner-primary", "fingerprint": "5e2cf47f45be5160", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-c4ae3416c11ccb52", "level": "note", "message": {"text": "Unused endpoint: POST /marketing/sms/send"}, "properties": {"repobilityId": "3553a839ea185edb", "scanner": "scanner-primary", "fingerprint": "c4ae3416c11ccb52", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-3013d604333bdde3", "level": "note", "message": {"text": "Unused endpoint: POST /equipment/categories"}, "properties": {"repobilityId": "2db54f89a55905e1", "scanner": "scanner-primary", "fingerprint": "3013d604333bdde3", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-fb3b1442017f5d51", "level": "note", "message": {"text": "Unused endpoint: POST /equipment/storage"}, "properties": {"repobilityId": "4888f0cdbbbd582d", "scanner": "scanner-primary", "fingerprint": "fb3b1442017f5d51", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-6dbfe51563f78b35", "level": "note", "message": {"text": "Unused endpoint: POST /equipment/issue"}, "properties": {"repobilityId": "0af7eb89b7aae2bd", "scanner": "scanner-primary", "fingerprint": "6dbfe51563f78b35", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-8ca11260ab9517b1", "level": "note", "message": {"text": "Unused endpoint: POST /push/token"}, "properties": {"repobilityId": "16e68bf388ab79b4", "scanner": "scanner-primary", "fingerprint": "8ca11260ab9517b1", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-450e66b9b4b20011", "level": "note", "message": {"text": "Unused endpoint: DELETE /push/token"}, "properties": {"repobilityId": "9be9e6945c7e15d3", "scanner": "scanner-primary", "fingerprint": "450e66b9b4b20011", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-281dc16c0db3ee1f", "level": "note", "message": {"text": "Unused endpoint: GET /schedule/today"}, "properties": {"repobilityId": "0176b7cf2a32b302", "scanner": "scanner-primary", "fingerprint": "281dc16c0db3ee1f", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-5133bd90ebec0c76", "level": "note", "message": {"text": "Unused endpoint: GET /schedule/my-stats"}, "properties": {"repobilityId": "2ef9e09c46eceeb4", "scanner": "scanner-primary", "fingerprint": "5133bd90ebec0c76", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-345f78d08a21615d", "level": "note", "message": {"text": "Unused endpoint: GET /schedule/work-modes"}, "properties": {"repobilityId": "5fd0fea3f61d3e5c", "scanner": "scanner-primary", "fingerprint": "345f78d08a21615d", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-27bfe9f9444d787a", "level": "note", "message": {"text": "Unused endpoint: GET /schedule/settings"}, "properties": {"repobilityId": "8ac2da77d2fbd24d", "scanner": "scanner-primary", "fingerprint": "27bfe9f9444d787a", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-adec9415452876e4", "level": "note", "message": {"text": "Unused endpoint: POST /schedule/settings"}, "properties": {"repobilityId": "dcc38d0c8d6145ab", "scanner": "scanner-primary", "fingerprint": "adec9415452876e4", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-563afa40afc57c0d", "level": "note", "message": {"text": "Unused endpoint: POST /schedule/work-modes"}, "properties": {"repobilityId": "bff3ddeeba676734", "scanner": "scanner-primary", "fingerprint": "563afa40afc57c0d", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-b8774664215bb2d8", "level": "note", "message": {"text": "Unused endpoint: POST /schedule/apply-work-mode"}, "properties": {"repobilityId": "88b0719f880d2283", "scanner": "scanner-primary", "fingerprint": "b8774664215bb2d8", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-35599ac8b224a585", "level": "note", "message": {"text": "Unused endpoint: PATCH /schedule/work-modes/:id"}, "properties": {"repobilityId": "27fa3a7b0f56e29a", "scanner": "scanner-primary", "fingerprint": "35599ac8b224a585", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-6f8dfd61f772c68e", "level": "note", "message": {"text": "Unused endpoint: PATCH /schedule/:id"}, "properties": {"repobilityId": "a5f8fc594c3b9f60", "scanner": "scanner-primary", "fingerprint": "6f8dfd61f772c68e", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-c4e1f13d80a4c888", "level": "note", "message": {"text": "Unused endpoint: DELETE /schedule/:id"}, "properties": {"repobilityId": "eb4cd7e8044f7530", "scanner": "scanner-primary", "fingerprint": "c4e1f13d80a4c888", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-6a8aee6237cdf578", "level": "note", "message": {"text": "Unused endpoint: PATCH /employees/:id"}, "properties": {"repobilityId": "7a2a6788dc6c5e58", "scanner": "scanner-primary", "fingerprint": "6a8aee6237cdf578", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-f11f1401bc4f17d4", "level": "note", "message": {"text": "Unused endpoint: POST /employees/:id/photo"}, "properties": {"repobilityId": "f22e4c940c861301", "scanner": "scanner-primary", "fingerprint": "f11f1401bc4f17d4", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-644e7dae77880913", "level": "note", "message": {"text": "Unused endpoint: GET /employees/:id/full-profile"}, "properties": {"repobilityId": "85cf1df280f5e420", "scanner": "scanner-primary", "fingerprint": "644e7dae77880913", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-f261995a14e6370e", "level": "note", "message": {"text": "Unused endpoint: GET /employees/:id/documents"}, "properties": {"repobilityId": "fd46ccc0a38a894c", "scanner": "scanner-primary", "fingerprint": "f261995a14e6370e", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-6d72561bea9c07c6", "level": "note", "message": {"text": "Unused endpoint: GET /employees/:id/documents/:docId/file"}, "properties": {"repobilityId": "79bcc2ad3cd24dfd", "scanner": "scanner-primary", "fingerprint": "6d72561bea9c07c6", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-381257b6450bcaa3", "level": "note", "message": {"text": "Unused endpoint: POST /employees/:id/documents"}, "properties": {"repobilityId": "2f94322dfb0691cd", "scanner": "scanner-primary", "fingerprint": "381257b6450bcaa3", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-e6bb24a871c64dbd", "level": "note", "message": {"text": "Unused endpoint: DELETE /employees/:id/documents/:docId"}, "properties": {"repobilityId": "5c69aaeed5e28303", "scanner": "scanner-primary", "fingerprint": "e6bb24a871c64dbd", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-49021996c9b75108", "level": "note", "message": {"text": "Unused endpoint: GET /employees/:id/achievements"}, "properties": {"repobilityId": "88b8082173a7e94c", "scanner": "scanner-primary", "fingerprint": "49021996c9b75108", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-3d4c8c3a5db2ed7f", "level": "note", "message": {"text": "Unused endpoint: POST /employees/:id/achievements"}, "properties": {"repobilityId": "4979015439698e03", "scanner": "scanner-primary", "fingerprint": "3d4c8c3a5db2ed7f", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-40c781197b533779", "level": "note", "message": {"text": "Unused endpoint: DELETE /employees/:id/achievements/:achId"}, "properties": {"repobilityId": "30670f804fd4541d", "scanner": "scanner-primary", "fingerprint": "40c781197b533779", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-d44617831f14e83d", "level": "note", "message": {"text": "Unused endpoint: GET /users/masters"}, "properties": {"repobilityId": "b74ce7dc57c480f0", "scanner": "scanner-primary", "fingerprint": "d44617831f14e83d", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-10c7a6090740a812", "level": "note", "message": {"text": "Unused endpoint: GET /users/dismissed"}, "properties": {"repobilityId": "eaac2d246f1af370", "scanner": "scanner-primary", "fingerprint": "10c7a6090740a812", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-784e5545d162f56e", "level": "note", "message": {"text": "Unused endpoint: POST /users/:id/restore"}, "properties": {"repobilityId": "6b0f43dcc70c4237", "scanner": "scanner-primary", "fingerprint": "784e5545d162f56e", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-f41365c956550d92", "level": "note", "message": {"text": "Unused endpoint: POST /users/:id/purge"}, "properties": {"repobilityId": "2cd98e473a797f27", "scanner": "scanner-primary", "fingerprint": "f41365c956550d92", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-41aa9e92da3f14ad", "level": "note", "message": {"text": "Unused endpoint: GET /users/:id"}, "properties": {"repobilityId": "49a2da6c8797fbba", "scanner": "scanner-primary", "fingerprint": "41aa9e92da3f14ad", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-a2da8d08e12b122c", "level": "note", "message": {"text": "Unused endpoint: PATCH /users/:id"}, "properties": {"repobilityId": "5c43b8596082b25f", "scanner": "scanner-primary", "fingerprint": "a2da8d08e12b122c", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-79406b9fd85263bf", "level": "note", "message": {"text": "Unused endpoint: DELETE /users/:id"}, "properties": {"repobilityId": "5f033c41b85b3677", "scanner": "scanner-primary", "fingerprint": "79406b9fd85263bf", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-4d589476d8bb8a43", "level": "note", "message": {"text": "Unused endpoint: GET /users/:id/product-commissions"}, "properties": {"repobilityId": "843cb611152da465", "scanner": "scanner-primary", "fingerprint": "4d589476d8bb8a43", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-be70c3d39d9949f4", "level": "note", "message": {"text": "Unused endpoint: POST /users/:id/product-commissions"}, "properties": {"repobilityId": "300ed2cb37cc0f7b", "scanner": "scanner-primary", "fingerprint": "be70c3d39d9949f4", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-999dff0ea581b4b8", "level": "note", "message": {"text": "Unused endpoint: GET /notifications/preferences"}, "properties": {"repobilityId": "cea07963e98cc24a", "scanner": "scanner-primary", "fingerprint": "999dff0ea581b4b8", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-c572df6645eb8b5a", "level": "note", "message": {"text": "Unused endpoint: PUT /notifications/preferences"}, "properties": {"repobilityId": "ace3ff6999192f6d", "scanner": "scanner-primary", "fingerprint": "c572df6645eb8b5a", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-1340a23856cf2ca4", "level": "note", "message": {"text": "Unused endpoint: GET /notifications/broadcasts/unseen"}, "properties": {"repobilityId": "5ce82b8bb04cfa11", "scanner": "scanner-primary", "fingerprint": "1340a23856cf2ca4", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-e4d75d43589d5749", "level": "note", "message": {"text": "Unused endpoint: POST /notifications/broadcasts/:id/seen"}, "properties": {"repobilityId": "4ca0c5e004756895", "scanner": "scanner-primary", "fingerprint": "e4d75d43589d5749", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-8206e0572124202c", "level": "note", "message": {"text": "Unused endpoint: POST /notifications/broadcast"}, "properties": {"repobilityId": "0b315d4130059c15", "scanner": "scanner-primary", "fingerprint": "8206e0572124202c", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-8fdbacfe9430a6ed", "level": "note", "message": {"text": "Unused endpoint: POST /auth/login"}, "properties": {"repobilityId": "743b1ea2f563f80c", "scanner": "scanner-primary", "fingerprint": "8fdbacfe9430a6ed", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}]}]}