{"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: talent-x-app/talent-x", "shortDescription": {"text": "Foundry mined unresolved feedback: talent-x-app/talent-x"}, "fullDescription": {"text": "Graph query export: Human feedback without linked fix evidence\nQuery id: unresolved_feedback\nQuery type: motif_query\nIntent: Negative/unresolved examples that should not be hallucinated into fixes.\nMotif: unlinked_feedback_needs_evidence\nTraining usage: negative_or_unresolved\nGraph gold label: needs_more_evidence\nRepo: talent-x-app/talent-x\nThread: talent-x-app/talent-x#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: talent-x-app/talent-x\nThread: talent-x-app/talent-x#7\nGraph gold label: needs_more_evidence\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: talent-x-app/talent-x#7\nRepo: talent-x-app/talent-x\nIssue/PR number: 7\nGraph consistency label: needs_more_evidence\nNodes: 24\nEdges: 50\nNode types: {'pr_file': 15, 'link_quality': 3, 'thread': 1, 'repo': 1, 'comment': 1, 'comment_chain': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge t"}, "properties": {"scanner": "foundry_dataset", "category": "practices", "severity": "medium", "confidence": 0.7, "cwe": "", "owasp": ""}}, {"id": "foundry_blueprint_gap", "name": "Foundry mined blueprint gap alignment: talent-x-app/talent-x", "shortDescription": {"text": "Foundry mined blueprint gap alignment: talent-x-app/talent-x"}, "fullDescription": {"text": "Graph query export: Human feedback aligned with blueprint or architecture gaps\nQuery id: blueprint_gap_alignment\nQuery type: motif_query\nIntent: Curriculum-gap examples connecting issue threads to helicopter-view gaps.\nMotif: blueprint_gap_alignment\nTraining usage: curriculum_gap\nGraph gold label: weak_supervision_needs_review\nRepo: talent-x-app/talent-x\nThread: talent-x-app/talent-x#6\nEvidence:\nGraph motif: Human feedback aligns with blueprint or architecture gaps\nMotif id: blueprint_gap_alignment\nPolarity: mixed\nTraining usage: curriculum_gap\nSeverity: medium\nRepo: talent-x-app/talent-x\nThread: talent-x-app/talent-x#6\nGraph gold label: weak_supervision_needs_review\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: talent-x-app/talent-x#6\nRepo: talent-x-app/talent-x\nIssue/PR number: 6\nGraph consistency label: weak_supervision_needs_review\nNodes: 32\nEdges: 59\nNode types: {'pr_file': 15, 'commit': 5, 'link_quality': 4, 'thread': 1, 'repo': 1, 'comment': 1, 'comment_chain'"}, "properties": {"scanner": "foundry_dataset", "category": "tech_debt", "severity": "medium", "confidence": 0.7, "cwe": "", "owasp": ""}}, {"id": "foundry_assumption_check", "name": "Foundry mined assumption checks: talent-x-app/talent-x", "shortDescription": {"text": "Foundry mined assumption checks: talent-x-app/talent-x"}, "fullDescription": {"text": "Comment chain pattern product: assumption_checks\nRepo: talent-x-app/talent-x\nThread: talent-x-app/talent-x#9\nOutcome: claimed_resolved_unverified\nThread label: thread_has_human_issue_and_fix_context\nSource graph label: source_backed_multi_signal_graph\nReasons: source_graph_has_real_artifacts, source_graph_has_verification_artifacts, repo_has_isolated_helicopter_views, link_quality_weak_supervision, high_risk_human_feedback_label\nChain evidence:\nIssue/PR evidence chain: talent-x-app/talent-x#9\nRepo: talent-x-app/talent-x\nThread label: thread_has_human_issue_and_fix_context\nOutcome: claimed_resolved_unverified\nComment count: 1\nLinked commit count: 2\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 13\nLabels: {'security_auth_secret': 1}\nPolarities: {'bad': 1}\nChanged file labels: {'api_or_backend': 10, 'test_or_ci': 3}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-73942f43ee5710f3\",\n    \"kind\": \"pull_request_body\",\n    \"label\": \"security_auth_secret\",\n    \"polarity\""}, "properties": {"scanner": "foundry_dataset", "category": "practices", "severity": "medium", "confidence": 0.62, "cwe": "", "owasp": ""}}, {"id": "foundry_test_ci_gap", "name": "Foundry mined test ci gap after feedback: talent-x-app/talent-x", "shortDescription": {"text": "Foundry mined test ci gap after feedback: talent-x-app/talent-x"}, "fullDescription": {"text": "Graph query export: Feedback exposes missing tests or CI\nQuery id: test_ci_gap_after_feedback\nQuery type: motif_query\nIntent: Hard negatives for feedback/fix chains without adequate guardrails.\nMotif: test_ci_gap_after_feedback\nTraining usage: hard_negative\nGraph gold label: supported_by_verification_signal\nRepo: talent-x-app/talent-x\nThread: talent-x-app/talent-x#4\nEvidence:\nGraph motif: Feedback or fix context exposes missing test/CI guardrails\nMotif id: test_ci_gap_after_feedback\nPolarity: bad\nTraining usage: hard_negative\nSeverity: high\nRepo: talent-x-app/talent-x\nThread: talent-x-app/talent-x#4\nGraph gold label: supported_by_verification_signal\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: talent-x-app/talent-x#4\nRepo: talent-x-app/talent-x\nIssue/PR number: 4\nGraph consistency label: supported_by_verification_signal\nNodes: 70\nEdges: 97\nNode types: {'pr_file': 53, 'commit': 5, 'link_quality': 4, 'thread': 1, 'repo': 1, 'comment': 1, 'comment_chain': 1, 'issue_cha"}, "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: talent-x-app/talent-x", "shortDescription": {"text": "Foundry mined schema ui api mismatch: talent-x-app/talent-x"}, "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: talent-x-app/talent-x\nThread: talent-x-app/talent-x#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: talent-x-app/talent-x\nThread: talent-x-app/talent-x#6\nGraph gold label: weak_supervision_needs_review\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: talent-x-app/talent-x#6\nRepo: talent-x-app/talent-x\nIssue/PR number: 6\nGraph consistency label: weak_supervision_needs_review\nNodes: 32\nEdges: 59\nNode types: {'pr_file': 15, 'commit': 5, 'link_quality': 4, 'thread': 1, 'repo': 1, 'comment': 1, 'comment_chain': 1, 'issue_chain': 1, 'fix_outcome': 1, 'alignment': "}, "properties": {"scanner": "foundry_dataset", "category": "quality", "severity": "high", "confidence": 0.76, "cwe": "", "owasp": ""}}, {"id": "foundry_docs_only_fix", "name": "Foundry mined docs only runtime fix: talent-x-app/talent-x", "shortDescription": {"text": "Foundry mined docs only runtime fix: talent-x-app/talent-x"}, "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: talent-x-app/talent-x\nThread: talent-x-app/talent-x#11\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: talent-x-app/talent-x\nThread: talent-x-app/talent-x#11\nGraph gold label: supported_by_verification_signal\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: talent-x-app/talent-x#11\nRepo: talent-x-app/talent-x\nIssue/PR number: 11\nGraph consistency label: supported_by_verification_signal\nNodes: 19\nEdges: 26\nNode types: {'commit': 5, 'link_quality': 4, 'pr_file': 2, 'thread': 1, 'repo': 1, 'comment': 1, 'comment_chain"}, "properties": {"scanner": "foundry_dataset", "category": "practices", "severity": "high", "confidence": 0.8, "cwe": "", "owasp": ""}}, {"id": "foundry_bad_chain", "name": "Foundry mined bad chains: talent-x-app/talent-x", "shortDescription": {"text": "Foundry mined bad chains: talent-x-app/talent-x"}, "fullDescription": {"text": "Comment chain pattern product: bad_chains\nRepo: talent-x-app/talent-x\nThread: talent-x-app/talent-x#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: talent-x-app/talent-x#3\nRepo: talent-x-app/talent-x\nThread label: thread_has_human_issue_and_fix_context\nOutcome: claimed_resolved_unverified\nComment count: 1\nLinked commit count: 4\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 3\nLabels: {'mock_placeholder': 1}\nPolarities: {'bad': 1}\nChanged file labels: {'schema_or_data': 3}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-72a857896c570793\",\n    \"kind\": \"pull_request_body\",\n    \"label\": \"mock_placeholder\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://githu"}, "properties": {"scanner": "foundry_dataset", "category": "practices", "severity": "high", "confidence": 0.84, "cwe": "", "owasp": ""}}, {"id": "foundry_fake_real_gap", "name": "Foundry mined mock as real or placeholder: talent-x-app/talent-x", "shortDescription": {"text": "Foundry mined mock as real or placeholder: talent-x-app/talent-x"}, "fullDescription": {"text": "Graph query export: Mock, sample, placeholder, or self-attested behavior treated as real\nQuery id: mock_as_real_or_placeholder\nQuery type: motif_query\nIntent: Hard negatives for fake completeness and missing real data paths.\nMotif: mock_as_real_or_placeholder\nTraining usage: hard_negative\nGraph gold label: weak_supervision_needs_review\nRepo: talent-x-app/talent-x\nThread: talent-x-app/talent-x#3\nEvidence:\nGraph motif: Mock, sample, placeholder, or self-attested behavior treated as real\nMotif id: mock_as_real_or_placeholder\nPolarity: bad\nTraining usage: hard_negative\nSeverity: critical\nRepo: talent-x-app/talent-x\nThread: talent-x-app/talent-x#3\nGraph gold label: weak_supervision_needs_review\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: talent-x-app/talent-x#3\nRepo: talent-x-app/talent-x\nIssue/PR number: 3\nGraph consistency label: weak_supervision_needs_review\nNodes: 16\nEdges: 24\nNode types: {'commit': 4, 'pr_file': 3, 'link_quality': 3, 'thread': 1, 'repo': 1, 'commen"}, "properties": {"scanner": "foundry_dataset", "category": "practices", "severity": "critical", "confidence": 0.82, "cwe": "", "owasp": ""}}, {"id": "scanner-145ac604a27d1058", "name": "Stray `console.log` in TS/JS \u2014 apps/api/prisma/seed.ts:160", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 apps/api/prisma/seed.ts:160"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-2529fade669de7d7", "name": "Stray `console.log` in TS/JS \u2014 apps/api/perf/load-test.ts:163", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 apps/api/perf/load-test.ts:163"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-e00a01b079d1f747", "name": "Stray `console.log` in TS/JS \u2014 apps/api/perf/slo-check.ts:94", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 apps/api/perf/slo-check.ts:94"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-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-8e1a130379ced44c", "name": "Possible secret in apps/api/test/auth-rgpd.int-spec.ts", "shortDescription": {"text": "Possible secret in apps/api/test/auth-rgpd.int-spec.ts"}, "fullDescription": {"text": "Detected pattern matching password_literal. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-862a57976f25e6c2", "name": "Possible secret in apps/api/test/critical-paths.int-spec.ts", "shortDescription": {"text": "Possible secret in apps/api/test/critical-paths.int-spec.ts"}, "fullDescription": {"text": "Detected pattern matching password_literal. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-3732066af3d13d33", "name": "Possible secret in apps/api/test/app.e2e-spec.ts", "shortDescription": {"text": "Possible secret in apps/api/test/app.e2e-spec.ts"}, "fullDescription": {"text": "Detected pattern matching password_literal. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-fd68259301a6d836", "name": "Possible secret in apps/api/test/session-brief.int-spec.ts", "shortDescription": {"text": "Possible secret in apps/api/test/session-brief.int-spec.ts"}, "fullDescription": {"text": "Detected pattern matching password_literal. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-da8667f046a10ca5", "name": "Possible secret in apps/api/src/config/env.validation.spec.ts", "shortDescription": {"text": "Possible secret in apps/api/src/config/env.validation.spec.ts"}, "fullDescription": {"text": "Detected pattern matching private_key. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-95611a698817b293", "name": "Insecure pattern 'private_key_in_repo' in apps/api/src/config/env.validation.spec.ts:100", "shortDescription": {"text": "Insecure pattern 'private_key_in_repo' in apps/api/src/config/env.validation.spec.ts:100"}, "fullDescription": {"text": "Found a known-risky pattern (private_key_in_repo). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-9416bdd2e2121d17", "name": "Possible secret in apps/api/src/auth/auth.service.spec.ts", "shortDescription": {"text": "Possible secret in apps/api/src/auth/auth.service.spec.ts"}, "fullDescription": {"text": "Detected pattern matching password_literal. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-ac18f313bda432bf", "name": "Possible secret in apps/api/src/auth/auth.controller.spec.ts", "shortDescription": {"text": "Possible secret in apps/api/src/auth/auth.controller.spec.ts"}, "fullDescription": {"text": "Detected pattern matching password_literal. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-a824f9d6c9e54d66", "name": "Possible secret in apps/api/src/common/logging/json-logger.spec.ts", "shortDescription": {"text": "Possible secret in apps/api/src/common/logging/json-logger.spec.ts"}, "fullDescription": {"text": "Detected pattern matching password_literal. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-28e29d4ea2dfb9c7", "name": "Possible secret in apps/api/src/jobs/push/push-config.spec.ts", "shortDescription": {"text": "Possible secret in apps/api/src/jobs/push/push-config.spec.ts"}, "fullDescription": {"text": "Detected pattern matching private_key. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-d49259c9ee1bc7b6", "name": "Insecure pattern 'private_key_in_repo' in apps/api/src/jobs/push/push-config.spec.ts:7", "shortDescription": {"text": "Insecure pattern 'private_key_in_repo' in apps/api/src/jobs/push/push-config.spec.ts:7"}, "fullDescription": {"text": "Found a known-risky pattern (private_key_in_repo). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-4343c7fcb48cfb83", "name": "Possible secret in scripts/seed-brief-demo.mjs", "shortDescription": {"text": "Possible secret in scripts/seed-brief-demo.mjs"}, "fullDescription": {"text": "Detected pattern matching password_literal. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-e91b5f6977dca388", "name": "Insecure pattern 'direct_innerhtml_assignment' in design/kitchen-sink.html:219", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in design/kitchen-sink.html:219"}, "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-27924aa79fa4a517", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/checkout@v4 can move without a code change in this repo. Pin third-party actions to a reviewed 40-character commit SHA."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "low", "confidence": 1.0}}, {"id": "scanner-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-6ce43da41da3798b", "name": "Very large file: apps/api/test/critical-paths.int-spec.ts (1227 lines)", "shortDescription": {"text": "Very large file: apps/api/test/critical-paths.int-spec.ts (1227 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-340daa03f8408829", "name": "Very large file: apps/mobile/src/coach/session-builder-ui.tsx (1379 lines)", "shortDescription": {"text": "Very large file: apps/mobile/src/coach/session-builder-ui.tsx (1379 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-3140ba83e394418c", "name": "Very large file: design/_ds_bundle.js (3458 lines)", "shortDescription": {"text": "Very large file: design/_ds_bundle.js (3458 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-9f6eaab274ecf23c", "name": "Very large file: packages/api-client/src/generated/talent-x.ts (5198 lines)", "shortDescription": {"text": "Very large file: packages/api-client/src/generated/talent-x.ts (5198 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-ea3b5e389d8c9c0f", "name": "Low test-to-source ratio", "shortDescription": {"text": "Low test-to-source ratio"}, "fullDescription": {"text": "94 tests / 581 src (ratio 0.16)."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-141b30a41e03817b", "name": "No license file detected", "shortDescription": {"text": "No license file detected"}, "fullDescription": {"text": "No LICENSE/COPYING/NOTICE file was found. Generated repositories often omit licensing, which blocks reuse and automated intake."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-b06b8d86f24c77f9", "name": "Node manifest has dependencies but no lockfile: apps/api/package.json", "shortDescription": {"text": "Node manifest has dependencies but no lockfile: apps/api/package.json"}, "fullDescription": {"text": "`package.json` declares dependencies, but no same-directory npm/pnpm/yarn/bun lockfile was found. Generated projects without lockfiles are less reproducible and harder to secure-scan precisely."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-d0c2205560692580", "name": "Node manifest has dependencies but no lockfile: apps/mobile/package.json", "shortDescription": {"text": "Node manifest has dependencies but no lockfile: apps/mobile/package.json"}, "fullDescription": {"text": "`package.json` declares dependencies, but no same-directory npm/pnpm/yarn/bun lockfile was found. Generated projects without lockfiles are less reproducible and harder to secure-scan precisely."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-892d4f964c9036e2", "name": "Node manifest has dependencies but no lockfile: packages/api-client/package.json", "shortDescription": {"text": "Node manifest has dependencies but no lockfile: packages/api-client/package.json"}, "fullDescription": {"text": "`package.json` declares dependencies, but no same-directory npm/pnpm/yarn/bun lockfile was found. Generated projects without lockfiles are less reproducible and harder to secure-scan precisely."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-bcfee846e2ec548b", "name": "Node manifest has dependencies but no lockfile: packages/design-tokens/package.json", "shortDescription": {"text": "Node manifest has dependencies but no lockfile: packages/design-tokens/package.json"}, "fullDescription": {"text": "`package.json` declares dependencies, but no same-directory npm/pnpm/yarn/bun lockfile was found. Generated projects without lockfiles are less reproducible and harder to secure-scan precisely."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-3ab5d313dda8e5f9", "name": "Debug logging residue appears in source files", "shortDescription": {"text": "Debug logging residue appears in source files"}, "fullDescription": {"text": "Found 28 console/debugger/print-style debug statements in non-test source. This is a common fast-generation residue before production cleanup."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-72b2a6250083a784", "name": "Placeholder or mock-heavy implementation detected", "shortDescription": {"text": "Placeholder or mock-heavy implementation detected"}, "fullDescription": {"text": "Found 147 placeholder/mock markers across 29 source files. This often means the repo looks complete while core flows still use generated scaffolding or fake data."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-2d0c7b7ab8f8aacf", "name": "Critical user flow still appears backed by mock or placeholder data", "shortDescription": {"text": "Critical user flow still appears backed by mock or placeholder data"}, "fullDescription": {"text": "A payment/auth/admin/order/billing-style flow contains mock, fake, TODO, dummy, or placeholder markers in runtime source. In the Fable corpus this is a high-leverage completeness smell: the app can look finished while the money, identity, or tenant flow is still scaffolded."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-b9088664ace7f748", "name": "Composite production-readiness gap", "shortDescription": {"text": "Composite production-readiness gap"}, "fullDescription": {"text": "Multiple low-cost hardening controls are missing together: license, lockfile. Opus verification showed these co-occurring gaps are a better readiness signal than reading each flag in isolation."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-749d4bc1bd66df5f", "name": "Agent instructions exist but release-hardening basics are missing", "shortDescription": {"text": "Agent instructions exist but release-hardening basics are missing"}, "fullDescription": {"text": "AI-coder instruction files were found, but the repo is missing license, lockfile. Treat this as a contract gap: the agent is guided, but the generated output is not yet guarded by the controls that make it repeatable."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-ea8f3013f588db25", "name": "Shallow git history limits provenance confidence", "shortDescription": {"text": "Shallow git history limits provenance confidence"}, "fullDescription": {"text": "The repository is a shallow clone. Origin/evolution analysis cannot distinguish fresh generation, imported legacy code, or long-lived human code with high confidence."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-8424db9c75e04ba4", "name": "Very short observed git history", "shortDescription": {"text": "Very short observed git history"}, "fullDescription": {"text": "The repo has multiple source files but two or fewer visible commits. This is not a failure by itself, but it lowers confidence in evolution-based diagnosis."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-3955bf012deac307", "name": "Commented-code block (5 lines) in apps/api/test/critical-paths.int-spec.ts:1124", "shortDescription": {"text": "Commented-code block (5 lines) in apps/api/test/critical-paths.int-spec.ts:1124"}, "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-ad7d8be32b35ce74", "name": "`fetch()` without try/.catch or AbortSignal \u2014 apps/api/perf/slo-check.ts:78", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/api/perf/slo-check.ts:78"}, "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-581214cc885e3c4a", "name": "Commented-code block (5 lines) in apps/api/src/main.ts:21", "shortDescription": {"text": "Commented-code block (5 lines) in apps/api/src/main.ts:21"}, "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-475b9e1f87f90b59", "name": "Commented-code block (6 lines) in apps/api/src/auth/auth.module.ts:19", "shortDescription": {"text": "Commented-code block (6 lines) in apps/api/src/auth/auth.module.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-26df2c947be5a16d", "name": "`fetch()` without try/.catch or AbortSignal \u2014 apps/api/src/jobs/mail/email-provider.factory.ts:31", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/api/src/jobs/mail/email-provider.factory.ts:31"}, "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-5f05480e4a38d94e", "name": "`fetch()` without try/.catch or AbortSignal \u2014 apps/api/src/jobs/push/push-provider.factory.ts:47", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/api/src/jobs/push/push-provider.factory.ts:47"}, "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-f2a21a12d447f321", "name": "Commented-code block (5 lines) in apps/mobile/metro.config.js:1", "shortDescription": {"text": "Commented-code block (5 lines) in apps/mobile/metro.config.js:1"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-c6e0efda885bd3f3", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/seed-brief-demo.mjs:13", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/seed-brief-demo.mjs:13"}, "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-737f517e738cfb63", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/api-client/src/mutator/custom-fetch.ts:61", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/api-client/src/mutator/custom-fetch.ts:61"}, "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-5fa5af25316da646", "name": "16 env vars used in code but missing from .env.example", "shortDescription": {"text": "16 env vars used in code but missing from .env.example"}, "fullDescription": {"text": "Drift between code and config docs. The first few: `ACCESS_TOKEN_TTL_SECONDS`, `CAPTURE_DIR`, `CI`, `CORS_ORIGINS`, `E2E_API_URL`, `E2E_BASE_URL`, `E2E_TEST_PASSWORD`, `JWT_ADDITIONAL_PUBLIC_KEYS` + 8 more. Add them (with a placeholder/comment) to .env.example so onboarding doesn't break."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-a8b657222dd85be2", "name": "Unused endpoint: GET /users/me", "shortDescription": {"text": "Unused endpoint: GET /users/me"}, "fullDescription": {"text": "`apps/api/src/users/users.controller.ts` declares `GET /users/me` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-c3025bc63d970d29", "name": "Unused endpoint: PUT /users/me", "shortDescription": {"text": "Unused endpoint: PUT /users/me"}, "fullDescription": {"text": "`apps/api/src/users/users.controller.ts` declares `PUT /users/me` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-a69d2c55f1155d84", "name": "Unused endpoint: DELETE /users/me", "shortDescription": {"text": "Unused endpoint: DELETE /users/me"}, "fullDescription": {"text": "`apps/api/src/users/users.controller.ts` declares `DELETE /users/me` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-1c73043a10ed0ab8", "name": "Unused endpoint: POST /users/me/avatar", "shortDescription": {"text": "Unused endpoint: POST /users/me/avatar"}, "fullDescription": {"text": "`apps/api/src/users/users.controller.ts` declares `POST /users/me/avatar` 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-60bc5c330890659a", "name": "Unused endpoint: PUT /users/me/avatar", "shortDescription": {"text": "Unused endpoint: PUT /users/me/avatar"}, "fullDescription": {"text": "`apps/api/src/users/users.controller.ts` declares `PUT /users/me/avatar` 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-872cf607ca2e6d82", "name": "Unused endpoint: DELETE /users/me/avatar", "shortDescription": {"text": "Unused endpoint: DELETE /users/me/avatar"}, "fullDescription": {"text": "`apps/api/src/users/users.controller.ts` declares `DELETE /users/me/avatar` 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-93e95eec8f4f9491", "name": "Unused endpoint: GET /users/me/consents", "shortDescription": {"text": "Unused endpoint: GET /users/me/consents"}, "fullDescription": {"text": "`apps/api/src/users/users.controller.ts` declares `GET /users/me/consents` 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-d9c605f1576d03a2", "name": "Unused endpoint: PUT /users/me/consents", "shortDescription": {"text": "Unused endpoint: PUT /users/me/consents"}, "fullDescription": {"text": "`apps/api/src/users/users.controller.ts` declares `PUT /users/me/consents` 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-18f65cd223b20058", "name": "Unused endpoint: POST /users/me/export", "shortDescription": {"text": "Unused endpoint: POST /users/me/export"}, "fullDescription": {"text": "`apps/api/src/users/users.controller.ts` declares `POST /users/me/export` 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-46d6f38fbcb9f8cd", "name": "Unused endpoint: GET /users/me/export/:jobId", "shortDescription": {"text": "Unused endpoint: GET /users/me/export/:jobId"}, "fullDescription": {"text": "`apps/api/src/users/users.controller.ts` declares `GET /users/me/export/:jobId` 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-1b93f5ab485027b7", "name": "Unused endpoint: POST /notifications/read-all", "shortDescription": {"text": "Unused endpoint: POST /notifications/read-all"}, "fullDescription": {"text": "`apps/api/src/notifications/notifications.controller.ts` declares `POST /notifications/read-all` 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-c9f9ed11b9b118bc", "name": "Unused endpoint: POST /notifications/devices", "shortDescription": {"text": "Unused endpoint: POST /notifications/devices"}, "fullDescription": {"text": "`apps/api/src/notifications/notifications.controller.ts` declares `POST /notifications/devices` 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-3d66d296a919b1b8", "name": "Unused endpoint: DELETE /notifications/devices/:id", "shortDescription": {"text": "Unused endpoint: DELETE /notifications/devices/:id"}, "fullDescription": {"text": "`apps/api/src/notifications/notifications.controller.ts` declares `DELETE /notifications/devices/: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-999dff0ea581b4b8", "name": "Unused endpoint: GET /notifications/preferences", "shortDescription": {"text": "Unused endpoint: GET /notifications/preferences"}, "fullDescription": {"text": "`apps/api/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": "`apps/api/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-18ee05fea4e063ff", "name": "Unused endpoint: GET /competitions/:id", "shortDescription": {"text": "Unused endpoint: GET /competitions/:id"}, "fullDescription": {"text": "`apps/api/src/competitions/competitions.controller.ts` declares `GET /competitions/: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-16a96a4fa585e3fd", "name": "Unused endpoint: PUT /competitions/:id", "shortDescription": {"text": "Unused endpoint: PUT /competitions/:id"}, "fullDescription": {"text": "`apps/api/src/competitions/competitions.controller.ts` declares `PUT /competitions/: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-4cec06c346028fc5", "name": "Unused endpoint: DELETE /competitions/:id", "shortDescription": {"text": "Unused endpoint: DELETE /competitions/:id"}, "fullDescription": {"text": "`apps/api/src/competitions/competitions.controller.ts` declares `DELETE /competitions/: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-702c97a030887845", "name": "Unused endpoint: POST /competitions/:id/entries", "shortDescription": {"text": "Unused endpoint: POST /competitions/:id/entries"}, "fullDescription": {"text": "`apps/api/src/competitions/competitions.controller.ts` declares `POST /competitions/:id/entries` 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-d1246628e3e8ab95", "name": "Unused endpoint: GET /competitions/:id/entries", "shortDescription": {"text": "Unused endpoint: GET /competitions/:id/entries"}, "fullDescription": {"text": "`apps/api/src/competitions/competitions.controller.ts` declares `GET /competitions/:id/entries` 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-eef68e0e4a9d686e", "name": "Unused endpoint: DELETE /competitions/:id/entries/:entryId", "shortDescription": {"text": "Unused endpoint: DELETE /competitions/:id/entries/:entryId"}, "fullDescription": {"text": "`apps/api/src/competitions/competitions.controller.ts` declares `DELETE /competitions/:id/entries/:entryId` 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-8292c0931391749a", "name": "Unused endpoint: POST /auth/register", "shortDescription": {"text": "Unused endpoint: POST /auth/register"}, "fullDescription": {"text": "`apps/api/src/auth/auth.controller.ts` declares `POST /auth/register` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-8fdbacfe9430a6ed", "name": "Unused endpoint: POST /auth/login", "shortDescription": {"text": "Unused endpoint: POST /auth/login"}, "fullDescription": {"text": "`apps/api/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}}, {"id": "scanner-b36892106ecdc9aa", "name": "Unused endpoint: POST /auth/refresh", "shortDescription": {"text": "Unused endpoint: POST /auth/refresh"}, "fullDescription": {"text": "`apps/api/src/auth/auth.controller.ts` declares `POST /auth/refresh` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-c059f57186114027", "name": "Unused endpoint: POST /auth/logout", "shortDescription": {"text": "Unused endpoint: POST /auth/logout"}, "fullDescription": {"text": "`apps/api/src/auth/auth.controller.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-7472fafa02ed7ad5", "name": "Unused endpoint: POST /auth/logout-all", "shortDescription": {"text": "Unused endpoint: POST /auth/logout-all"}, "fullDescription": {"text": "`apps/api/src/auth/auth.controller.ts` declares `POST /auth/logout-all` 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-e2fe5b92648ca462", "name": "Unused endpoint: POST /auth/forgot-password", "shortDescription": {"text": "Unused endpoint: POST /auth/forgot-password"}, "fullDescription": {"text": "`apps/api/src/auth/auth.controller.ts` declares `POST /auth/forgot-password` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-deb8df763a50c73a", "name": "Unused endpoint: POST /auth/reset-password", "shortDescription": {"text": "Unused endpoint: POST /auth/reset-password"}, "fullDescription": {"text": "`apps/api/src/auth/auth.controller.ts` declares `POST /auth/reset-password` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-59cb6e2c914d4369", "name": "Unused endpoint: POST /auth/2fa/enable", "shortDescription": {"text": "Unused endpoint: POST /auth/2fa/enable"}, "fullDescription": {"text": "`apps/api/src/auth/auth.controller.ts` declares `POST /auth/2fa/enable` 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-c1623a898f6e649f", "name": "Unused endpoint: POST /auth/2fa/verify", "shortDescription": {"text": "Unused endpoint: POST /auth/2fa/verify"}, "fullDescription": {"text": "`apps/api/src/auth/auth.controller.ts` declares `POST /auth/2fa/verify` 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-59fc96a44decafe2", "name": "Unused endpoint: POST /groups/join", "shortDescription": {"text": "Unused endpoint: POST /groups/join"}, "fullDescription": {"text": "`apps/api/src/groups/groups.controller.ts` declares `POST /groups/join` 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-1393f1ba9264c119", "name": "Unused endpoint: GET /groups/mine", "shortDescription": {"text": "Unused endpoint: GET /groups/mine"}, "fullDescription": {"text": "`apps/api/src/groups/groups.controller.ts` declares `GET /groups/mine` 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-40c6b3f0de47c35f", "name": "Unused endpoint: GET /groups/:id/teammates", "shortDescription": {"text": "Unused endpoint: GET /groups/:id/teammates"}, "fullDescription": {"text": "`apps/api/src/groups/groups.controller.ts` declares `GET /groups/:id/teammates` 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-86f4ce9131125e3a", "name": "Unused endpoint: GET /groups/:id", "shortDescription": {"text": "Unused endpoint: GET /groups/:id"}, "fullDescription": {"text": "`apps/api/src/groups/groups.controller.ts` declares `GET /groups/: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-087cb9538004e96d", "name": "Unused endpoint: PUT /groups/:id", "shortDescription": {"text": "Unused endpoint: PUT /groups/:id"}, "fullDescription": {"text": "`apps/api/src/groups/groups.controller.ts` declares `PUT /groups/: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-3d1feb620ea32b3f", "name": "Unused endpoint: DELETE /groups/:id", "shortDescription": {"text": "Unused endpoint: DELETE /groups/:id"}, "fullDescription": {"text": "`apps/api/src/groups/groups.controller.ts` declares `DELETE /groups/: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-ee099723ea2e2753", "name": "Unused endpoint: GET /groups/:id/members", "shortDescription": {"text": "Unused endpoint: GET /groups/:id/members"}, "fullDescription": {"text": "`apps/api/src/groups/groups.controller.ts` declares `GET /groups/:id/members` 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-ef9bcace2186cc90", "name": "Unused endpoint: DELETE /groups/:id/members/:athleteId", "shortDescription": {"text": "Unused endpoint: DELETE /groups/:id/members/:athleteId"}, "fullDescription": {"text": "`apps/api/src/groups/groups.controller.ts` declares `DELETE /groups/:id/members/:athleteId` 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-b45aa8d04cafd374", "name": "Unused endpoint: POST /groups/:id/invite-code", "shortDescription": {"text": "Unused endpoint: POST /groups/:id/invite-code"}, "fullDescription": {"text": "`apps/api/src/groups/groups.controller.ts` declares `POST /groups/:id/invite-code` 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-6aa2817af2a92a37", "name": "Unused endpoint: POST /groups/:id/leave", "shortDescription": {"text": "Unused endpoint: POST /groups/:id/leave"}, "fullDescription": {"text": "`apps/api/src/groups/groups.controller.ts` declares `POST /groups/:id/leave` 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-705591b11ba78b85", "name": "Unused endpoint: GET /sessions/:id", "shortDescription": {"text": "Unused endpoint: GET /sessions/:id"}, "fullDescription": {"text": "`apps/api/src/sessions/sessions.controller.ts` declares `GET /sessions/: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-37399d829f3ec7bf", "name": "Unused endpoint: PUT /sessions/:id", "shortDescription": {"text": "Unused endpoint: PUT /sessions/:id"}, "fullDescription": {"text": "`apps/api/src/sessions/sessions.controller.ts` declares `PUT /sessions/: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-da3556d0f0fab24f", "name": "Unused endpoint: DELETE /sessions/:id", "shortDescription": {"text": "Unused endpoint: DELETE /sessions/:id"}, "fullDescription": {"text": "`apps/api/src/sessions/sessions.controller.ts` declares `DELETE /sessions/: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-efa408115950c9cc", "name": "Unused endpoint: POST /sessions/:id/duplicate", "shortDescription": {"text": "Unused endpoint: POST /sessions/:id/duplicate"}, "fullDescription": {"text": "`apps/api/src/sessions/sessions.controller.ts` declares `POST /sessions/:id/duplicate` 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-b0b9f9a0f1486883", "name": "Unused endpoint: POST /sessions/:id/archive", "shortDescription": {"text": "Unused endpoint: POST /sessions/:id/archive"}, "fullDescription": {"text": "`apps/api/src/sessions/sessions.controller.ts` declares `POST /sessions/:id/archive` 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-598c5e41cc08eab1", "name": "Unused endpoint: POST /sessions/:id/assign", "shortDescription": {"text": "Unused endpoint: POST /sessions/:id/assign"}, "fullDescription": {"text": "`apps/api/src/sessions/sessions.controller.ts` declares `POST /sessions/:id/assign` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-8550c8a4e100a20d", "name": "Unused endpoint: DELETE /sessions/:id/assign/groups/:groupId", "shortDescription": {"text": "Unused endpoint: DELETE /sessions/:id/assign/groups/:groupId"}, "fullDescription": {"text": "`apps/api/src/sessions/sessions.controller.ts` declares `DELETE /sessions/:id/assign/groups/:groupId` 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-9107c3e5858e22b6", "name": "Unused endpoint: GET /athletes/me/progress", "shortDescription": {"text": "Unused endpoint: GET /athletes/me/progress"}, "fullDescription": {"text": "`apps/api/src/progress/progress.controller.ts` declares `GET /athletes/me/progress` 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-6880be818e8ec2a6", "name": "Unused endpoint: GET /athletes/me/records", "shortDescription": {"text": "Unused endpoint: GET /athletes/me/records"}, "fullDescription": {"text": "`apps/api/src/progress/progress.controller.ts` declares `GET /athletes/me/records` 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-2d58eb2328cbc72a", "name": "Unused endpoint: POST /athletes/me/records", "shortDescription": {"text": "Unused endpoint: POST /athletes/me/records"}, "fullDescription": {"text": "`apps/api/src/progress/progress.controller.ts` declares `POST /athletes/me/records` 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/20782"}, "properties": {"repository": "talent-x-app/talent-x", "repoUrl": "https://github.com/talent-x-app/talent-x", "branch": "main"}, "results": [{"ruleId": "foundry_unresolved_feedback", "level": "warning", "message": {"text": "Foundry mined unresolved feedback: talent-x-app/talent-x"}, "properties": {"repobilityId": 430216, "scanner": "foundry_dataset", "fingerprint": "2ec500d2bbc98234119d4eb8c1d332632a626b466f63b19f2861dfea0ced1f2a", "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": 3, "api_or_backend": 12, "human_feedback_general": 1, "unlinked_human_feedback": 1, "thread_needs_classification": 2, "issue_or_pull_request_thread": 1, "ambiguous_needs_more_evidence": 3}, "source": "graph_query_export", "motif_id": "unlinked_feedback_needs_evidence", "outcomes": {"ambiguous_needs_more_evidence": 6}, "polarity": "bad", "query_id": "unresolved_feedback", "severity": "medium", "ci_labels": {}, "synthetic": false, "edge_count": 50, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 1, "thread_has_comment": 1, "thread_touches_file": 15, "chain_has_link_quality": 3, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "issue_chain_touches_file": 12, "thread_has_comment_chain": 1, "comment_chain_touches_file": 12, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 1}, "node_count": 24, "node_types": {"repo": 1, "thread": 1, "comment": 1, "pr_file": 15, "fix_outcome": 1, "issue_chain": 1, "link_quality": 3, "comment_chain": 1}, "query_type": "motif_query", "thread_key": "talent-x-app/talent-x#7", "issue_number": "7", "quality_tiers": {"unresolved": 3}, "repo_full_name": "talent-x-app/talent-x", "training_usage": "negative_or_unresolved", "source_motif_id": "graph-pattern-motif-thread-ef5f8fe96e2cb0d5", "graph_gold_label": "needs_more_evidence", "changed_file_labels": {"test_or_ci": 12, "api_or_backend": 48}}, "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: talent-x-app/talent-x\nThread: talent-x-app/talent-x#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: talent-x-app/talent-x\nThread: talent-x-app/talent-x#7\nGraph gold label: needs_more_evidence\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: talent-x-app/talent-x#7\nRepo: talent-x-app/talent-x\nIssue/PR number: 7\nGraph consistency label: needs_more_evidence\nNodes: 24\nEdges: 50\nNode types: {'pr_file': 15, 'link_quality': 3, 'thread': 1, 'repo': 1, 'comment': 1, 'comment_chain': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'thread_touches_file': 15, 'comment_chain_touches_file': 12, 'issue_chain_touches_file': 12, 'chain_has_link_quality': 3, 'repo_has_thread': 1, 'thread_has_comment': 1, 'thread_has_comment_chain': 1, 'comment_has_chain': 1, 'thread_has_issue_chain': 1, 'issue_chain_has_comment_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'api_or_backend': 12, 'test_or_ci': 3, 'ambiguous_needs_more_evidence': 3, 'thread_needs_classification': 2, 'issue_or_pull_request_thread': 1, 'human_feedback_general': 1, 'unlinked_human_feedback': 1}\nOutcomes: {'ambiguous_needs_more_evidence': 6}\nQuality tiers: {'unresolved': 3}\nCI labels: {}\nCurriculum targets:\n- Teach models to preserve unresolved human feedback instead of hallucinating fixes.\n- Build issue-to-regression examples where no accepted fix exists yet.\nAssumption checks:\n- Can a commit be linked by issue number, SHA, changed path, or time window?\n- If no link exists, is this explicitly labelled unresolved?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/talent-x-app/talent-x", "source_id": "graph-query-motif_query-6dc0b0bcf57d856d", "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": "talent-x-app/talent-x", "source_dataset": "graph_queries/unresolved_feedback", "training_usage": "negative_or_unresolved"}}}, {"ruleId": "foundry_blueprint_gap", "level": "warning", "message": {"text": "Foundry mined blueprint gap alignment: talent-x-app/talent-x"}, "properties": {"repobilityId": 404270, "scanner": "foundry_dataset", "fingerprint": "85279023533185eaef3870909aed0fb9dbf429c9b27df52c8b7ff3231a76c6b5", "category": "tech_debt", "severity": "medium", "confidence": 0.7, "triageState": "open", "verdict": "needs_review", "isResolved": false, "reason": "Imported from mined Foundry/Fable5 evidence with real GitHub/source provenance. Review source_id before acting.", "evidence": {"meta": {"kind": "graph_query_record", "title": "Human feedback aligned with blueprint or architecture gaps", "intent": "Curriculum-gap examples connecting issue threads to helicopter-view gaps.", "labels": {"test_or_ci": 3, "api_or_backend": 12, "verification_or_tests": 5, "data_schema_persistence": 1, "mostly follows blueprint": 1, "issue_or_pull_request_thread": 1, "ambiguous_needs_more_evidence": 3, "blueprint_human_gap_disagreement": 1, "comment_has_related_commit_context": 1, "thread_has_human_issue_and_fix_context": 2}, "source": "graph_query_export", "motif_id": "blueprint_gap_alignment", "outcomes": {"ambiguous_needs_more_evidence": 6}, "polarity": "mixed", "query_id": "blueprint_gap_alignment", "severity": "medium", "ci_labels": {}, "synthetic": false, "edge_count": 59, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 1, "thread_has_comment": 1, "thread_touches_file": 15, "alignment_uses_comment": 1, "alignment_uses_finding": 1, "chain_has_link_quality": 4, "comment_aligns_finding": 1, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "issue_chain_touches_file": 12, "thread_has_comment_chain": 1, "comment_chain_links_commit": 5, "comment_chain_touches_file": 12, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 1}, "node_count": 32, "node_types": {"repo": 1, "commit": 5, "thread": 1, "comment": 1, "pr_file": 15, "alignment": 1, "fix_outcome": 1, "issue_chain": 1, "link_quality": 4, "comment_chain": 1, "blueprint_finding": 1}, "query_type": "motif_query", "thread_key": "talent-x-app/talent-x#6", "issue_number": "6", "quality_tiers": {"assumption_check": 1, "weak_supervision": 3}, "repo_full_name": "talent-x-app/talent-x", "training_usage": "curriculum_gap", "source_motif_id": "graph-pattern-motif-thread-a38d222474876260", "graph_gold_label": "weak_supervision_needs_review", "changed_file_labels": {"test_or_ci": 12, "api_or_backend": 48}}, "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: talent-x-app/talent-x\nThread: talent-x-app/talent-x#6\nEvidence:\nGraph motif: Human feedback aligns with blueprint or architecture gaps\nMotif id: blueprint_gap_alignment\nPolarity: mixed\nTraining usage: curriculum_gap\nSeverity: medium\nRepo: talent-x-app/talent-x\nThread: talent-x-app/talent-x#6\nGraph gold label: weak_supervision_needs_review\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: talent-x-app/talent-x#6\nRepo: talent-x-app/talent-x\nIssue/PR number: 6\nGraph consistency label: weak_supervision_needs_review\nNodes: 32\nEdges: 59\nNode types: {'pr_file': 15, 'commit': 5, 'link_quality': 4, 'thread': 1, 'repo': 1, 'comment': 1, 'comment_chain': 1, 'issue_chain': 1, 'fix_outcome': 1, 'alignment': 1, 'blueprint_finding': 1}\nEdge types: {'thread_touches_file': 15, 'comment_chain_touches_file': 12, 'issue_chain_touches_file': 12, 'comment_chain_links_commit': 5, 'chain_has_link_quality': 4, 'repo_has_thread': 1, 'thread_has_comment': 1, 'thread_has_comment_chain': 1, 'comment_has_chain': 1, 'thread_has_issue_chain': 1, 'issue_chain_has_comment_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1, 'alignment_uses_comment': 1, 'alignment_uses_finding': 1, 'comment_aligns_finding': 1}\nLabels: {'api_or_backend': 12, 'verification_or_tests': 5, 'test_or_ci': 3, 'ambiguous_needs_more_evidence': 3, 'thread_has_human_issue_and_fix_context': 2, 'issue_or_pull_request_thread': 1, 'data_schema_persistence': 1, 'comment_has_related_commit_context': 1, 'blueprint_human_gap_disagreement': 1, 'mostly follows blueprint': 1}\nOutcomes: {'ambiguous_needs_more_evidence': 6}\nQuality tiers: {'weak_supervision': 3, 'assumption_check': 1}\nCI labels: {}\nCurriculum targets:\n- Use helicopter-view architecture/schema/design evidence beside issue threads.\n- Teach models to compare requested product class against implementation layers.\nAssumption checks:\n- Which blueprint layer is absent: frontend, API, data, auth, tests, or deployment?\n- Does human feedback confirm the same architectural gap?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/talent-x-app/talent-x", "source_id": "graph-query-motif_query-82c3eb2f2fdf4e83", "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": "talent-x-app/talent-x", "source_dataset": "graph_queries/blueprint_gap_alignment", "training_usage": "curriculum_gap"}}}, {"ruleId": "foundry_blueprint_gap", "level": "warning", "message": {"text": "Foundry mined blueprint gap alignment: talent-x-app/talent-x"}, "properties": {"repobilityId": 404269, "scanner": "foundry_dataset", "fingerprint": "871177a6a03f4e48cf744294ef0c1fc10abf592556b689e11ee092bdd810d11f", "category": "tech_debt", "severity": "medium", "confidence": 0.7, "triageState": "open", "verdict": "needs_review", "isResolved": false, "reason": "Imported from mined Foundry/Fable5 evidence with real GitHub/source provenance. Review source_id before acting.", "evidence": {"meta": {"kind": "graph_query_record", "title": "Human feedback aligned with blueprint or architecture gaps", "intent": "Curriculum-gap examples connecting issue threads to helicopter-view gaps.", "labels": {"bug_fix": 1, "test_or_ci": 4, "test_ci_gap": 1, "api_or_backend": 46, "schema_or_data": 2, "dependency_or_build": 1, "verification_or_tests": 4, "mostly follows blueprint": 1, "issue_or_pull_request_thread": 1, "blueprint_human_gap_disagreement": 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": {"claimed_resolved_with_verification_signal": 6}, "polarity": "mixed", "query_id": "blueprint_gap_alignment", "severity": "medium", "ci_labels": {}, "synthetic": false, "edge_count": 97, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 1, "thread_has_comment": 1, "thread_touches_file": 53, "alignment_uses_comment": 1, "alignment_uses_finding": 1, "chain_has_link_quality": 4, "comment_aligns_finding": 1, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "issue_chain_touches_file": 12, "thread_has_comment_chain": 1, "comment_chain_links_commit": 5, "comment_chain_touches_file": 12, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 1}, "node_count": 70, "node_types": {"repo": 1, "commit": 5, "thread": 1, "comment": 1, "pr_file": 53, "alignment": 1, "fix_outcome": 1, "issue_chain": 1, "link_quality": 4, "comment_chain": 1, "blueprint_finding": 1}, "query_type": "motif_query", "thread_key": "talent-x-app/talent-x#4", "issue_number": "4", "quality_tiers": {"assumption_check": 1, "weak_supervision": 3}, "repo_full_name": "talent-x-app/talent-x", "training_usage": "curriculum_gap", "source_motif_id": "graph-pattern-motif-thread-c27b8ada4aa99998", "graph_gold_label": "supported_by_verification_signal", "changed_file_labels": {"test_or_ci": 16, "api_or_backend": 184, "schema_or_data": 8, "dependency_or_build": 4}}, "text": "Graph query export: Human feedback aligned with blueprint or architecture gaps\nQuery id: blueprint_gap_alignment\nQuery type: motif_query\nIntent: Curriculum-gap examples connecting issue threads to helicopter-view gaps.\nMotif: blueprint_gap_alignment\nTraining usage: curriculum_gap\nGraph gold label: supported_by_verification_signal\nRepo: talent-x-app/talent-x\nThread: talent-x-app/talent-x#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: talent-x-app/talent-x\nThread: talent-x-app/talent-x#4\nGraph gold label: supported_by_verification_signal\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: talent-x-app/talent-x#4\nRepo: talent-x-app/talent-x\nIssue/PR number: 4\nGraph consistency label: supported_by_verification_signal\nNodes: 70\nEdges: 97\nNode types: {'pr_file': 53, 'commit': 5, 'link_quality': 4, 'thread': 1, 'repo': 1, 'comment': 1, 'comment_chain': 1, 'issue_chain': 1, 'fix_outcome': 1, 'alignment': 1, 'blueprint_finding': 1}\nEdge types: {'thread_touches_file': 53, 'comment_chain_touches_file': 12, 'issue_chain_touches_file': 12, 'comment_chain_links_commit': 5, 'chain_has_link_quality': 4, 'repo_has_thread': 1, 'thread_has_comment': 1, 'thread_has_comment_chain': 1, 'comment_has_chain': 1, 'thread_has_issue_chain': 1, 'issue_chain_has_comment_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1, 'alignment_uses_comment': 1, 'alignment_uses_finding': 1, 'comment_aligns_finding': 1}\nLabels: {'api_or_backend': 46, 'test_or_ci': 4, 'verification_or_tests': 4, 'claimed_resolved_with_verification_signal': 3, 'schema_or_data': 2, 'thread_has_human_issue_and_fix_context': 2, 'issue_or_pull_request_thread': 1, 'test_ci_gap': 1, 'dependency_or_build': 1, 'human_reported_issue_then_verified_fix_attempt': 1, 'bug_fix': 1, 'blueprint_human_gap_disagreement': 1, 'mostly follows blueprint': 1}\nOutcomes: {'claimed_resolved_with_verification_signal': 6}\nQuality tiers: {'weak_supervision': 3, 'assumption_check': 1}\nCI labels: {}\nCurriculum targets:\n- Use helicopter-view architecture/schema/design evidence beside issue threads.\n- Teach models to compare requested product class against implementation layers.\nAssumption checks:\n- Which blueprint layer is absent: frontend, API, data, auth, tests, or deployment?\n- Does human feedback confirm the same architectural gap?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/talent-x-app/talent-x", "source_id": "graph-query-motif_query-10c253d12ced5228", "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": "talent-x-app/talent-x", "source_dataset": "graph_queries/blueprint_gap_alignment", "training_usage": "curriculum_gap"}}}, {"ruleId": "foundry_blueprint_gap", "level": "warning", "message": {"text": "Foundry mined blueprint gap alignment: talent-x-app/talent-x"}, "properties": {"repobilityId": 404268, "scanner": "foundry_dataset", "fingerprint": "3417c305f2997b6e8799f90f6bc8723c323391d079e10c7b334934a0d786acfc", "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, "docs_or_claims": 2, "api_integration_gap": 1, "verification_or_tests": 4, "mostly follows blueprint": 1, "issue_or_pull_request_thread": 1, "blueprint_human_gap_disagreement": 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": {"claimed_resolved_with_verification_signal": 6}, "polarity": "mixed", "query_id": "blueprint_gap_alignment", "severity": "medium", "ci_labels": {}, "synthetic": false, "edge_count": 26, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 1, "thread_has_comment": 1, "thread_touches_file": 2, "alignment_uses_comment": 1, "alignment_uses_finding": 1, "chain_has_link_quality": 4, "comment_aligns_finding": 1, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "issue_chain_touches_file": 2, "thread_has_comment_chain": 1, "comment_chain_links_commit": 5, "comment_chain_touches_file": 2, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 1}, "node_count": 19, "node_types": {"repo": 1, "commit": 5, "thread": 1, "comment": 1, "pr_file": 2, "alignment": 1, "fix_outcome": 1, "issue_chain": 1, "link_quality": 4, "comment_chain": 1, "blueprint_finding": 1}, "query_type": "motif_query", "thread_key": "talent-x-app/talent-x#11", "issue_number": "11", "quality_tiers": {"assumption_check": 1, "weak_supervision": 3}, "repo_full_name": "talent-x-app/talent-x", "training_usage": "curriculum_gap", "source_motif_id": "graph-pattern-motif-thread-c2f2b3f47c24b91d", "graph_gold_label": "supported_by_verification_signal", "changed_file_labels": {"docs_or_claims": 8}}, "text": "Graph query export: Human feedback aligned with blueprint or architecture gaps\nQuery id: blueprint_gap_alignment\nQuery type: motif_query\nIntent: Curriculum-gap examples connecting issue threads to helicopter-view gaps.\nMotif: blueprint_gap_alignment\nTraining usage: curriculum_gap\nGraph gold label: supported_by_verification_signal\nRepo: talent-x-app/talent-x\nThread: talent-x-app/talent-x#11\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: talent-x-app/talent-x\nThread: talent-x-app/talent-x#11\nGraph gold label: supported_by_verification_signal\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: talent-x-app/talent-x#11\nRepo: talent-x-app/talent-x\nIssue/PR number: 11\nGraph consistency label: supported_by_verification_signal\nNodes: 19\nEdges: 26\nNode types: {'commit': 5, 'link_quality': 4, 'pr_file': 2, 'thread': 1, 'repo': 1, 'comment': 1, 'comment_chain': 1, 'issue_chain': 1, 'fix_outcome': 1, 'alignment': 1, 'blueprint_finding': 1}\nEdge types: {'comment_chain_links_commit': 5, 'chain_has_link_quality': 4, 'thread_touches_file': 2, 'comment_chain_touches_file': 2, 'issue_chain_touches_file': 2, 'repo_has_thread': 1, 'thread_has_comment': 1, 'thread_has_comment_chain': 1, 'comment_has_chain': 1, 'thread_has_issue_chain': 1, 'issue_chain_has_comment_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1, 'alignment_uses_comment': 1, 'alignment_uses_finding': 1, 'comment_aligns_finding': 1}\nLabels: {'verification_or_tests': 4, 'claimed_resolved_with_verification_signal': 3, 'docs_or_claims': 2, 'thread_has_human_issue_and_fix_context': 2, 'issue_or_pull_request_thread': 1, 'api_integration_gap': 1, 'human_reported_issue_then_verified_fix_attempt': 1, 'bug_fix': 1, 'blueprint_human_gap_disagreement': 1, 'mostly follows blueprint': 1}\nOutcomes: {'claimed_resolved_with_verification_signal': 6}\nQuality tiers: {'weak_supervision': 3, 'assumption_check': 1}\nCI labels: {}\nCurriculum targets:\n- Use helicopter-view architecture/schema/design evidence beside issue threads.\n- Teach models to compare requested product class against implementation layers.\nAssumption checks:\n- Which blueprint layer is absent: frontend, API, data, auth, tests, or deployment?\n- Does human feedback confirm the same architectural gap?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/talent-x-app/talent-x", "source_id": "graph-query-motif_query-86934f561e4daee4", "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": "talent-x-app/talent-x", "source_dataset": "graph_queries/blueprint_gap_alignment", "training_usage": "curriculum_gap"}}}, {"ruleId": "foundry_blueprint_gap", "level": "warning", "message": {"text": "Foundry mined blueprint gap alignment: talent-x-app/talent-x"}, "properties": {"repobilityId": 404267, "scanner": "foundry_dataset", "fingerprint": "1d292b714fc7b83adf6c18a370e2841e6469b42d1ea04b03501566f2ba52f5ed", "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, "docs_or_claims": 3, "schema_or_data": 2, "verification_or_tests": 4, "data_schema_persistence": 1, "mostly follows blueprint": 1, "issue_or_pull_request_thread": 1, "blueprint_human_gap_disagreement": 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": {"claimed_resolved_with_verification_signal": 6}, "polarity": "mixed", "query_id": "blueprint_gap_alignment", "severity": "medium", "ci_labels": {}, "synthetic": false, "edge_count": 35, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 1, "thread_has_comment": 1, "thread_touches_file": 5, "alignment_uses_comment": 1, "alignment_uses_finding": 1, "chain_has_link_quality": 4, "comment_aligns_finding": 1, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "issue_chain_touches_file": 5, "thread_has_comment_chain": 1, "comment_chain_links_commit": 5, "comment_chain_touches_file": 5, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 1}, "node_count": 22, "node_types": {"repo": 1, "commit": 5, "thread": 1, "comment": 1, "pr_file": 5, "alignment": 1, "fix_outcome": 1, "issue_chain": 1, "link_quality": 4, "comment_chain": 1, "blueprint_finding": 1}, "query_type": "motif_query", "thread_key": "talent-x-app/talent-x#10", "issue_number": "10", "quality_tiers": {"assumption_check": 1, "weak_supervision": 3}, "repo_full_name": "talent-x-app/talent-x", "training_usage": "curriculum_gap", "source_motif_id": "graph-pattern-motif-thread-0ff155c0b0d0cb7f", "graph_gold_label": "supported_by_verification_signal", "changed_file_labels": {"docs_or_claims": 12, "schema_or_data": 8}}, "text": "Graph query export: Human feedback aligned with blueprint or architecture gaps\nQuery id: blueprint_gap_alignment\nQuery type: motif_query\nIntent: Curriculum-gap examples connecting issue threads to helicopter-view gaps.\nMotif: blueprint_gap_alignment\nTraining usage: curriculum_gap\nGraph gold label: supported_by_verification_signal\nRepo: talent-x-app/talent-x\nThread: talent-x-app/talent-x#10\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: talent-x-app/talent-x\nThread: talent-x-app/talent-x#10\nGraph gold label: supported_by_verification_signal\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: talent-x-app/talent-x#10\nRepo: talent-x-app/talent-x\nIssue/PR number: 10\nGraph consistency label: supported_by_verification_signal\nNodes: 22\nEdges: 35\nNode types: {'pr_file': 5, 'commit': 5, 'link_quality': 4, 'thread': 1, 'repo': 1, 'comment': 1, 'comment_chain': 1, 'issue_chain': 1, 'fix_outcome': 1, 'alignment': 1, 'blueprint_finding': 1}\nEdge types: {'thread_touches_file': 5, 'comment_chain_links_commit': 5, 'comment_chain_touches_file': 5, 'issue_chain_touches_file': 5, 'chain_has_link_quality': 4, 'repo_has_thread': 1, 'thread_has_comment': 1, 'thread_has_comment_chain': 1, 'comment_has_chain': 1, 'thread_has_issue_chain': 1, 'issue_chain_has_comment_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1, 'alignment_uses_comment': 1, 'alignment_uses_finding': 1, 'comment_aligns_finding': 1}\nLabels: {'verification_or_tests': 4, 'docs_or_claims': 3, 'claimed_resolved_with_verification_signal': 3, 'schema_or_data': 2, 'thread_has_human_issue_and_fix_context': 2, 'issue_or_pull_request_thread': 1, 'data_schema_persistence': 1, 'human_reported_issue_then_verified_fix_attempt': 1, 'bug_fix': 1, 'blueprint_human_gap_disagreement': 1, 'mostly follows blueprint': 1}\nOutcomes: {'claimed_resolved_with_verification_signal': 6}\nQuality tiers: {'weak_supervision': 3, 'assumption_check': 1}\nCI labels: {}\nCurriculum targets:\n- Use helicopter-view architecture/schema/design evidence beside issue threads.\n- Teach models to compare requested product class against implementation layers.\nAssumption checks:\n- Which blueprint layer is absent: frontend, API, data, auth, tests, or deployment?\n- Does human feedback confirm the same architectural gap?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/talent-x-app/talent-x", "source_id": "graph-query-motif_query-a5c0f3ad291a5e4b", "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": "talent-x-app/talent-x", "source_dataset": "graph_queries/blueprint_gap_alignment", "training_usage": "curriculum_gap"}}}, {"ruleId": "foundry_assumption_check", "level": "warning", "message": {"text": "Foundry mined assumption checks: talent-x-app/talent-x"}, "properties": {"repobilityId": 382800, "scanner": "foundry_dataset", "fingerprint": "355922cc7c27605cde1520b0dbf4abc06c62a5f409b3d58bc44b4ef72a9e1457", "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": "talent-x-app/talent-x#9", "human_labels": ["api_or_backend", "security_auth_secret", "test_or_ci"], "issue_number": "9", "thread_label": "thread_has_human_issue_and_fix_context", "outcome_label": "claimed_resolved_unverified", "source_backed": true, "max_confidence": 0.662, "repo_full_name": "talent-x-app/talent-x", "training_usage": "weak_supervision", "confidence_tier": "weak_supervision", "source_chain_id": "evidence-chain-issue_chain-0fa428de480979f8", "helicopter_views": {"graphs": 2, "schemas": 2}, "artifact_families": {"ci": 1, "docs": 5, "routes_api": 2}, "source_chain_kind": "issue_chain", "changed_file_count": 13, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {"test_or_ci": 3, "api_or_backend": 10}, "linked_commit_count": 2, "helicopter_view_count": 4, "source_artifact_count": 8, "classification_reasons": ["source_graph_has_real_artifacts", "source_graph_has_verification_artifacts", "repo_has_isolated_helicopter_views", "link_quality_weak_supervision", "high_risk_human_feedback_label"], "linked_ci_commit_count": 0, "verification_artifact_count": 1, "design_schema_api_artifact_count": 2}, "text": "Comment chain pattern product: assumption_checks\nRepo: talent-x-app/talent-x\nThread: talent-x-app/talent-x#9\nOutcome: claimed_resolved_unverified\nThread label: thread_has_human_issue_and_fix_context\nSource graph label: source_backed_multi_signal_graph\nReasons: source_graph_has_real_artifacts, source_graph_has_verification_artifacts, repo_has_isolated_helicopter_views, link_quality_weak_supervision, high_risk_human_feedback_label\nChain evidence:\nIssue/PR evidence chain: talent-x-app/talent-x#9\nRepo: talent-x-app/talent-x\nThread label: thread_has_human_issue_and_fix_context\nOutcome: claimed_resolved_unverified\nComment count: 1\nLinked commit count: 2\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 13\nLabels: {'security_auth_secret': 1}\nPolarities: {'bad': 1}\nChanged file labels: {'api_or_backend': 10, 'test_or_ci': 3}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-73942f43ee5710f3\",\n    \"kind\": \"pull_request_body\",\n    \"label\": \"security_auth_secret\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/talent-x-app/talent-x/pull/9\",\n    \"text\": \"GitHub feedback: security_auth_secret\\nPolarity: bad\\nKind: pull_request_body\\nRepo: talent-x-app/talent-x\\nAuthor: talent-x-app (User)\\nURL: https://github.com/talent-x-app/talent-x/pull/9\\nTitle: feat(TLX-020): g\u00e9n\u00e9ration et rotation des cl\u00e9s RS256 (keystore)\\nBody:\\n## TLX-020 \u2014 G\u00e9n\u00e9ration et rotation des cl\u00e9s RS256\\n\\nMet en place le **keystore RS256** c\u00f4t\u00e9 serveur pour la signature des access tokens (ADR-04). C'est la fondation crypto sur laquelle s'appuieront l'\u00e9mission des jetons (TLX-022) et leur v\u00e9rification dans le `JwtAuthGuard` (TLX-024). **Aucune nouvelle d\u00e9pendance** : `node:crypto`. **Aucun secret en dur.**\\n\\nR\u00e9f : ADR-04 (TX-ARCH-001 \u00a74.4 ; TX-SEC-003 \u00a711\u201312) \u00b7 Jalon : Auth & RGPD \u00b7 D\u00e9pend de : TLX-011\\n\\n### Principe (rotation par chevauchement)\\n\\n- **Une seule cl\u00e9 priv\u00e9e vivante** \u00e0 la fois (la cl\u00e9 _active_ de signature) \u2014 le seul secret r\u00e9ellement sensible.\\n- **Plusieurs cl\u00e9s publiques** accept\u00e9es en v\u00e9rification : la cl\u00e9 active + d'anciennes cl\u00e9s _retir\u00e9es_, le temps qu'expirent les jetons qu'elles ont sign\u00e9s.\\n- Chaque cl\u00e9 porte un **`kid`** (en-t\u00eate JWT) pour retrouver la bonne cl\u00e9 publique.\\n\\n### Contenu\\n\\n- **`src/auth/keys/jwt-keys.config.ts`** \u2014 loader d'environnement **pu\"\n  }\n]\nChanged files:\n[\n  {\n    \"id\": \"github-pr-file-file-77e6b3fe0b9bf270\",\n    \"filename\": \"apps/api/.env.example\",\n    \"label\": \"api_or_backend\",\n    \"status\": \"modified\",\n    \"additions\": 15,\n    \"deletions\": 0,\n    \"changes\": 15,\n    \"blob_url\": \"https://github.com/talent-x-app/talent-x/blob/46abbd06a65a77c8f96193f3af1e4d737f30f306/apps%2Fapi%2F.env.example\"\n  },\n  {\n    \"id\": \"github-pr-file-file-8e2e729518090e5c\",\n    \"filename\": \"apps/api/package.json\",\n    \"label\": \"api_or_backend\",\n    \"status\": \"modified\",\n    \"additions\": 2,\n    \"deletions\": 1,\n    \"changes\": 3,\n    \"blob_url\": \"https://github.com/talent-x-app/talent-x/blob/46abbd06a65a77c8\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/talent-x-app/talent-x", "source_id": "comment-chain-pattern-assumption_checks-c3c27b7124beeac8", "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": "talent-x-app/talent-x", "source_dataset": "comment_chain_patterns/assumption_checks", "training_usage": "weak_supervision"}}}, {"ruleId": "foundry_assumption_check", "level": "warning", "message": {"text": "Foundry mined assumption checks: talent-x-app/talent-x"}, "properties": {"repobilityId": 382799, "scanner": "foundry_dataset", "fingerprint": "e73afc03351aaebd449b1185fbce1de962f9ff6d53efc2cdcad8796d0c2dd7b1", "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": "talent-x-app/talent-x#8", "human_labels": ["dependency_or_build", "docs_or_claims", "security_auth_secret", "source_or_other", "test_or_ci", "ui_or_frontend"], "issue_number": "8", "thread_label": "thread_has_human_issue_and_fix_context", "outcome_label": "claimed_resolved_unverified", "source_backed": true, "max_confidence": 0.67, "repo_full_name": "talent-x-app/talent-x", "training_usage": "weak_supervision", "confidence_tier": "weak_supervision", "source_chain_id": "evidence-chain-issue_chain-c15679d2e249e7bd", "helicopter_views": {"graphs": 2, "schemas": 2}, "artifact_families": {"ci": 1, "docs": 5, "routes_api": 2}, "source_chain_kind": "issue_chain", "changed_file_count": 22, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {"test_or_ci": 6, "docs_or_claims": 1, "ui_or_frontend": 12, "source_or_other": 1, "dependency_or_build": 2}, "linked_commit_count": 2, "helicopter_view_count": 4, "source_artifact_count": 8, "classification_reasons": ["source_graph_has_real_artifacts", "source_graph_has_verification_artifacts", "repo_has_isolated_helicopter_views", "link_quality_weak_supervision", "high_risk_human_feedback_label"], "linked_ci_commit_count": 0, "verification_artifact_count": 1, "design_schema_api_artifact_count": 2}, "text": "Comment chain pattern product: assumption_checks\nRepo: talent-x-app/talent-x\nThread: talent-x-app/talent-x#8\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: talent-x-app/talent-x#8\nRepo: talent-x-app/talent-x\nThread label: thread_has_human_issue_and_fix_context\nOutcome: claimed_resolved_unverified\nComment count: 1\nLinked commit count: 2\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 22\nLabels: {'security_auth_secret': 1}\nPolarities: {'bad': 1}\nChanged file labels: {'source_or_other': 1, 'docs_or_claims': 1, 'ui_or_frontend': 12, 'dependency_or_build': 2, 'test_or_ci': 6}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-7319cd12335e9714\",\n    \"kind\": \"pull_request_body\",\n    \"label\": \"security_auth_secret\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/talent-x-app/talent-x/pull/8\",\n    \"text\": \"GitHub feedback: security_auth_secret\\nPolarity: bad\\nKind: pull_request_body\\nRepo: talent-x-app/talent-x\\nAuthor: talent-x-app (User)\\nURL: https://github.com/talent-x-app/talent-x/pull/8\\nTitle: feat(TLX-010): gestion globale erreurs / toasts / bandeau hors-ligne (mobile)\\nBody:\\n## TLX-010 \u2014 Gestion globale erreurs / toasts / bandeau hors-ligne\\n\\nCouche de feedback global de l'app mobile : garde-fou de rendu, toasts, bandeau hors-ligne et traduction des erreurs en messages utilisateur. Tous les visuels d\u00e9rivent des tokens du design system (TLX-006) \u2014 **aucune valeur en dur**.\\n\\nR\u00e9f : design system \u00b7 Jalon : Fondations \u00b7 D\u00e9pend de : TLX-006\\n\\n### Nouveau module `apps/mobile/src/feedback/`\\n\\n- **`ErrorBoundary`** \u2014 garde-fou de rendu React (class component) ; capture les exceptions de rendu et affiche un \u00e9cran de repli avec bouton **\u00ab R\u00e9essayer \u00bb** (r\u00e9initialise l'\u00e9tat d'erreur).\\n- **`ToastProvider` / `useToast`** \u2014 API imp\u00e9rative `show` / `dismiss`. File de **3 toasts max**, auto-rejet (4 s par d\u00e9faut, `duration: 0` = persistant), rejet au tap. Variantes `success` / `danger` / `warning` / `info`. Superposition basse `pointerEvents=\\\"box-none\\\"` (ne bloque pas les taps), respect des safe-area \"\n  }\n]\nChanged files:\n[\n  {\n    \"id\": \"github-pr-file-file-b810f25e60f4533a\",\n    \"filename\": \".claude/settings.local.json\",\n    \"label\": \"source_or_other\",\n    \"status\": \"modified\",\n    \"additions\": 5,\n    \"deletions\": 1,\n    \"changes\": 6,\n    \"blob_url\": \"https://github.com/talent-x-app/talent-x/blob/14bdd9fc4e9ef110f9ce1bc0c6a27fc51a6d01f6/.claude%2Fsettings.local.json\"\n  },\n  {\n    \"id\": \"github-pr-file-file-5ef156dea86d6650\",\n    \"filename\": \"CURRENT_SPRINT.md\",\n    \"label\": \"docs_or_claims\",\n    \"status\": \"modified\",\n    \"additions\": 2,\n    \"deletions\": 1,\n    \"changes\": 3,\n    \"blo\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/talent-x-app/talent-x", "source_id": "comment-chain-pattern-assumption_checks-32a06fb8aa17414e", "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": "talent-x-app/talent-x", "source_dataset": "comment_chain_patterns/assumption_checks", "training_usage": "weak_supervision"}}}, {"ruleId": "foundry_assumption_check", "level": "warning", "message": {"text": "Foundry mined assumption checks: talent-x-app/talent-x"}, "properties": {"repobilityId": 382798, "scanner": "foundry_dataset", "fingerprint": "3fb6645a70a2196a6090b1fe6f5ffe86482bd5716e64ed5ae6972d507f19a31b", "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": "talent-x-app/talent-x#7", "human_labels": ["api_or_backend", "human_feedback_general", "test_or_ci"], "issue_number": "7", "thread_label": "thread_needs_classification", "outcome_label": "ambiguous_needs_more_evidence", "source_backed": true, "max_confidence": 0.0, "repo_full_name": "talent-x-app/talent-x", "training_usage": "negative_or_unresolved", "confidence_tier": "unresolved", "source_chain_id": "evidence-chain-issue_chain-0e9708f74b046de7", "helicopter_views": {"graphs": 2, "schemas": 2}, "artifact_families": {"ci": 1, "docs": 5, "routes_api": 2}, "source_chain_kind": "issue_chain", "changed_file_count": 15, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {"test_or_ci": 3, "api_or_backend": 12}, "linked_commit_count": 0, "helicopter_view_count": 4, "source_artifact_count": 8, "classification_reasons": ["source_graph_has_real_artifacts", "source_graph_has_verification_artifacts", "repo_has_isolated_helicopter_views", "link_quality_unresolved"], "linked_ci_commit_count": 0, "verification_artifact_count": 1, "design_schema_api_artifact_count": 2}, "text": "Comment chain pattern product: assumption_checks\nRepo: talent-x-app/talent-x\nThread: talent-x-app/talent-x#7\nOutcome: ambiguous_needs_more_evidence\nThread label: thread_needs_classification\nSource graph label: source_backed_multi_signal_graph\nReasons: source_graph_has_real_artifacts, source_graph_has_verification_artifacts, repo_has_isolated_helicopter_views, link_quality_unresolved\nChain evidence:\nIssue/PR evidence chain: talent-x-app/talent-x#7\nRepo: talent-x-app/talent-x\nThread label: thread_needs_classification\nOutcome: ambiguous_needs_more_evidence\nComment count: 1\nLinked commit count: 0\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 15\nLabels: {'human_feedback_general': 1}\nPolarities: {'neutral': 1}\nChanged file labels: {'api_or_backend': 12, 'test_or_ci': 3}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-49cc22fe3494757e\",\n    \"kind\": \"pull_request_body\",\n    \"label\": \"human_feedback_general\",\n    \"polarity\": \"neutral\",\n    \"url\": \"https://github.com/talent-x-app/talent-x/pull/7\",\n    \"text\": \"GitHub feedback: human_feedback_general\\nPolarity: neutral\\nKind: pull_request_body\\nRepo: talent-x-app/talent-x\\nAuthor: talent-x-app (User)\\nURL: https://github.com/talent-x-app/talent-x/pull/7\\nTitle: Chore/review fixes\\nBody:\\n\"\n  }\n]\nChanged files:\n[\n  {\n    \"id\": \"github-pr-file-file-6668206e4c769c0c\",\n    \"filename\": \"apps/api/src/app.module.ts\",\n    \"label\": \"api_or_backend\",\n    \"status\": \"modified\",\n    \"additions\": 8,\n    \"deletions\": 2,\n    \"changes\": 10,\n    \"blob_url\": \"https://github.com/talent-x-app/talent-x/blob/c10c5edcc5ecce1737b571122b6dc689cf1e0cd8/apps%2Fapi%2Fsrc%2Fapp.module.ts\"\n  },\n  {\n    \"id\": \"github-pr-file-file-39390ee9af59e4fd\",\n    \"filename\": \"apps/api/src/common/context/request-context.ts\",\n    \"label\": \"api_or_backend\",\n    \"status\": \"added\",\n    \"additions\": 18,\n    \"deletions\": 0,\n    \"changes\": 18,\n    \"blob_url\": \"https://github.com/talent-x-app/talent-x/blob/c10c5edcc5ecce1737b571122b6dc689cf1e0cd8/apps%2Fapi%2Fsrc%2Fcommon%2Fcontext%2Frequest-context.ts\"\n  },\n  {\n    \"id\": \"github-pr-file-file-afaa86ca4d1d04be\",\n    \"filename\": \"apps/api/src/common/filters/all-exceptions.filter.ts\",\n    \"label\": \"api_or_backend\",\n    \"status\": \"modified\",\n    \"additions\": 3,\n    \"deletions\": 0,\n    \"changes\": 3,\n    \"blob_url\": \"https://github.com/talent-x-app/talent-x/blob/c10c5edcc5ecce1737b571122b6dc689cf1e0cd8/apps%2Fapi%2Fsrc%2Fcommon%2Ffilters%2Fall-exceptions.filter.ts\"\n  },\n  {\n    \"id\": \"github-pr-file-file-cc769616e85a60da\",\n    \"filename\": \"apps/api/src/common/logging/json-logger.ts\",\n    \"label\": \"api_or_backend\",\n    \"status\": \"added\",\n    \"additions\": 54,\n    \"deletions\": 0,\n    \"changes\": 54,\n    \"blob_url\": \"https://github.com/talent-x-app/talent-x/blob/c10c5edcc5ecce1737b571122b6dc689cf1e0cd8/apps%2Fapi%2Fsrc%2Fcommon%2Flogging%2Fjson-logger.ts\"\n  },\n  {\n    \"id\": \"github-pr-file-file-bfd2b7522047eb93\",\n    \"filename\": \"apps/api/src/common/middleware/req\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/talent-x-app/talent-x", "source_id": "comment-chain-pattern-assumption_checks-4cf5c70772ee121e", "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": "talent-x-app/talent-x", "source_dataset": "comment_chain_patterns/assumption_checks", "training_usage": "negative_or_unresolved"}}}, {"ruleId": "foundry_assumption_check", "level": "warning", "message": {"text": "Foundry mined assumption checks: talent-x-app/talent-x"}, "properties": {"repobilityId": 382797, "scanner": "foundry_dataset", "fingerprint": "10bead4f7b46b7d6b5beae6869d3766990e33470e280443f1097064b8b4f0b3e", "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": "talent-x-app/talent-x#6", "human_labels": ["api_or_backend", "data_schema_persistence", "test_or_ci"], "issue_number": "6", "thread_label": "thread_has_human_issue_and_fix_context", "outcome_label": "ambiguous_needs_more_evidence", "source_backed": true, "max_confidence": 0.67, "repo_full_name": "talent-x-app/talent-x", "training_usage": "weak_supervision", "confidence_tier": "weak_supervision", "source_chain_id": "evidence-chain-issue_chain-8fabb3106d9768a2", "helicopter_views": {"graphs": 2, "schemas": 2}, "artifact_families": {"ci": 1, "docs": 5, "routes_api": 2}, "source_chain_kind": "issue_chain", "changed_file_count": 15, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {"test_or_ci": 3, "api_or_backend": 12}, "linked_commit_count": 5, "helicopter_view_count": 4, "source_artifact_count": 8, "classification_reasons": ["source_graph_has_real_artifacts", "source_graph_has_verification_artifacts", "repo_has_isolated_helicopter_views", "link_quality_weak_supervision", "high_risk_human_feedback_label"], "linked_ci_commit_count": 0, "verification_artifact_count": 1, "design_schema_api_artifact_count": 2}, "text": "Comment chain pattern product: assumption_checks\nRepo: talent-x-app/talent-x\nThread: talent-x-app/talent-x#6\nOutcome: ambiguous_needs_more_evidence\nThread label: thread_has_human_issue_and_fix_context\nSource graph label: source_backed_multi_signal_graph\nReasons: source_graph_has_real_artifacts, source_graph_has_verification_artifacts, repo_has_isolated_helicopter_views, link_quality_weak_supervision, high_risk_human_feedback_label\nChain evidence:\nIssue/PR evidence chain: talent-x-app/talent-x#6\nRepo: talent-x-app/talent-x\nThread label: thread_has_human_issue_and_fix_context\nOutcome: ambiguous_needs_more_evidence\nComment count: 1\nLinked commit count: 5\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 15\nLabels: {'data_schema_persistence': 1}\nPolarities: {'bad': 1}\nChanged file labels: {'api_or_backend': 12, 'test_or_ci': 3}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-ff32be9325d49991\",\n    \"kind\": \"pull_request_body\",\n    \"label\": \"data_schema_persistence\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/talent-x-app/talent-x/pull/6\",\n    \"text\": \"GitHub feedback: data_schema_persistence\\nPolarity: bad\\nKind: pull_request_body\\nRepo: talent-x-app/talent-x\\nAuthor: talent-x-app (User)\\nURL: https://github.com/talent-x-app/talent-x/pull/6\\nTitle: feat(TLX-013): journalisation JSON + correlation ID + readiness des d\u00e9pendances\\nBody:\\n## TLX-013 \u2014 Journalisation structur\u00e9e + correlation ID + readiness\\n\\nObservabilit\u00e9 du socle API, conforme \u00e0 **TX-OPS-004 \u00a77** (\u00ab Logs structur\u00e9s JSON avec correlation ID par requ\u00eate \u00bb ; \u00ab health checks d\u00e9di\u00e9s pour l'API, la base, Redis \u00bb).\\n\\n> \u26a0\ufe0f Bas\u00e9e sur `chore/review-fixes` (PR #5) pour \u00e9viter les conflits sur `main.ts`/`app.module.ts`. **\u00c0 merger apr\u00e8s #5** \u2014 GitHub reciblera automatiquement la base sur `main`.\\n\\n### Logs structur\u00e9s JSON\\n`JsonLogger` (impl\u00e9mente `LoggerService`) \u2192 une ligne JSON par entr\u00e9e `{ time, level, message, context, requestId? }`, branch\u00e9 via `app.useLogger()` (`bufferLogs` pour rejouer les logs de bootstrap).\\n\\n### Correlation ID par requ\u00eate\\n- `RequestIdMiddleware` : r\u00e9utilise l'en-t\u00eate `X-Request-Id` entrant (reverse proxy/client) ou en g\u00e9n\u00e8re un (UUID), le renvoie au client, et le propage via **AsyncLocalStorage**.\\n- Inject\u00e9 dans **chaque log** \u00e9mis pendant la requ\u00eate **et** dan\"\n  }\n]\nChanged files:\n[\n  {\n    \"id\": \"github-pr-file-file-3563238f0a31de8d\",\n    \"filename\": \"apps/api/src/app.module.ts\",\n    \"label\": \"api_or_backend\",\n    \"status\": \"modified\",\n    \"additions\": 8,\n    \"deletions\": 2,\n    \"changes\": 10,\n    \"blob_url\": \"https://github.com/talent-x-app/talent-x/blob/77c36688a1d7cc17cce8e6204e25fbc61f56ae5f/apps%2Fapi%2Fsrc%2Fapp.module.ts\"\n  },\n  {\n    \"id\": \"github-pr-file-file-45b3c377ef2dcd67\",\n    \"filename\": \"apps/api/src/common/context/request-context.ts\",\n    \"label\": \"api_or_backend\",\n    \"status\": \"added\",\n    \"additions\": 18,\n    \"deletions\": 0,\n    \"changes\": 18,\n    \"blob_url\": \"https://github.com/t\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/talent-x-app/talent-x", "source_id": "comment-chain-pattern-assumption_checks-f3194c5e0f6fb99a", "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": "talent-x-app/talent-x", "source_dataset": "comment_chain_patterns/assumption_checks", "training_usage": "weak_supervision"}}}, {"ruleId": "foundry_assumption_check", "level": "warning", "message": {"text": "Foundry mined assumption checks: talent-x-app/talent-x"}, "properties": {"repobilityId": 382796, "scanner": "foundry_dataset", "fingerprint": "a58482807aa6267542902f7d8880678e25adcc40c0fbed9210b4dc485bf76b3c", "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": "talent-x-app/talent-x#2", "human_labels": ["dependency_or_build", "docs_or_claims", "security_auth_secret", "security_or_auth", "test_or_ci", "ui_or_frontend"], "issue_number": "2", "thread_label": "thread_has_human_issue_and_fix_context", "outcome_label": "claimed_resolved_unverified", "source_backed": true, "max_confidence": 0.67, "repo_full_name": "talent-x-app/talent-x", "training_usage": "weak_supervision", "confidence_tier": "weak_supervision", "source_chain_id": "evidence-chain-issue_chain-60fd24f3462ae8a9", "helicopter_views": {"graphs": 2, "schemas": 2}, "artifact_families": {"ci": 1, "docs": 5, "routes_api": 2}, "source_chain_kind": "issue_chain", "changed_file_count": 17, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {"test_or_ci": 1, "docs_or_claims": 1, "ui_or_frontend": 9, "security_or_auth": 2, "dependency_or_build": 4}, "linked_commit_count": 1, "helicopter_view_count": 4, "source_artifact_count": 8, "classification_reasons": ["source_graph_has_real_artifacts", "source_graph_has_verification_artifacts", "repo_has_isolated_helicopter_views", "link_quality_weak_supervision", "high_risk_human_feedback_label"], "linked_ci_commit_count": 0, "verification_artifact_count": 1, "design_schema_api_artifact_count": 2}, "text": "Comment chain pattern product: assumption_checks\nRepo: talent-x-app/talent-x\nThread: talent-x-app/talent-x#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: talent-x-app/talent-x#2\nRepo: talent-x-app/talent-x\nThread label: thread_has_human_issue_and_fix_context\nOutcome: claimed_resolved_unverified\nComment count: 1\nLinked commit count: 1\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 17\nLabels: {'security_auth_secret': 1}\nPolarities: {'bad': 1}\nChanged file labels: {'docs_or_claims': 1, 'ui_or_frontend': 9, 'dependency_or_build': 4, 'security_or_auth': 2, 'test_or_ci': 1}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-b83e7ad8235a8ba6\",\n    \"kind\": \"pull_request_body\",\n    \"label\": \"security_auth_secret\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/talent-x-app/talent-x/pull/2\",\n    \"text\": \"GitHub feedback: security_auth_secret\\nPolarity: bad\\nKind: pull_request_body\\nRepo: talent-x-app/talent-x\\nAuthor: talent-x-app (User)\\nURL: https://github.com/talent-x-app/talent-x/pull/2\\nTitle: feat(TLX-005): design system en code (tokens RN + CSS + th\u00e8me typ\u00e9)\\nBody:\\n## TLX-005 \u2014 Design system en code\\n\\nProductionise le design system Talent-X dans **`@talent-x/design-tokens`** et le c\u00e2ble dans l'app mobile (objectif de sprint : \u00ab l'app d\u00e9marre avec le th\u00e8me \u00bb).\\n\\nLinear : [TLX-5](https://linear.app/idrissa/issue/TLX-5) (num\u00e9ro backlog : TLX-005). Source de v\u00e9rit\u00e9 : `design/tokens.json` (format W3C).\\n\\n### `packages/design-tokens`\\n- **`src/tokens.ts`** \u2014 palette primitive, couleurs s\u00e9mantiques **light/dark**, typographie, spacing, radius, elevation, motion, opacity + type `Theme`. **Aucun import react-native** \u2192 testable en Node.\\n- **`src/context.tsx`** \u2014 `ThemeProvider` + `useTheme` / `useSystemTheme`, **dark-first**.\\n- **`src/tokens.json`** \u2014 copie de la source de v\u00e9rit\u00e9 W3C.\\n- **`src/tokens.test.ts`** \u2014 **test de parit\u00e9** `tokens.ts` \u2194 `tokens.json` (Jest + ts-jest) : rampes primitives, couleurs s\u00e9mantiques light/dark, spacing, radius, fontSize/fontWeight.\\n- **`css/`** \u2014 variables `--\"\n  }\n]\nChanged files:\n[\n  {\n    \"id\": \"github-pr-file-file-90fb12d2f355a0e0\",\n    \"filename\": \"CURRENT_SPRINT.md\",\n    \"label\": \"docs_or_claims\",\n    \"status\": \"modified\",\n    \"additions\": 2,\n    \"deletions\": 2,\n    \"changes\": 4,\n    \"blob_url\": \"https://github.com/talent-x-app/talent-x/blob/9a15b3f226ef53c7cf5101d6e4a779a8d7fed7c5/CURRENT_SPRINT.md\"\n  },\n  {\n    \"id\": \"github-pr-file-file-f0651e4c61338852\",\n    \"filename\": \"apps/mobile/app/_layout.tsx\",\n    \"label\": \"ui_or_frontend\",\n    \"status\": \"modified\",\n    \"additions\": 36,\n    \"deletions\": 1,\n    \"changes\": 37,\n    \"blob_url\": \"ht\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/talent-x-app/talent-x", "source_id": "comment-chain-pattern-assumption_checks-426ce4793fd91c06", "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": "talent-x-app/talent-x", "source_dataset": "comment_chain_patterns/assumption_checks", "training_usage": "weak_supervision"}}}, {"ruleId": "foundry_test_ci_gap", "level": "error", "message": {"text": "Foundry mined test ci gap after feedback: talent-x-app/talent-x"}, "properties": {"repobilityId": 420347, "scanner": "foundry_dataset", "fingerprint": "d0f4d94434525a39ed27623a623c37894a33321614d8fff1ed4e0028b3e4cde3", "category": "testing", "severity": "high", "confidence": 0.78, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Imported from mined Foundry/Fable5 evidence with real GitHub/source provenance. Review source_id before acting.", "evidence": {"meta": {"kind": "graph_query_record", "title": "Feedback exposes missing tests or CI", "intent": "Hard negatives for feedback/fix chains without adequate guardrails.", "labels": {"bug_fix": 1, "test_or_ci": 4, "test_ci_gap": 1, "api_or_backend": 46, "schema_or_data": 2, "dependency_or_build": 1, "verification_or_tests": 4, "mostly follows blueprint": 1, "issue_or_pull_request_thread": 1, "blueprint_human_gap_disagreement": 1, "thread_has_human_issue_and_fix_context": 2, "claimed_resolved_with_verification_signal": 3, "human_reported_issue_then_verified_fix_attempt": 1}, "source": "graph_query_export", "motif_id": "test_ci_gap_after_feedback", "outcomes": {"claimed_resolved_with_verification_signal": 6}, "polarity": "bad", "query_id": "test_ci_gap_after_feedback", "severity": "high", "ci_labels": {}, "synthetic": false, "edge_count": 97, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 1, "thread_has_comment": 1, "thread_touches_file": 53, "alignment_uses_comment": 1, "alignment_uses_finding": 1, "chain_has_link_quality": 4, "comment_aligns_finding": 1, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "issue_chain_touches_file": 12, "thread_has_comment_chain": 1, "comment_chain_links_commit": 5, "comment_chain_touches_file": 12, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 1}, "node_count": 70, "node_types": {"repo": 1, "commit": 5, "thread": 1, "comment": 1, "pr_file": 53, "alignment": 1, "fix_outcome": 1, "issue_chain": 1, "link_quality": 4, "comment_chain": 1, "blueprint_finding": 1}, "query_type": "motif_query", "thread_key": "talent-x-app/talent-x#4", "issue_number": "4", "quality_tiers": {"assumption_check": 1, "weak_supervision": 3}, "repo_full_name": "talent-x-app/talent-x", "training_usage": "hard_negative", "source_motif_id": "graph-pattern-motif-thread-408d8654727fcf84", "graph_gold_label": "supported_by_verification_signal", "changed_file_labels": {"test_or_ci": 16, "api_or_backend": 184, "schema_or_data": 8, "dependency_or_build": 4}}, "text": "Graph query export: Feedback exposes missing tests or CI\nQuery id: test_ci_gap_after_feedback\nQuery type: motif_query\nIntent: Hard negatives for feedback/fix chains without adequate guardrails.\nMotif: test_ci_gap_after_feedback\nTraining usage: hard_negative\nGraph gold label: supported_by_verification_signal\nRepo: talent-x-app/talent-x\nThread: talent-x-app/talent-x#4\nEvidence:\nGraph motif: Feedback or fix context exposes missing test/CI guardrails\nMotif id: test_ci_gap_after_feedback\nPolarity: bad\nTraining usage: hard_negative\nSeverity: high\nRepo: talent-x-app/talent-x\nThread: talent-x-app/talent-x#4\nGraph gold label: supported_by_verification_signal\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: talent-x-app/talent-x#4\nRepo: talent-x-app/talent-x\nIssue/PR number: 4\nGraph consistency label: supported_by_verification_signal\nNodes: 70\nEdges: 97\nNode types: {'pr_file': 53, 'commit': 5, 'link_quality': 4, 'thread': 1, 'repo': 1, 'comment': 1, 'comment_chain': 1, 'issue_chain': 1, 'fix_outcome': 1, 'alignment': 1, 'blueprint_finding': 1}\nEdge types: {'thread_touches_file': 53, 'comment_chain_touches_file': 12, 'issue_chain_touches_file': 12, 'comment_chain_links_commit': 5, 'chain_has_link_quality': 4, 'repo_has_thread': 1, 'thread_has_comment': 1, 'thread_has_comment_chain': 1, 'comment_has_chain': 1, 'thread_has_issue_chain': 1, 'issue_chain_has_comment_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1, 'alignment_uses_comment': 1, 'alignment_uses_finding': 1, 'comment_aligns_finding': 1}\nLabels: {'api_or_backend': 46, 'test_or_ci': 4, 'verification_or_tests': 4, 'claimed_resolved_with_verification_signal': 3, 'schema_or_data': 2, 'thread_has_human_issue_and_fix_context': 2, 'issue_or_pull_request_thread': 1, 'test_ci_gap': 1, 'dependency_or_build': 1, 'human_reported_issue_then_verified_fix_attempt': 1, 'bug_fix': 1, 'blueprint_human_gap_disagreement': 1, 'mostly follows blueprint': 1}\nOutcomes: {'claimed_resolved_with_verification_signal': 6}\nQuality tiers: {'weak_supervision': 3, 'assumption_check': 1}\nCI labels: {}\nCurriculum targets:\n- Turn human feedback into regression tests and CI gates.\n- Penalize fixes that do not add or exercise verification for affected workflows.\nAssumption checks:\n- Did the fix add tests for the exact complaint?\n- Does CI run those tests, or is verification only implied?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/talent-x-app/talent-x", "source_id": "graph-query-motif_query-d82c25c690f0a9d4", "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": "talent-x-app/talent-x", "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: talent-x-app/talent-x"}, "properties": {"repobilityId": 411247, "scanner": "foundry_dataset", "fingerprint": "57b10dc4c3c4248625c3ef19a0b9054c835356aa223b7102103da0dc51046fba", "category": "quality", "severity": "high", "confidence": 0.76, "triageState": "open", "verdict": "needs_review", "isResolved": false, "reason": "Imported from mined Foundry/Fable5 evidence with real GitHub/source provenance. Review source_id before acting.", "evidence": {"meta": {"kind": "graph_query_record", "title": "Schema, UI, and API mismatch", "intent": "Assumption-check examples for data-path consistency across layers.", "labels": {"test_or_ci": 3, "api_or_backend": 12, "verification_or_tests": 5, "data_schema_persistence": 1, "mostly follows blueprint": 1, "issue_or_pull_request_thread": 1, "ambiguous_needs_more_evidence": 3, "blueprint_human_gap_disagreement": 1, "comment_has_related_commit_context": 1, "thread_has_human_issue_and_fix_context": 2}, "source": "graph_query_export", "motif_id": "schema_ui_api_mismatch", "outcomes": {"ambiguous_needs_more_evidence": 6}, "polarity": "bad", "query_id": "schema_ui_api_mismatch", "severity": "high", "ci_labels": {}, "synthetic": false, "edge_count": 59, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 1, "thread_has_comment": 1, "thread_touches_file": 15, "alignment_uses_comment": 1, "alignment_uses_finding": 1, "chain_has_link_quality": 4, "comment_aligns_finding": 1, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "issue_chain_touches_file": 12, "thread_has_comment_chain": 1, "comment_chain_links_commit": 5, "comment_chain_touches_file": 12, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 1}, "node_count": 32, "node_types": {"repo": 1, "commit": 5, "thread": 1, "comment": 1, "pr_file": 15, "alignment": 1, "fix_outcome": 1, "issue_chain": 1, "link_quality": 4, "comment_chain": 1, "blueprint_finding": 1}, "query_type": "motif_query", "thread_key": "talent-x-app/talent-x#6", "issue_number": "6", "quality_tiers": {"assumption_check": 1, "weak_supervision": 3}, "repo_full_name": "talent-x-app/talent-x", "training_usage": "assumption_check", "source_motif_id": "graph-pattern-motif-thread-2846d83f779ac22d", "graph_gold_label": "weak_supervision_needs_review", "changed_file_labels": {"test_or_ci": 12, "api_or_backend": 48}}, "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: talent-x-app/talent-x\nThread: talent-x-app/talent-x#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: talent-x-app/talent-x\nThread: talent-x-app/talent-x#6\nGraph gold label: weak_supervision_needs_review\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: talent-x-app/talent-x#6\nRepo: talent-x-app/talent-x\nIssue/PR number: 6\nGraph consistency label: weak_supervision_needs_review\nNodes: 32\nEdges: 59\nNode types: {'pr_file': 15, 'commit': 5, 'link_quality': 4, 'thread': 1, 'repo': 1, 'comment': 1, 'comment_chain': 1, 'issue_chain': 1, 'fix_outcome': 1, 'alignment': 1, 'blueprint_finding': 1}\nEdge types: {'thread_touches_file': 15, 'comment_chain_touches_file': 12, 'issue_chain_touches_file': 12, 'comment_chain_links_commit': 5, 'chain_has_link_quality': 4, 'repo_has_thread': 1, 'thread_has_comment': 1, 'thread_has_comment_chain': 1, 'comment_has_chain': 1, 'thread_has_issue_chain': 1, 'issue_chain_has_comment_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1, 'alignment_uses_comment': 1, 'alignment_uses_finding': 1, 'comment_aligns_finding': 1}\nLabels: {'api_or_backend': 12, 'verification_or_tests': 5, 'test_or_ci': 3, 'ambiguous_needs_more_evidence': 3, 'thread_has_human_issue_and_fix_context': 2, 'issue_or_pull_request_thread': 1, 'data_schema_persistence': 1, 'comment_has_related_commit_context': 1, 'blueprint_human_gap_disagreement': 1, 'mostly follows blueprint': 1}\nOutcomes: {'ambiguous_needs_more_evidence': 6}\nQuality tiers: {'weak_supervision': 3, '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/talent-x-app/talent-x", "source_id": "graph-query-motif_query-ae5abcad206d241c", "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": "talent-x-app/talent-x", "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: talent-x-app/talent-x"}, "properties": {"repobilityId": 411246, "scanner": "foundry_dataset", "fingerprint": "7288083b473f377d8e21f3a1e07d0d0bfcc48da443ec716f14e59ae8becfa734", "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, "docs_or_claims": 3, "schema_or_data": 2, "verification_or_tests": 4, "data_schema_persistence": 1, "mostly follows blueprint": 1, "issue_or_pull_request_thread": 1, "blueprint_human_gap_disagreement": 1, "thread_has_human_issue_and_fix_context": 2, "claimed_resolved_with_verification_signal": 3, "human_reported_issue_then_verified_fix_attempt": 1}, "source": "graph_query_export", "motif_id": "schema_ui_api_mismatch", "outcomes": {"claimed_resolved_with_verification_signal": 6}, "polarity": "bad", "query_id": "schema_ui_api_mismatch", "severity": "high", "ci_labels": {}, "synthetic": false, "edge_count": 35, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 1, "thread_has_comment": 1, "thread_touches_file": 5, "alignment_uses_comment": 1, "alignment_uses_finding": 1, "chain_has_link_quality": 4, "comment_aligns_finding": 1, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "issue_chain_touches_file": 5, "thread_has_comment_chain": 1, "comment_chain_links_commit": 5, "comment_chain_touches_file": 5, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 1}, "node_count": 22, "node_types": {"repo": 1, "commit": 5, "thread": 1, "comment": 1, "pr_file": 5, "alignment": 1, "fix_outcome": 1, "issue_chain": 1, "link_quality": 4, "comment_chain": 1, "blueprint_finding": 1}, "query_type": "motif_query", "thread_key": "talent-x-app/talent-x#10", "issue_number": "10", "quality_tiers": {"assumption_check": 1, "weak_supervision": 3}, "repo_full_name": "talent-x-app/talent-x", "training_usage": "assumption_check", "source_motif_id": "graph-pattern-motif-thread-0312fe37bf6ea6ad", "graph_gold_label": "supported_by_verification_signal", "changed_file_labels": {"docs_or_claims": 12, "schema_or_data": 8}}, "text": "Graph query export: Schema, UI, and API mismatch\nQuery id: schema_ui_api_mismatch\nQuery type: motif_query\nIntent: Assumption-check examples for data-path consistency across layers.\nMotif: schema_ui_api_mismatch\nTraining usage: assumption_check\nGraph gold label: supported_by_verification_signal\nRepo: talent-x-app/talent-x\nThread: talent-x-app/talent-x#10\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: talent-x-app/talent-x\nThread: talent-x-app/talent-x#10\nGraph gold label: supported_by_verification_signal\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: talent-x-app/talent-x#10\nRepo: talent-x-app/talent-x\nIssue/PR number: 10\nGraph consistency label: supported_by_verification_signal\nNodes: 22\nEdges: 35\nNode types: {'pr_file': 5, 'commit': 5, 'link_quality': 4, 'thread': 1, 'repo': 1, 'comment': 1, 'comment_chain': 1, 'issue_chain': 1, 'fix_outcome': 1, 'alignment': 1, 'blueprint_finding': 1}\nEdge types: {'thread_touches_file': 5, 'comment_chain_links_commit': 5, 'comment_chain_touches_file': 5, 'issue_chain_touches_file': 5, 'chain_has_link_quality': 4, 'repo_has_thread': 1, 'thread_has_comment': 1, 'thread_has_comment_chain': 1, 'comment_has_chain': 1, 'thread_has_issue_chain': 1, 'issue_chain_has_comment_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1, 'alignment_uses_comment': 1, 'alignment_uses_finding': 1, 'comment_aligns_finding': 1}\nLabels: {'verification_or_tests': 4, 'docs_or_claims': 3, 'claimed_resolved_with_verification_signal': 3, 'schema_or_data': 2, 'thread_has_human_issue_and_fix_context': 2, 'issue_or_pull_request_thread': 1, 'data_schema_persistence': 1, 'human_reported_issue_then_verified_fix_attempt': 1, 'bug_fix': 1, 'blueprint_human_gap_disagreement': 1, 'mostly follows blueprint': 1}\nOutcomes: {'claimed_resolved_with_verification_signal': 6}\nQuality tiers: {'weak_supervision': 3, '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/talent-x-app/talent-x", "source_id": "graph-query-motif_query-92d9df81376b9419", "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": "talent-x-app/talent-x", "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: talent-x-app/talent-x"}, "properties": {"repobilityId": 411245, "scanner": "foundry_dataset", "fingerprint": "bef339b2c2ce8aa2dad57780d542c46e8acbc4c1f6ed729841935f84fc12bbca", "category": "quality", "severity": "high", "confidence": 0.76, "triageState": "open", "verdict": "needs_review", "isResolved": false, "reason": "Imported from mined Foundry/Fable5 evidence with real GitHub/source provenance. Review source_id before acting.", "evidence": {"meta": {"kind": "graph_query_record", "title": "Schema, UI, and API mismatch", "intent": "Assumption-check examples for data-path consistency across layers.", "labels": {"bug_fix": 2, "data_schema": 3, "api_or_backend": 13, "docs_or_claims": 3, "schema_or_data": 1, "ui_or_frontend": 3, "source_or_other": 4, "mock_placeholder": 1, "dependency_or_build": 11, "claimed_resolved_unverified": 3, "issue_or_pull_request_thread": 1, "human_reported_issue_then_fix_attempt": 1, "thread_has_human_issue_and_fix_context": 2}, "source": "graph_query_export", "motif_id": "schema_ui_api_mismatch", "outcomes": {"claimed_resolved_unverified": 6}, "polarity": "bad", "query_id": "schema_ui_api_mismatch", "severity": "high", "ci_labels": {}, "synthetic": false, "edge_count": 75, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 1, "thread_has_comment": 1, "thread_touches_file": 35, "chain_has_link_quality": 3, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "issue_chain_touches_file": 12, "thread_has_comment_chain": 1, "comment_chain_links_commit": 5, "comment_chain_touches_file": 12, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 1}, "node_count": 49, "node_types": {"repo": 1, "commit": 5, "thread": 1, "comment": 1, "pr_file": 35, "fix_outcome": 1, "issue_chain": 1, "link_quality": 3, "comment_chain": 1}, "query_type": "motif_query", "thread_key": "talent-x-app/talent-x#1", "issue_number": "1", "quality_tiers": {"weak_supervision": 3}, "repo_full_name": "talent-x-app/talent-x", "training_usage": "assumption_check", "source_motif_id": "graph-pattern-motif-thread-fccf0ef7d761a5e6", "graph_gold_label": "weak_supervision_needs_review", "changed_file_labels": {"api_or_backend": 52, "docs_or_claims": 12, "schema_or_data": 4, "ui_or_frontend": 12, "source_or_other": 16, "dependency_or_build": 44}}, "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: talent-x-app/talent-x\nThread: talent-x-app/talent-x#1\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: talent-x-app/talent-x\nThread: talent-x-app/talent-x#1\nGraph gold label: weak_supervision_needs_review\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: talent-x-app/talent-x#1\nRepo: talent-x-app/talent-x\nIssue/PR number: 1\nGraph consistency label: weak_supervision_needs_review\nNodes: 49\nEdges: 75\nNode types: {'pr_file': 35, 'commit': 5, 'link_quality': 3, 'thread': 1, 'repo': 1, 'comment': 1, 'comment_chain': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'thread_touches_file': 35, 'comment_chain_touches_file': 12, 'issue_chain_touches_file': 12, 'comment_chain_links_commit': 5, 'chain_has_link_quality': 3, 'repo_has_thread': 1, 'thread_has_comment': 1, 'thread_has_comment_chain': 1, 'comment_has_chain': 1, 'thread_has_issue_chain': 1, 'issue_chain_has_comment_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'api_or_backend': 13, 'dependency_or_build': 11, 'source_or_other': 4, 'docs_or_claims': 3, 'ui_or_frontend': 3, 'data_schema': 3, 'claimed_resolved_unverified': 3, 'bug_fix': 2, 'thread_has_human_issue_and_fix_context': 2, 'issue_or_pull_request_thread': 1, 'mock_placeholder': 1, 'schema_or_data': 1, 'human_reported_issue_then_fix_attempt': 1}\nOutcomes: {'claimed_resolved_unverified': 6}\nQuality tiers: {'weak_supervision': 3}\nCI labels: {}\nCurriculum targets:\n- Create schema-to-API-to-UI consistency tasks with migrations and tests.\n- Teach models to verify persistence, route contracts, and UI state together.\nAssumption checks:\n- Do schema changes have matching API and UI handling?\n- Are migrations and tests present for the data path?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/talent-x-app/talent-x", "source_id": "graph-query-motif_query-4eb948d583e5348b", "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": "talent-x-app/talent-x", "source_dataset": "graph_queries/schema_ui_api_mismatch", "training_usage": "assumption_check"}}}, {"ruleId": "foundry_docs_only_fix", "level": "error", "message": {"text": "Foundry mined docs only runtime fix: talent-x-app/talent-x"}, "properties": {"repobilityId": 406319, "scanner": "foundry_dataset", "fingerprint": "f0e05d6ec13dbfa3d4e9be60fe09da99c1886df5a1c1e72b60e370b259777d0e", "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": 1, "docs_or_claims": 2, "api_integration_gap": 1, "verification_or_tests": 4, "mostly follows blueprint": 1, "issue_or_pull_request_thread": 1, "blueprint_human_gap_disagreement": 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": {"claimed_resolved_with_verification_signal": 6}, "polarity": "bad", "query_id": "docs_only_runtime_fix", "severity": "high", "ci_labels": {}, "synthetic": false, "edge_count": 26, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 1, "thread_has_comment": 1, "thread_touches_file": 2, "alignment_uses_comment": 1, "alignment_uses_finding": 1, "chain_has_link_quality": 4, "comment_aligns_finding": 1, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "issue_chain_touches_file": 2, "thread_has_comment_chain": 1, "comment_chain_links_commit": 5, "comment_chain_touches_file": 2, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 1}, "node_count": 19, "node_types": {"repo": 1, "commit": 5, "thread": 1, "comment": 1, "pr_file": 2, "alignment": 1, "fix_outcome": 1, "issue_chain": 1, "link_quality": 4, "comment_chain": 1, "blueprint_finding": 1}, "query_type": "motif_query", "thread_key": "talent-x-app/talent-x#11", "issue_number": "11", "quality_tiers": {"assumption_check": 1, "weak_supervision": 3}, "repo_full_name": "talent-x-app/talent-x", "training_usage": "assumption_check", "source_motif_id": "graph-pattern-motif-thread-a068a9acdd47494d", "graph_gold_label": "supported_by_verification_signal", "changed_file_labels": {"docs_or_claims": 8}}, "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: talent-x-app/talent-x\nThread: talent-x-app/talent-x#11\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: talent-x-app/talent-x\nThread: talent-x-app/talent-x#11\nGraph gold label: supported_by_verification_signal\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: talent-x-app/talent-x#11\nRepo: talent-x-app/talent-x\nIssue/PR number: 11\nGraph consistency label: supported_by_verification_signal\nNodes: 19\nEdges: 26\nNode types: {'commit': 5, 'link_quality': 4, 'pr_file': 2, 'thread': 1, 'repo': 1, 'comment': 1, 'comment_chain': 1, 'issue_chain': 1, 'fix_outcome': 1, 'alignment': 1, 'blueprint_finding': 1}\nEdge types: {'comment_chain_links_commit': 5, 'chain_has_link_quality': 4, 'thread_touches_file': 2, 'comment_chain_touches_file': 2, 'issue_chain_touches_file': 2, 'repo_has_thread': 1, 'thread_has_comment': 1, 'thread_has_comment_chain': 1, 'comment_has_chain': 1, 'thread_has_issue_chain': 1, 'issue_chain_has_comment_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1, 'alignment_uses_comment': 1, 'alignment_uses_finding': 1, 'comment_aligns_finding': 1}\nLabels: {'verification_or_tests': 4, 'claimed_resolved_with_verification_signal': 3, 'docs_or_claims': 2, 'thread_has_human_issue_and_fix_context': 2, 'issue_or_pull_request_thread': 1, 'api_integration_gap': 1, 'human_reported_issue_then_verified_fix_attempt': 1, 'bug_fix': 1, 'blueprint_human_gap_disagreement': 1, 'mostly follows blueprint': 1}\nOutcomes: {'claimed_resolved_with_verification_signal': 6}\nQuality tiers: {'weak_supervision': 3, '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/talent-x-app/talent-x", "source_id": "graph-query-motif_query-df8ed06060b11293", "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": "talent-x-app/talent-x", "source_dataset": "graph_queries/docs_only_runtime_fix", "training_usage": "assumption_check"}}}, {"ruleId": "foundry_docs_only_fix", "level": "error", "message": {"text": "Foundry mined docs only runtime fix: talent-x-app/talent-x"}, "properties": {"repobilityId": 406318, "scanner": "foundry_dataset", "fingerprint": "c985c065b368f22e6a5f40fa8ea01f1bb8527de8708d83d99a16083f8a108129", "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": 1, "docs_or_claims": 3, "schema_or_data": 2, "verification_or_tests": 4, "data_schema_persistence": 1, "mostly follows blueprint": 1, "issue_or_pull_request_thread": 1, "blueprint_human_gap_disagreement": 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": {"claimed_resolved_with_verification_signal": 6}, "polarity": "bad", "query_id": "docs_only_runtime_fix", "severity": "high", "ci_labels": {}, "synthetic": false, "edge_count": 35, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 1, "thread_has_comment": 1, "thread_touches_file": 5, "alignment_uses_comment": 1, "alignment_uses_finding": 1, "chain_has_link_quality": 4, "comment_aligns_finding": 1, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "issue_chain_touches_file": 5, "thread_has_comment_chain": 1, "comment_chain_links_commit": 5, "comment_chain_touches_file": 5, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 1}, "node_count": 22, "node_types": {"repo": 1, "commit": 5, "thread": 1, "comment": 1, "pr_file": 5, "alignment": 1, "fix_outcome": 1, "issue_chain": 1, "link_quality": 4, "comment_chain": 1, "blueprint_finding": 1}, "query_type": "motif_query", "thread_key": "talent-x-app/talent-x#10", "issue_number": "10", "quality_tiers": {"assumption_check": 1, "weak_supervision": 3}, "repo_full_name": "talent-x-app/talent-x", "training_usage": "assumption_check", "source_motif_id": "graph-pattern-motif-thread-24031d5a6ae33370", "graph_gold_label": "supported_by_verification_signal", "changed_file_labels": {"docs_or_claims": 12, "schema_or_data": 8}}, "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: talent-x-app/talent-x\nThread: talent-x-app/talent-x#10\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: talent-x-app/talent-x\nThread: talent-x-app/talent-x#10\nGraph gold label: supported_by_verification_signal\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: talent-x-app/talent-x#10\nRepo: talent-x-app/talent-x\nIssue/PR number: 10\nGraph consistency label: supported_by_verification_signal\nNodes: 22\nEdges: 35\nNode types: {'pr_file': 5, 'commit': 5, 'link_quality': 4, 'thread': 1, 'repo': 1, 'comment': 1, 'comment_chain': 1, 'issue_chain': 1, 'fix_outcome': 1, 'alignment': 1, 'blueprint_finding': 1}\nEdge types: {'thread_touches_file': 5, 'comment_chain_links_commit': 5, 'comment_chain_touches_file': 5, 'issue_chain_touches_file': 5, 'chain_has_link_quality': 4, 'repo_has_thread': 1, 'thread_has_comment': 1, 'thread_has_comment_chain': 1, 'comment_has_chain': 1, 'thread_has_issue_chain': 1, 'issue_chain_has_comment_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1, 'alignment_uses_comment': 1, 'alignment_uses_finding': 1, 'comment_aligns_finding': 1}\nLabels: {'verification_or_tests': 4, 'docs_or_claims': 3, 'claimed_resolved_with_verification_signal': 3, 'schema_or_data': 2, 'thread_has_human_issue_and_fix_context': 2, 'issue_or_pull_request_thread': 1, 'data_schema_persistence': 1, 'human_reported_issue_then_verified_fix_attempt': 1, 'bug_fix': 1, 'blueprint_human_gap_disagreement': 1, 'mostly follows blueprint': 1}\nOutcomes: {'claimed_resolved_with_verification_signal': 6}\nQuality tiers: {'weak_supervision': 3, '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/talent-x-app/talent-x", "source_id": "graph-query-motif_query-ae854e02325970e7", "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": "talent-x-app/talent-x", "source_dataset": "graph_queries/docs_only_runtime_fix", "training_usage": "assumption_check"}}}, {"ruleId": "foundry_bad_chain", "level": "error", "message": {"text": "Foundry mined bad chains: talent-x-app/talent-x"}, "properties": {"repobilityId": 391413, "scanner": "foundry_dataset", "fingerprint": "f3518a303f54ff3e54d5745f69d43e96241e4126246e4452b84dad6f34d61a2b", "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": "talent-x-app/talent-x#3", "human_labels": ["mock_placeholder", "schema_or_data"], "issue_number": "3", "thread_label": "thread_has_human_issue_and_fix_context", "outcome_label": "claimed_resolved_unverified", "source_backed": true, "max_confidence": 0.645, "repo_full_name": "talent-x-app/talent-x", "training_usage": "weak_supervision", "confidence_tier": "weak_supervision", "source_chain_id": "evidence-chain-issue_chain-4521baa73485107c", "helicopter_views": {"graphs": 2, "schemas": 2}, "artifact_families": {"ci": 1, "docs": 5, "routes_api": 2}, "source_chain_kind": "issue_chain", "changed_file_count": 3, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {"schema_or_data": 3}, "linked_commit_count": 4, "helicopter_view_count": 4, "source_artifact_count": 8, "classification_reasons": ["source_graph_has_real_artifacts", "source_graph_has_verification_artifacts", "repo_has_isolated_helicopter_views", "link_quality_weak_supervision", "high_risk_human_feedback_label"], "linked_ci_commit_count": 0, "verification_artifact_count": 1, "design_schema_api_artifact_count": 2}, "text": "Comment chain pattern product: bad_chains\nRepo: talent-x-app/talent-x\nThread: talent-x-app/talent-x#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: talent-x-app/talent-x#3\nRepo: talent-x-app/talent-x\nThread label: thread_has_human_issue_and_fix_context\nOutcome: claimed_resolved_unverified\nComment count: 1\nLinked commit count: 4\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 3\nLabels: {'mock_placeholder': 1}\nPolarities: {'bad': 1}\nChanged file labels: {'schema_or_data': 3}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-72a857896c570793\",\n    \"kind\": \"pull_request_body\",\n    \"label\": \"mock_placeholder\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/talent-x-app/talent-x/pull/3\",\n    \"text\": \"GitHub feedback: mock_placeholder\\nPolarity: bad\\nKind: pull_request_body\\nRepo: talent-x-app/talent-x\\nAuthor: talent-x-app (User)\\nURL: https://github.com/talent-x-app/talent-x/pull/3\\nTitle: feat(TLX-012): sch\u00e9ma Prisma + migration initiale\\nBody:\\n## TLX-012 \u2014 Sch\u00e9ma Prisma + migration initiale\\n\\nImpl\u00e9mente le mod\u00e8le de donn\u00e9es complet d\u00e9riv\u00e9 de `docs/Talent-X_06_Modele_de_donnees.md` (TX-DATA-006, Annexe A \u2014 DDL de r\u00e9f\u00e9rence).\\n\\n### Contenu\\n- **12 mod\u00e8les** : `users`, `consents`, `refresh_tokens`, `device_tokens`, `groups`, `group_members`, `coach_athlete_links`, `sessions`, `session_assignments`, `performances`, `comments`, `audit_log`\\n- Remplace le mod\u00e8le placeholder `HealthCheck` (TLX-001)\\n- Migration initiale : `apps/api/prisma/migrations/20260607000000_init/`\\n\\n### Conventions respect\u00e9es (\u00a72 du doc)\\n- snake_case via `@map`/`@@map`, PK UUID `gen_random_uuid()`, `audit_log` en `bigserial`\\n- **\u00c9num\u00e9rations en texte + CHECK** (pas d'enum natif \u2014 choix du doc \u00ab pour faciliter l'\u00e9volution \u00bb)\\n- Soft-delete `deleted_at` ; JSONB versionn\u00e9 (`exercises`/`results` + `*_schema_version`)\\n- Ajouts hors-Prisma \u00e9crits \u00e0 la main dans le SQL :\\n  - **CHECK** : `role`, `status` (sessions/assignments), `\"\n  }\n]\nChanged files:\n[\n  {\n    \"id\": \"github-pr-file-file-55446d46747ad18a\",\n    \"filename\": \"apps/api/prisma/migrations/20260607000000_init/migration.sql\",\n    \"label\": \"schema_or_data\",\n    \"status\": \"added\",\n    \"additions\": 351,\n    \"deletions\": 0,\n    \"changes\": 351,\n    \"blob_url\": \"https://github.com/talent-x-app/talent-x/blob/df45152213708550d0b9c4453a25e2a25712a87f/apps%2Fapi%2Fprisma%2Fmigrations%2F20260607000000_init%2Fmigration.sql\"\n  },\n  {\n    \"id\": \"github-pr-file-file-9c63f2016d6e9051\",\n    \"filename\": \"apps/api/prisma/migrations/migration_lock.toml\",\n    \"label\": \"schema_or_data\",\n    \"status\": \"added\",\n    \"additions\": 3,\n    \"deletions\": 0,\n    \"changes\": 3,\n    \"blo\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/talent-x-app/talent-x", "source_id": "comment-chain-pattern-bad_chains-6d93746f828f4360", "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": "talent-x-app/talent-x", "source_dataset": "comment_chain_patterns/bad_chains", "training_usage": "weak_supervision"}}}, {"ruleId": "foundry_bad_chain", "level": "error", "message": {"text": "Foundry mined bad chains: talent-x-app/talent-x"}, "properties": {"repobilityId": 391412, "scanner": "foundry_dataset", "fingerprint": "e2e4e25876c490aa0f051225311dedb8617a3e661645efc2abe73631e3f98bc3", "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": "talent-x-app/talent-x#1", "human_labels": ["api_or_backend", "dependency_or_build", "docs_or_claims", "mock_placeholder", "schema_or_data", "source_or_other", "ui_or_frontend"], "issue_number": "1", "thread_label": "thread_has_human_issue_and_fix_context", "outcome_label": "claimed_resolved_unverified", "source_backed": true, "max_confidence": 0.67, "repo_full_name": "talent-x-app/talent-x", "training_usage": "weak_supervision", "confidence_tier": "weak_supervision", "source_chain_id": "evidence-chain-issue_chain-4e6c028c89320155", "helicopter_views": {"graphs": 2, "schemas": 2}, "artifact_families": {"ci": 1, "docs": 5, "routes_api": 2}, "source_chain_kind": "issue_chain", "changed_file_count": 35, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {"api_or_backend": 13, "docs_or_claims": 3, "schema_or_data": 1, "ui_or_frontend": 3, "source_or_other": 4, "dependency_or_build": 11}, "linked_commit_count": 5, "helicopter_view_count": 4, "source_artifact_count": 8, "classification_reasons": ["source_graph_has_real_artifacts", "source_graph_has_verification_artifacts", "repo_has_isolated_helicopter_views", "link_quality_weak_supervision", "high_risk_human_feedback_label"], "linked_ci_commit_count": 0, "verification_artifact_count": 1, "design_schema_api_artifact_count": 2}, "text": "Comment chain pattern product: bad_chains\nRepo: talent-x-app/talent-x\nThread: talent-x-app/talent-x#1\nOutcome: claimed_resolved_unverified\nThread label: thread_has_human_issue_and_fix_context\nSource graph label: source_backed_multi_signal_graph\nReasons: source_graph_has_real_artifacts, source_graph_has_verification_artifacts, repo_has_isolated_helicopter_views, link_quality_weak_supervision, high_risk_human_feedback_label\nChain evidence:\nIssue/PR evidence chain: talent-x-app/talent-x#1\nRepo: talent-x-app/talent-x\nThread label: thread_has_human_issue_and_fix_context\nOutcome: claimed_resolved_unverified\nComment count: 1\nLinked commit count: 5\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 35\nLabels: {'mock_placeholder': 1}\nPolarities: {'bad': 1}\nChanged file labels: {'source_or_other': 4, 'docs_or_claims': 3, 'api_or_backend': 13, 'schema_or_data': 1, 'ui_or_frontend': 3, 'dependency_or_build': 11}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-0ce025023c2288f8\",\n    \"kind\": \"pull_request_body\",\n    \"label\": \"mock_placeholder\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/talent-x-app/talent-x/pull/1\",\n    \"text\": \"GitHub feedback: mock_placeholder\\nPolarity: bad\\nKind: pull_request_body\\nRepo: talent-x-app/talent-x\\nAuthor: talent-x-app (User)\\nURL: https://github.com/talent-x-app/talent-x/pull/1\\nTitle: feat(TLX-001): initialiser le mono-repo (Expo + NestJS + Prisma, pnpm workspaces)\\nBody:\\n## TLX-001 \u2014 Initialiser le mono-repo\\n\\nMet en place le squelette du mono-repo pnpm workspaces : `apps/mobile` (Expo), `apps/api` (NestJS + Prisma) et les `packages/*` partag\u00e9s.\\n\\nLinear : [TLX-1](https://linear.app/idrissa/issue/TLX-1) (num\u00e9ro backlog : TLX-001).\\n\\n### Contenu\\n- **Racine** : `package.json` (pnpm@10.30.3, `engines.node>=22`, scripts `build`/`typecheck`/`dev:api`/`dev:mobile`), `tsconfig.base.json`, `.npmrc` (`node-linker=hoisted` pour Metro/RN + pnpm).\\n- **packages/tsconfig** : presets TypeScript **strict** partag\u00e9s (`base`/`node`/`react-native`).\\n- **packages/api-client** & **packages/design-tokens** : stubs buildables (remplis respectivement en TLX-008 et TLX-005).\\n- **apps/api** (NestJS) : `main.ts` (pr\u00e9fixe global `/api/v1`), module + `GET /api/v1/health`, Prisma initialis\u00e9 (`prisma generate` only), `.env.example`. Dev via `nest start --watch` (m\u00e9tadonn\u00e9es DI correctes).\\n- **apps/mobile** (Exp\"\n  }\n]\nChanged files:\n[\n  {\n    \"id\": \"github-pr-file-file-536d6e6e8a8fde3b\",\n    \"filename\": \".npmrc\",\n    \"label\": \"source_or_other\",\n    \"status\": \"added\",\n    \"additions\": 3,\n    \"deletions\": 0,\n    \"changes\": 3,\n    \"blob_url\": \"https://github.com/talent-x-app/talent-x/blob/0a996bb9b2a3ffeab30cd0e6a9c8d50e7a782db5/.npmrc\"\n  },\n  {\n    \"id\": \"github-pr-file-file-3c108c6dad398d86\",\n    \"filename\": \"CLAUDE.md\",\n    \"label\": \"docs_or_claims\",\n    \"status\": \"modified\",\n    \"additions\": 12,\n    \"deletions\": 13,\n    \"changes\": 25,\n    \"blob_url\": \"https://github.com/talent-x-app/\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/talent-x-app/talent-x", "source_id": "comment-chain-pattern-bad_chains-8db70e74a50e10ce", "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": "talent-x-app/talent-x", "source_dataset": "comment_chain_patterns/bad_chains", "training_usage": "weak_supervision"}}}, {"ruleId": "foundry_fake_real_gap", "level": "error", "message": {"text": "Foundry mined mock as real or placeholder: talent-x-app/talent-x"}, "properties": {"repobilityId": 408253, "scanner": "foundry_dataset", "fingerprint": "39c25abc641788f610904aae4937a0dac6683e035ed6402bcfd139aaddd49c98", "category": "practices", "severity": "critical", "confidence": 0.82, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Imported from mined Foundry/Fable5 evidence with real GitHub/source provenance. Review source_id before acting.", "evidence": {"meta": {"kind": "graph_query_record", "title": "Mock, sample, placeholder, or self-attested behavior treated as real", "intent": "Hard negatives for fake completeness and missing real data paths.", "labels": {"bug_fix": 1, "data_schema": 3, "schema_or_data": 3, "mock_placeholder": 1, "claimed_resolved_unverified": 3, "issue_or_pull_request_thread": 1, "human_reported_issue_then_fix_attempt": 1, "thread_has_human_issue_and_fix_context": 2}, "source": "graph_query_export", "motif_id": "mock_as_real_or_placeholder", "outcomes": {"claimed_resolved_unverified": 6}, "polarity": "bad", "query_id": "mock_as_real_or_placeholder", "severity": "critical", "ci_labels": {}, "synthetic": false, "edge_count": 24, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 1, "thread_has_comment": 1, "thread_touches_file": 3, "chain_has_link_quality": 3, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "issue_chain_touches_file": 3, "thread_has_comment_chain": 1, "comment_chain_links_commit": 4, "comment_chain_touches_file": 3, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 1}, "node_count": 16, "node_types": {"repo": 1, "commit": 4, "thread": 1, "comment": 1, "pr_file": 3, "fix_outcome": 1, "issue_chain": 1, "link_quality": 3, "comment_chain": 1}, "query_type": "motif_query", "thread_key": "talent-x-app/talent-x#3", "issue_number": "3", "quality_tiers": {"weak_supervision": 3}, "repo_full_name": "talent-x-app/talent-x", "training_usage": "hard_negative", "source_motif_id": "graph-pattern-motif-thread-3df1d539356aa43d", "graph_gold_label": "weak_supervision_needs_review", "changed_file_labels": {"schema_or_data": 12}}, "text": "Graph query export: Mock, sample, placeholder, or self-attested behavior treated as real\nQuery id: mock_as_real_or_placeholder\nQuery type: motif_query\nIntent: Hard negatives for fake completeness and missing real data paths.\nMotif: mock_as_real_or_placeholder\nTraining usage: hard_negative\nGraph gold label: weak_supervision_needs_review\nRepo: talent-x-app/talent-x\nThread: talent-x-app/talent-x#3\nEvidence:\nGraph motif: Mock, sample, placeholder, or self-attested behavior treated as real\nMotif id: mock_as_real_or_placeholder\nPolarity: bad\nTraining usage: hard_negative\nSeverity: critical\nRepo: talent-x-app/talent-x\nThread: talent-x-app/talent-x#3\nGraph gold label: weak_supervision_needs_review\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: talent-x-app/talent-x#3\nRepo: talent-x-app/talent-x\nIssue/PR number: 3\nGraph consistency label: weak_supervision_needs_review\nNodes: 16\nEdges: 24\nNode types: {'commit': 4, 'pr_file': 3, 'link_quality': 3, 'thread': 1, 'repo': 1, 'comment': 1, 'comment_chain': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'comment_chain_links_commit': 4, 'thread_touches_file': 3, 'comment_chain_touches_file': 3, 'chain_has_link_quality': 3, 'issue_chain_touches_file': 3, 'repo_has_thread': 1, 'thread_has_comment': 1, 'thread_has_comment_chain': 1, 'comment_has_chain': 1, 'thread_has_issue_chain': 1, 'issue_chain_has_comment_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'schema_or_data': 3, 'data_schema': 3, 'claimed_resolved_unverified': 3, 'thread_has_human_issue_and_fix_context': 2, 'issue_or_pull_request_thread': 1, 'mock_placeholder': 1, 'human_reported_issue_then_fix_attempt': 1, 'bug_fix': 1}\nOutcomes: {'claimed_resolved_unverified': 6}\nQuality tiers: {'weak_supervision': 3}\nCI labels: {}\nCurriculum targets:\n- Train real-data plumbing and mock-removal tasks from source to UI.\n- Use as hard negatives for dashboards or apps claiming real runs without provenance.\nAssumption checks:\n- Is user-visible behavior backed by real storage/API/CI artifacts?\n- Are placeholders, sample data, or generated claims still in a production path?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/talent-x-app/talent-x", "source_id": "graph-query-motif_query-b34b338a411817e1", "synthetic": false, "gold_label": "", "graph_label": "", "source_path": "/data/distillate/foundry_data/graph_queries/mock_as_real_or_placeholder/shard-0.jsonl", "bundle_label": "", "priority_band": "", "priority_score": 0, "repo_full_name": "talent-x-app/talent-x", "source_dataset": "graph_queries/mock_as_real_or_placeholder", "training_usage": "hard_negative"}}}, {"ruleId": "foundry_fake_real_gap", "level": "error", "message": {"text": "Foundry mined mock as real or placeholder: talent-x-app/talent-x"}, "properties": {"repobilityId": 408252, "scanner": "foundry_dataset", "fingerprint": "b643a95a45b3139536216ffa4cddff04ed2e1a39c26434747a84ac8807e9202a", "category": "practices", "severity": "critical", "confidence": 0.82, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Imported from mined Foundry/Fable5 evidence with real GitHub/source provenance. Review source_id before acting.", "evidence": {"meta": {"kind": "graph_query_record", "title": "Mock, sample, placeholder, or self-attested behavior treated as real", "intent": "Hard negatives for fake completeness and missing real data paths.", "labels": {"bug_fix": 2, "data_schema": 3, "api_or_backend": 13, "docs_or_claims": 3, "schema_or_data": 1, "ui_or_frontend": 3, "source_or_other": 4, "mock_placeholder": 1, "dependency_or_build": 11, "claimed_resolved_unverified": 3, "issue_or_pull_request_thread": 1, "human_reported_issue_then_fix_attempt": 1, "thread_has_human_issue_and_fix_context": 2}, "source": "graph_query_export", "motif_id": "mock_as_real_or_placeholder", "outcomes": {"claimed_resolved_unverified": 6}, "polarity": "bad", "query_id": "mock_as_real_or_placeholder", "severity": "critical", "ci_labels": {}, "synthetic": false, "edge_count": 75, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 1, "thread_has_comment": 1, "thread_touches_file": 35, "chain_has_link_quality": 3, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "issue_chain_touches_file": 12, "thread_has_comment_chain": 1, "comment_chain_links_commit": 5, "comment_chain_touches_file": 12, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 1}, "node_count": 49, "node_types": {"repo": 1, "commit": 5, "thread": 1, "comment": 1, "pr_file": 35, "fix_outcome": 1, "issue_chain": 1, "link_quality": 3, "comment_chain": 1}, "query_type": "motif_query", "thread_key": "talent-x-app/talent-x#1", "issue_number": "1", "quality_tiers": {"weak_supervision": 3}, "repo_full_name": "talent-x-app/talent-x", "training_usage": "hard_negative", "source_motif_id": "graph-pattern-motif-thread-2c444ac3b24b4057", "graph_gold_label": "weak_supervision_needs_review", "changed_file_labels": {"api_or_backend": 52, "docs_or_claims": 12, "schema_or_data": 4, "ui_or_frontend": 12, "source_or_other": 16, "dependency_or_build": 44}}, "text": "Graph query export: Mock, sample, placeholder, or self-attested behavior treated as real\nQuery id: mock_as_real_or_placeholder\nQuery type: motif_query\nIntent: Hard negatives for fake completeness and missing real data paths.\nMotif: mock_as_real_or_placeholder\nTraining usage: hard_negative\nGraph gold label: weak_supervision_needs_review\nRepo: talent-x-app/talent-x\nThread: talent-x-app/talent-x#1\nEvidence:\nGraph motif: Mock, sample, placeholder, or self-attested behavior treated as real\nMotif id: mock_as_real_or_placeholder\nPolarity: bad\nTraining usage: hard_negative\nSeverity: critical\nRepo: talent-x-app/talent-x\nThread: talent-x-app/talent-x#1\nGraph gold label: weak_supervision_needs_review\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: talent-x-app/talent-x#1\nRepo: talent-x-app/talent-x\nIssue/PR number: 1\nGraph consistency label: weak_supervision_needs_review\nNodes: 49\nEdges: 75\nNode types: {'pr_file': 35, 'commit': 5, 'link_quality': 3, 'thread': 1, 'repo': 1, 'comment': 1, 'comment_chain': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'thread_touches_file': 35, 'comment_chain_touches_file': 12, 'issue_chain_touches_file': 12, 'comment_chain_links_commit': 5, 'chain_has_link_quality': 3, 'repo_has_thread': 1, 'thread_has_comment': 1, 'thread_has_comment_chain': 1, 'comment_has_chain': 1, 'thread_has_issue_chain': 1, 'issue_chain_has_comment_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'api_or_backend': 13, 'dependency_or_build': 11, 'source_or_other': 4, 'docs_or_claims': 3, 'ui_or_frontend': 3, 'data_schema': 3, 'claimed_resolved_unverified': 3, 'bug_fix': 2, 'thread_has_human_issue_and_fix_context': 2, 'issue_or_pull_request_thread': 1, 'mock_placeholder': 1, 'schema_or_data': 1, 'human_reported_issue_then_fix_attempt': 1}\nOutcomes: {'claimed_resolved_unverified': 6}\nQuality tiers: {'weak_supervision': 3}\nCI labels: {}\nCurriculum targets:\n- Train real-data plumbing and mock-removal tasks from source to UI.\n- Use as hard negatives for dashboards or apps claiming real runs without provenance.\nAssumption checks:\n- Is user-visible behavior backed by real storage/API/CI artifacts?\n- Are placeholders, sample data, or generated claims still in a production path?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/talent-x-app/talent-x", "source_id": "graph-query-motif_query-eb57ec51649cfdeb", "synthetic": false, "gold_label": "", "graph_label": "", "source_path": "/data/distillate/foundry_data/graph_queries/mock_as_real_or_placeholder/shard-0.jsonl", "bundle_label": "", "priority_band": "", "priority_score": 0, "repo_full_name": "talent-x-app/talent-x", "source_dataset": "graph_queries/mock_as_real_or_placeholder", "training_usage": "hard_negative"}}}, {"ruleId": "scanner-145ac604a27d1058", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 apps/api/prisma/seed.ts:160"}, "properties": {"repobilityId": "af65da84a66d15d9", "scanner": "scanner-primary", "fingerprint": "145ac604a27d1058", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-2529fade669de7d7", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 apps/api/perf/load-test.ts:163"}, "properties": {"repobilityId": "25acce22f54ac371", "scanner": "scanner-primary", "fingerprint": "2529fade669de7d7", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-e00a01b079d1f747", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 apps/api/perf/slo-check.ts:94"}, "properties": {"repobilityId": "011c69f8170c26ff", "scanner": "scanner-primary", "fingerprint": "e00a01b079d1f747", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"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-8e1a130379ced44c", "level": "error", "message": {"text": "Possible secret in apps/api/test/auth-rgpd.int-spec.ts"}, "properties": {"repobilityId": "44eac58152d52489", "scanner": "scanner-primary", "fingerprint": "8e1a130379ced44c", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/api/test/auth-rgpd.int-spec.ts"}, "region": {"startLine": 35}}}]}, {"ruleId": "scanner-8e1a130379ced44c", "level": "error", "message": {"text": "Possible secret in apps/api/test/auth-rgpd.int-spec.ts"}, "properties": {"repobilityId": "44eac58152d52489", "scanner": "scanner-primary", "fingerprint": "8e1a130379ced44c", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/api/test/auth-rgpd.int-spec.ts"}, "region": {"startLine": 137}}}]}, {"ruleId": "scanner-8e1a130379ced44c", "level": "error", "message": {"text": "Possible secret in apps/api/test/auth-rgpd.int-spec.ts"}, "properties": {"repobilityId": "44eac58152d52489", "scanner": "scanner-primary", "fingerprint": "8e1a130379ced44c", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/api/test/auth-rgpd.int-spec.ts"}, "region": {"startLine": 339}}}]}, {"ruleId": "scanner-8e1a130379ced44c", "level": "error", "message": {"text": "Possible secret in apps/api/test/auth-rgpd.int-spec.ts"}, "properties": {"repobilityId": "44eac58152d52489", "scanner": "scanner-primary", "fingerprint": "8e1a130379ced44c", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/api/test/auth-rgpd.int-spec.ts"}, "region": {"startLine": 366}}}]}, {"ruleId": "scanner-8e1a130379ced44c", "level": "error", "message": {"text": "Possible secret in apps/api/test/auth-rgpd.int-spec.ts"}, "properties": {"repobilityId": "44eac58152d52489", "scanner": "scanner-primary", "fingerprint": "8e1a130379ced44c", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/api/test/auth-rgpd.int-spec.ts"}, "region": {"startLine": 385}}}]}, {"ruleId": "scanner-862a57976f25e6c2", "level": "error", "message": {"text": "Possible secret in apps/api/test/critical-paths.int-spec.ts"}, "properties": {"repobilityId": "2967e1fe4b0c6fe7", "scanner": "scanner-primary", "fingerprint": "862a57976f25e6c2", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/api/test/critical-paths.int-spec.ts"}, "region": {"startLine": 27}}}]}, {"ruleId": "scanner-3732066af3d13d33", "level": "error", "message": {"text": "Possible secret in apps/api/test/app.e2e-spec.ts"}, "properties": {"repobilityId": "093229736e15d0f8", "scanner": "scanner-primary", "fingerprint": "3732066af3d13d33", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/api/test/app.e2e-spec.ts"}, "region": {"startLine": 121}}}]}, {"ruleId": "scanner-fd68259301a6d836", "level": "error", "message": {"text": "Possible secret in apps/api/test/session-brief.int-spec.ts"}, "properties": {"repobilityId": "2356a5c1bb6f163f", "scanner": "scanner-primary", "fingerprint": "fd68259301a6d836", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/api/test/session-brief.int-spec.ts"}, "region": {"startLine": 26}}}]}, {"ruleId": "scanner-da8667f046a10ca5", "level": "error", "message": {"text": "Possible secret in apps/api/src/config/env.validation.spec.ts"}, "properties": {"repobilityId": "2e9e1e31cfefba62", "scanner": "scanner-primary", "fingerprint": "da8667f046a10ca5", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/api/src/config/env.validation.spec.ts"}, "region": {"startLine": 100}}}]}, {"ruleId": "scanner-da8667f046a10ca5", "level": "error", "message": {"text": "Possible secret in apps/api/src/config/env.validation.spec.ts"}, "properties": {"repobilityId": "2e9e1e31cfefba62", "scanner": "scanner-primary", "fingerprint": "da8667f046a10ca5", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/api/src/config/env.validation.spec.ts"}, "region": {"startLine": 168}}}]}, {"ruleId": "scanner-da8667f046a10ca5", "level": "error", "message": {"text": "Possible secret in apps/api/src/config/env.validation.spec.ts"}, "properties": {"repobilityId": "2e9e1e31cfefba62", "scanner": "scanner-primary", "fingerprint": "da8667f046a10ca5", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/api/src/config/env.validation.spec.ts"}, "region": {"startLine": 214}}}]}, {"ruleId": "scanner-95611a698817b293", "level": "error", "message": {"text": "Insecure pattern 'private_key_in_repo' in apps/api/src/config/env.validation.spec.ts:100"}, "properties": {"repobilityId": "c369c3a624b9a143", "scanner": "scanner-primary", "fingerprint": "95611a698817b293", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["owasp", "private_key_in_repo"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/api/src/config/env.validation.spec.ts"}, "region": {"startLine": 100}}}]}, {"ruleId": "scanner-9416bdd2e2121d17", "level": "error", "message": {"text": "Possible secret in apps/api/src/auth/auth.service.spec.ts"}, "properties": {"repobilityId": "e9ffd8ed29f263b4", "scanner": "scanner-primary", "fingerprint": "9416bdd2e2121d17", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/api/src/auth/auth.service.spec.ts"}, "region": {"startLine": 12}}}]}, {"ruleId": "scanner-9416bdd2e2121d17", "level": "error", "message": {"text": "Possible secret in apps/api/src/auth/auth.service.spec.ts"}, "properties": {"repobilityId": "e9ffd8ed29f263b4", "scanner": "scanner-primary", "fingerprint": "9416bdd2e2121d17", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/api/src/auth/auth.service.spec.ts"}, "region": {"startLine": 377}}}]}, {"ruleId": "scanner-9416bdd2e2121d17", "level": "error", "message": {"text": "Possible secret in apps/api/src/auth/auth.service.spec.ts"}, "properties": {"repobilityId": "e9ffd8ed29f263b4", "scanner": "scanner-primary", "fingerprint": "9416bdd2e2121d17", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/api/src/auth/auth.service.spec.ts"}, "region": {"startLine": 401}}}]}, {"ruleId": "scanner-9416bdd2e2121d17", "level": "error", "message": {"text": "Possible secret in apps/api/src/auth/auth.service.spec.ts"}, "properties": {"repobilityId": "e9ffd8ed29f263b4", "scanner": "scanner-primary", "fingerprint": "9416bdd2e2121d17", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/api/src/auth/auth.service.spec.ts"}, "region": {"startLine": 416}}}]}, {"ruleId": "scanner-9416bdd2e2121d17", "level": "error", "message": {"text": "Possible secret in apps/api/src/auth/auth.service.spec.ts"}, "properties": {"repobilityId": "e9ffd8ed29f263b4", "scanner": "scanner-primary", "fingerprint": "9416bdd2e2121d17", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/api/src/auth/auth.service.spec.ts"}, "region": {"startLine": 425}}}]}, {"ruleId": "scanner-9416bdd2e2121d17", "level": "error", "message": {"text": "Possible secret in apps/api/src/auth/auth.service.spec.ts"}, "properties": {"repobilityId": "e9ffd8ed29f263b4", "scanner": "scanner-primary", "fingerprint": "9416bdd2e2121d17", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/api/src/auth/auth.service.spec.ts"}, "region": {"startLine": 432}}}]}, {"ruleId": "scanner-9416bdd2e2121d17", "level": "error", "message": {"text": "Possible secret in apps/api/src/auth/auth.service.spec.ts"}, "properties": {"repobilityId": "e9ffd8ed29f263b4", "scanner": "scanner-primary", "fingerprint": "9416bdd2e2121d17", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/api/src/auth/auth.service.spec.ts"}, "region": {"startLine": 440}}}]}, {"ruleId": "scanner-ac18f313bda432bf", "level": "error", "message": {"text": "Possible secret in apps/api/src/auth/auth.controller.spec.ts"}, "properties": {"repobilityId": "86474a59eafc99bd", "scanner": "scanner-primary", "fingerprint": "ac18f313bda432bf", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/api/src/auth/auth.controller.spec.ts"}, "region": {"startLine": 26}}}]}, {"ruleId": "scanner-ac18f313bda432bf", "level": "error", "message": {"text": "Possible secret in apps/api/src/auth/auth.controller.spec.ts"}, "properties": {"repobilityId": "86474a59eafc99bd", "scanner": "scanner-primary", "fingerprint": "ac18f313bda432bf", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/api/src/auth/auth.controller.spec.ts"}, "region": {"startLine": 50}}}]}, {"ruleId": "scanner-ac18f313bda432bf", "level": "error", "message": {"text": "Possible secret in apps/api/src/auth/auth.controller.spec.ts"}, "properties": {"repobilityId": "86474a59eafc99bd", "scanner": "scanner-primary", "fingerprint": "ac18f313bda432bf", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/api/src/auth/auth.controller.spec.ts"}, "region": {"startLine": 51}}}]}, {"ruleId": "scanner-a824f9d6c9e54d66", "level": "error", "message": {"text": "Possible secret in apps/api/src/common/logging/json-logger.spec.ts"}, "properties": {"repobilityId": "615249e43abbda4b", "scanner": "scanner-primary", "fingerprint": "a824f9d6c9e54d66", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/api/src/common/logging/json-logger.spec.ts"}, "region": {"startLine": 44}}}]}, {"ruleId": "scanner-28e29d4ea2dfb9c7", "level": "error", "message": {"text": "Possible secret in apps/api/src/jobs/push/push-config.spec.ts"}, "properties": {"repobilityId": "d69c4386d2d8e5c5", "scanner": "scanner-primary", "fingerprint": "28e29d4ea2dfb9c7", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/api/src/jobs/push/push-config.spec.ts"}, "region": {"startLine": 7}}}]}, {"ruleId": "scanner-28e29d4ea2dfb9c7", "level": "error", "message": {"text": "Possible secret in apps/api/src/jobs/push/push-config.spec.ts"}, "properties": {"repobilityId": "d69c4386d2d8e5c5", "scanner": "scanner-primary", "fingerprint": "28e29d4ea2dfb9c7", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/api/src/jobs/push/push-config.spec.ts"}, "region": {"startLine": 12}}}]}, {"ruleId": "scanner-d49259c9ee1bc7b6", "level": "error", "message": {"text": "Insecure pattern 'private_key_in_repo' in apps/api/src/jobs/push/push-config.spec.ts:7"}, "properties": {"repobilityId": "19b29dd03d2053e9", "scanner": "scanner-primary", "fingerprint": "d49259c9ee1bc7b6", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["owasp", "private_key_in_repo"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/api/src/jobs/push/push-config.spec.ts"}, "region": {"startLine": 7}}}]}, {"ruleId": "scanner-4343c7fcb48cfb83", "level": "error", "message": {"text": "Possible secret in scripts/seed-brief-demo.mjs"}, "properties": {"repobilityId": "6e5fbbecee7e7b31", "scanner": "scanner-primary", "fingerprint": "4343c7fcb48cfb83", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/seed-brief-demo.mjs"}, "region": {"startLine": 5}}}]}, {"ruleId": "scanner-e91b5f6977dca388", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in design/kitchen-sink.html:219"}, "properties": {"repobilityId": "59c9f9f245e7099f", "scanner": "scanner-primary", "fingerprint": "e91b5f6977dca388", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "design/kitchen-sink.html"}, "region": {"startLine": 219}}}]}, {"ruleId": "scanner-27924aa79fa4a517", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "ae16880318b99912", "scanner": "scanner-primary", "fingerprint": "27924aa79fa4a517", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/ci.yml"}, "region": {"startLine": 41}}}]}, {"ruleId": "scanner-27924aa79fa4a517", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "54597edb7f5bad38", "scanner": "scanner-primary", "fingerprint": "27924aa79fa4a517", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/ci.yml"}, "region": {"startLine": 44}}}]}, {"ruleId": "scanner-27924aa79fa4a517", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "989a74409a402368", "scanner": "scanner-primary", "fingerprint": "27924aa79fa4a517", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/ci.yml"}, "region": {"startLine": 47}}}]}, {"ruleId": "scanner-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-6ce43da41da3798b", "level": "note", "message": {"text": "Very large file: apps/api/test/critical-paths.int-spec.ts (1227 lines)"}, "properties": {"repobilityId": "a95d9ee22d3476dd", "scanner": "scanner-primary", "fingerprint": "6ce43da41da3798b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-340daa03f8408829", "level": "note", "message": {"text": "Very large file: apps/mobile/src/coach/session-builder-ui.tsx (1379 lines)"}, "properties": {"repobilityId": "cf513a6ec4fa1a5a", "scanner": "scanner-primary", "fingerprint": "340daa03f8408829", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-3140ba83e394418c", "level": "note", "message": {"text": "Very large file: design/_ds_bundle.js (3458 lines)"}, "properties": {"repobilityId": "da52b37f20ac4c54", "scanner": "scanner-primary", "fingerprint": "3140ba83e394418c", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-9f6eaab274ecf23c", "level": "note", "message": {"text": "Very large file: packages/api-client/src/generated/talent-x.ts (5198 lines)"}, "properties": {"repobilityId": "a763d67210216c01", "scanner": "scanner-primary", "fingerprint": "9f6eaab274ecf23c", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-ea3b5e389d8c9c0f", "level": "note", "message": {"text": "Low test-to-source ratio"}, "properties": {"repobilityId": "ef7b2552cc00a375", "scanner": "scanner-primary", "fingerprint": "ea3b5e389d8c9c0f", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["tests"]}}, {"ruleId": "scanner-141b30a41e03817b", "level": "note", "message": {"text": "No license file detected"}, "properties": {"repobilityId": "cd4f85af073f9660", "scanner": "scanner-primary", "fingerprint": "141b30a41e03817b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["license", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-b06b8d86f24c77f9", "level": "note", "message": {"text": "Node manifest has dependencies but no lockfile: apps/api/package.json"}, "properties": {"repobilityId": "ce77cd34ed0306d4", "scanner": "scanner-primary", "fingerprint": "b06b8d86f24c77f9", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["dependency", "lockfile", "reproducibility", "generated-repo-pattern"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/api/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-d0c2205560692580", "level": "note", "message": {"text": "Node manifest has dependencies but no lockfile: apps/mobile/package.json"}, "properties": {"repobilityId": "b3dfed7bb3d70ed3", "scanner": "scanner-primary", "fingerprint": "d0c2205560692580", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["dependency", "lockfile", "reproducibility", "generated-repo-pattern"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/mobile/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-892d4f964c9036e2", "level": "note", "message": {"text": "Node manifest has dependencies but no lockfile: packages/api-client/package.json"}, "properties": {"repobilityId": "e1c2e42c288c295a", "scanner": "scanner-primary", "fingerprint": "892d4f964c9036e2", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["dependency", "lockfile", "reproducibility", "generated-repo-pattern"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/api-client/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-bcfee846e2ec548b", "level": "note", "message": {"text": "Node manifest has dependencies but no lockfile: packages/design-tokens/package.json"}, "properties": {"repobilityId": "e14fd044e4f21085", "scanner": "scanner-primary", "fingerprint": "bcfee846e2ec548b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["dependency", "lockfile", "reproducibility", "generated-repo-pattern"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/design-tokens/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-3ab5d313dda8e5f9", "level": "note", "message": {"text": "Debug logging residue appears in source files"}, "properties": {"repobilityId": "f063c5d029f63229", "scanner": "scanner-primary", "fingerprint": "3ab5d313dda8e5f9", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["debug", "cleanup", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-72b2a6250083a784", "level": "warning", "message": {"text": "Placeholder or mock-heavy implementation detected"}, "properties": {"repobilityId": "ff424008fd464d5b", "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": "11f833ca9e957517", "scanner": "scanner-primary", "fingerprint": "2d0c7b7ab8f8aacf", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["placeholder", "mock-data", "critical-flow", "generated-repo-pattern"]}}, {"ruleId": "scanner-b9088664ace7f748", "level": "note", "message": {"text": "Composite production-readiness gap"}, "properties": {"repobilityId": "34aa406e4e32d38f", "scanner": "scanner-primary", "fingerprint": "b9088664ace7f748", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["production-readiness", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-749d4bc1bd66df5f", "level": "warning", "message": {"text": "Agent instructions exist but release-hardening basics are missing"}, "properties": {"repobilityId": "b3d51edc6df1630d", "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": "c3262a743763168e", "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": "e3b36dafd1ece66a", "scanner": "scanner-primary", "fingerprint": "8424db9c75e04ba4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["provenance", "git-history", "generated-repo-pattern"]}}, {"ruleId": "scanner-3955bf012deac307", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/api/test/critical-paths.int-spec.ts:1124"}, "properties": {"repobilityId": "3d275487d25fc0aa", "scanner": "scanner-primary", "fingerprint": "3955bf012deac307", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ad7d8be32b35ce74", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/api/perf/slo-check.ts:78"}, "properties": {"repobilityId": "509f6c8d1712b180", "scanner": "scanner-primary", "fingerprint": "ad7d8be32b35ce74", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-581214cc885e3c4a", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/api/src/main.ts:21"}, "properties": {"repobilityId": "2b592ec92f736ac8", "scanner": "scanner-primary", "fingerprint": "581214cc885e3c4a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-475b9e1f87f90b59", "level": "none", "message": {"text": "Commented-code block (6 lines) in apps/api/src/auth/auth.module.ts:19"}, "properties": {"repobilityId": "59aa94f9da2c81ca", "scanner": "scanner-primary", "fingerprint": "475b9e1f87f90b59", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-26df2c947be5a16d", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/api/src/jobs/mail/email-provider.factory.ts:31"}, "properties": {"repobilityId": "8954cccba21c398a", "scanner": "scanner-primary", "fingerprint": "26df2c947be5a16d", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-5f05480e4a38d94e", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/api/src/jobs/push/push-provider.factory.ts:47"}, "properties": {"repobilityId": "af9336ef266b271f", "scanner": "scanner-primary", "fingerprint": "5f05480e4a38d94e", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-f2a21a12d447f321", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/mobile/metro.config.js:1"}, "properties": {"repobilityId": "b3165319f7c221ea", "scanner": "scanner-primary", "fingerprint": "f2a21a12d447f321", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c6e0efda885bd3f3", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/seed-brief-demo.mjs:13"}, "properties": {"repobilityId": "0f45398c94b7e7de", "scanner": "scanner-primary", "fingerprint": "c6e0efda885bd3f3", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-737f517e738cfb63", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/api-client/src/mutator/custom-fetch.ts:61"}, "properties": {"repobilityId": "f73a57037cc6864d", "scanner": "scanner-primary", "fingerprint": "737f517e738cfb63", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-5fa5af25316da646", "level": "note", "message": {"text": "16 env vars used in code but missing from .env.example"}, "properties": {"repobilityId": "e0919a3f6a45e8c2", "scanner": "scanner-primary", "fingerprint": "5fa5af25316da646", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "config-drift"]}}, {"ruleId": "scanner-a8b657222dd85be2", "level": "note", "message": {"text": "Unused endpoint: GET /users/me"}, "properties": {"repobilityId": "198dadc2a04a35f0", "scanner": "scanner-primary", "fingerprint": "a8b657222dd85be2", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-c3025bc63d970d29", "level": "note", "message": {"text": "Unused endpoint: PUT /users/me"}, "properties": {"repobilityId": "1b1db12db5d64836", "scanner": "scanner-primary", "fingerprint": "c3025bc63d970d29", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-a69d2c55f1155d84", "level": "note", "message": {"text": "Unused endpoint: DELETE /users/me"}, "properties": {"repobilityId": "b751637c8d6041fe", "scanner": "scanner-primary", "fingerprint": "a69d2c55f1155d84", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-1c73043a10ed0ab8", "level": "note", "message": {"text": "Unused endpoint: POST /users/me/avatar"}, "properties": {"repobilityId": "3b36d55ede9098e4", "scanner": "scanner-primary", "fingerprint": "1c73043a10ed0ab8", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-60bc5c330890659a", "level": "note", "message": {"text": "Unused endpoint: PUT /users/me/avatar"}, "properties": {"repobilityId": "806189255f59f74f", "scanner": "scanner-primary", "fingerprint": "60bc5c330890659a", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-872cf607ca2e6d82", "level": "note", "message": {"text": "Unused endpoint: DELETE /users/me/avatar"}, "properties": {"repobilityId": "e6afabfb68406970", "scanner": "scanner-primary", "fingerprint": "872cf607ca2e6d82", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-93e95eec8f4f9491", "level": "note", "message": {"text": "Unused endpoint: GET /users/me/consents"}, "properties": {"repobilityId": "a10fc5b3cf792f8b", "scanner": "scanner-primary", "fingerprint": "93e95eec8f4f9491", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-d9c605f1576d03a2", "level": "note", "message": {"text": "Unused endpoint: PUT /users/me/consents"}, "properties": {"repobilityId": "f73453e36548d0d8", "scanner": "scanner-primary", "fingerprint": "d9c605f1576d03a2", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-18f65cd223b20058", "level": "note", "message": {"text": "Unused endpoint: POST /users/me/export"}, "properties": {"repobilityId": "06aebe977d1b43bf", "scanner": "scanner-primary", "fingerprint": "18f65cd223b20058", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-46d6f38fbcb9f8cd", "level": "note", "message": {"text": "Unused endpoint: GET /users/me/export/:jobId"}, "properties": {"repobilityId": "0478bfe78d796e74", "scanner": "scanner-primary", "fingerprint": "46d6f38fbcb9f8cd", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-1b93f5ab485027b7", "level": "note", "message": {"text": "Unused endpoint: POST /notifications/read-all"}, "properties": {"repobilityId": "03d1b6fb05ee1eb0", "scanner": "scanner-primary", "fingerprint": "1b93f5ab485027b7", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-c9f9ed11b9b118bc", "level": "note", "message": {"text": "Unused endpoint: POST /notifications/devices"}, "properties": {"repobilityId": "c9ae4cbeeca6a821", "scanner": "scanner-primary", "fingerprint": "c9f9ed11b9b118bc", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-3d66d296a919b1b8", "level": "note", "message": {"text": "Unused endpoint: DELETE /notifications/devices/:id"}, "properties": {"repobilityId": "e724a448985c4f10", "scanner": "scanner-primary", "fingerprint": "3d66d296a919b1b8", "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": "1b3f9cc7940c2da6", "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": "5dda33445e69f599", "scanner": "scanner-primary", "fingerprint": "c572df6645eb8b5a", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-18ee05fea4e063ff", "level": "note", "message": {"text": "Unused endpoint: GET /competitions/:id"}, "properties": {"repobilityId": "ae1b371cc100826d", "scanner": "scanner-primary", "fingerprint": "18ee05fea4e063ff", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-16a96a4fa585e3fd", "level": "note", "message": {"text": "Unused endpoint: PUT /competitions/:id"}, "properties": {"repobilityId": "b5b199872409c375", "scanner": "scanner-primary", "fingerprint": "16a96a4fa585e3fd", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-4cec06c346028fc5", "level": "note", "message": {"text": "Unused endpoint: DELETE /competitions/:id"}, "properties": {"repobilityId": "7961dd3f90017827", "scanner": "scanner-primary", "fingerprint": "4cec06c346028fc5", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-702c97a030887845", "level": "note", "message": {"text": "Unused endpoint: POST /competitions/:id/entries"}, "properties": {"repobilityId": "11f6da035042bba6", "scanner": "scanner-primary", "fingerprint": "702c97a030887845", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-d1246628e3e8ab95", "level": "note", "message": {"text": "Unused endpoint: GET /competitions/:id/entries"}, "properties": {"repobilityId": "bdea1610f1a6963d", "scanner": "scanner-primary", "fingerprint": "d1246628e3e8ab95", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-eef68e0e4a9d686e", "level": "note", "message": {"text": "Unused endpoint: DELETE /competitions/:id/entries/:entryId"}, "properties": {"repobilityId": "6c7b2baa3d91c462", "scanner": "scanner-primary", "fingerprint": "eef68e0e4a9d686e", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-8292c0931391749a", "level": "note", "message": {"text": "Unused endpoint: POST /auth/register"}, "properties": {"repobilityId": "8aec7980f0bdfa90", "scanner": "scanner-primary", "fingerprint": "8292c0931391749a", "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": "16b9a3e3838bb882", "scanner": "scanner-primary", "fingerprint": "8fdbacfe9430a6ed", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-b36892106ecdc9aa", "level": "note", "message": {"text": "Unused endpoint: POST /auth/refresh"}, "properties": {"repobilityId": "61ada01ae0a00ed9", "scanner": "scanner-primary", "fingerprint": "b36892106ecdc9aa", "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": "c47be1acb52764d4", "scanner": "scanner-primary", "fingerprint": "c059f57186114027", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-7472fafa02ed7ad5", "level": "note", "message": {"text": "Unused endpoint: POST /auth/logout-all"}, "properties": {"repobilityId": "f5a7e7b1dc579bdf", "scanner": "scanner-primary", "fingerprint": "7472fafa02ed7ad5", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-e2fe5b92648ca462", "level": "note", "message": {"text": "Unused endpoint: POST /auth/forgot-password"}, "properties": {"repobilityId": "f25686ad1feec886", "scanner": "scanner-primary", "fingerprint": "e2fe5b92648ca462", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-deb8df763a50c73a", "level": "note", "message": {"text": "Unused endpoint: POST /auth/reset-password"}, "properties": {"repobilityId": "e8a9a1955ae051f5", "scanner": "scanner-primary", "fingerprint": "deb8df763a50c73a", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-59cb6e2c914d4369", "level": "note", "message": {"text": "Unused endpoint: POST /auth/2fa/enable"}, "properties": {"repobilityId": "842c81b141a26809", "scanner": "scanner-primary", "fingerprint": "59cb6e2c914d4369", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-c1623a898f6e649f", "level": "note", "message": {"text": "Unused endpoint: POST /auth/2fa/verify"}, "properties": {"repobilityId": "2a6ba8f118257221", "scanner": "scanner-primary", "fingerprint": "c1623a898f6e649f", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-59fc96a44decafe2", "level": "note", "message": {"text": "Unused endpoint: POST /groups/join"}, "properties": {"repobilityId": "76e0ca83399cbb30", "scanner": "scanner-primary", "fingerprint": "59fc96a44decafe2", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-1393f1ba9264c119", "level": "note", "message": {"text": "Unused endpoint: GET /groups/mine"}, "properties": {"repobilityId": "1d373e16e3132fdb", "scanner": "scanner-primary", "fingerprint": "1393f1ba9264c119", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-40c6b3f0de47c35f", "level": "note", "message": {"text": "Unused endpoint: GET /groups/:id/teammates"}, "properties": {"repobilityId": "035f41043f53e79b", "scanner": "scanner-primary", "fingerprint": "40c6b3f0de47c35f", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-86f4ce9131125e3a", "level": "note", "message": {"text": "Unused endpoint: GET /groups/:id"}, "properties": {"repobilityId": "12e8c4c7bbb6852a", "scanner": "scanner-primary", "fingerprint": "86f4ce9131125e3a", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-087cb9538004e96d", "level": "note", "message": {"text": "Unused endpoint: PUT /groups/:id"}, "properties": {"repobilityId": "576badc76444a010", "scanner": "scanner-primary", "fingerprint": "087cb9538004e96d", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-3d1feb620ea32b3f", "level": "note", "message": {"text": "Unused endpoint: DELETE /groups/:id"}, "properties": {"repobilityId": "60351d7da95573dd", "scanner": "scanner-primary", "fingerprint": "3d1feb620ea32b3f", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-ee099723ea2e2753", "level": "note", "message": {"text": "Unused endpoint: GET /groups/:id/members"}, "properties": {"repobilityId": "1ab93b449498a9a5", "scanner": "scanner-primary", "fingerprint": "ee099723ea2e2753", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-ef9bcace2186cc90", "level": "note", "message": {"text": "Unused endpoint: DELETE /groups/:id/members/:athleteId"}, "properties": {"repobilityId": "83c70a5413703d09", "scanner": "scanner-primary", "fingerprint": "ef9bcace2186cc90", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-b45aa8d04cafd374", "level": "note", "message": {"text": "Unused endpoint: POST /groups/:id/invite-code"}, "properties": {"repobilityId": "71fc412e32779444", "scanner": "scanner-primary", "fingerprint": "b45aa8d04cafd374", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-6aa2817af2a92a37", "level": "note", "message": {"text": "Unused endpoint: POST /groups/:id/leave"}, "properties": {"repobilityId": "7d297b1802b769e0", "scanner": "scanner-primary", "fingerprint": "6aa2817af2a92a37", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-705591b11ba78b85", "level": "note", "message": {"text": "Unused endpoint: GET /sessions/:id"}, "properties": {"repobilityId": "87e1f383b3d1f6ce", "scanner": "scanner-primary", "fingerprint": "705591b11ba78b85", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-37399d829f3ec7bf", "level": "note", "message": {"text": "Unused endpoint: PUT /sessions/:id"}, "properties": {"repobilityId": "685ded6aee878cb3", "scanner": "scanner-primary", "fingerprint": "37399d829f3ec7bf", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-da3556d0f0fab24f", "level": "note", "message": {"text": "Unused endpoint: DELETE /sessions/:id"}, "properties": {"repobilityId": "d1feb0f5f4b33b98", "scanner": "scanner-primary", "fingerprint": "da3556d0f0fab24f", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-efa408115950c9cc", "level": "note", "message": {"text": "Unused endpoint: POST /sessions/:id/duplicate"}, "properties": {"repobilityId": "f75399414a38ac8d", "scanner": "scanner-primary", "fingerprint": "efa408115950c9cc", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-b0b9f9a0f1486883", "level": "note", "message": {"text": "Unused endpoint: POST /sessions/:id/archive"}, "properties": {"repobilityId": "b3624a7b59e93733", "scanner": "scanner-primary", "fingerprint": "b0b9f9a0f1486883", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-598c5e41cc08eab1", "level": "note", "message": {"text": "Unused endpoint: POST /sessions/:id/assign"}, "properties": {"repobilityId": "0ffec947bce6d06a", "scanner": "scanner-primary", "fingerprint": "598c5e41cc08eab1", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-8550c8a4e100a20d", "level": "note", "message": {"text": "Unused endpoint: DELETE /sessions/:id/assign/groups/:groupId"}, "properties": {"repobilityId": "20b9c3df52beb687", "scanner": "scanner-primary", "fingerprint": "8550c8a4e100a20d", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-9107c3e5858e22b6", "level": "note", "message": {"text": "Unused endpoint: GET /athletes/me/progress"}, "properties": {"repobilityId": "4f8b11db0862828d", "scanner": "scanner-primary", "fingerprint": "9107c3e5858e22b6", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-6880be818e8ec2a6", "level": "note", "message": {"text": "Unused endpoint: GET /athletes/me/records"}, "properties": {"repobilityId": "d1ae58c3a060cd1f", "scanner": "scanner-primary", "fingerprint": "6880be818e8ec2a6", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-2d58eb2328cbc72a", "level": "note", "message": {"text": "Unused endpoint: POST /athletes/me/records"}, "properties": {"repobilityId": "c12c68f2d7fab681", "scanner": "scanner-primary", "fingerprint": "2d58eb2328cbc72a", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}]}]}