{"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: suksomsri7/siamdive", "shortDescription": {"text": "Foundry mined unresolved feedback: suksomsri7/siamdive"}, "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: weak_supervision_needs_review\nRepo: suksomsri7/siamdive\nThread: suksomsri7/siamdive#9\nEvidence:\nGraph motif: Human feedback exists without a linked fix\nMotif id: unlinked_feedback_needs_evidence\nPolarity: bad\nTraining usage: negative_or_unresolved\nSeverity: medium\nRepo: suksomsri7/siamdive\nThread: suksomsri7/siamdive#9\nGraph gold label: weak_supervision_needs_review\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: suksomsri7/siamdive#9\nRepo: suksomsri7/siamdive\nIssue/PR number: 9\nGraph consistency label: weak_supervision_needs_review\nNodes: 17\nEdges: 24\nNode types: {'commit': 4, 'link_quality': 4, 'comment': 2, 'comment_chain': 2, 'thread': 1, 'repo': 1, 'pr_file': 1, 'issue_chain"}, "properties": {"scanner": "foundry_dataset", "category": "practices", "severity": "medium", "confidence": 0.7, "cwe": "", "owasp": ""}}, {"id": "foundry_blueprint_gap", "name": "Foundry mined blueprint gap alignment: suksomsri7/siamdive", "shortDescription": {"text": "Foundry mined blueprint gap alignment: suksomsri7/siamdive"}, "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: suksomsri7/siamdive\nThread: suksomsri7/siamdive#8\nEvidence:\nGraph motif: Human feedback aligns with blueprint or architecture gaps\nMotif id: blueprint_gap_alignment\nPolarity: mixed\nTraining usage: curriculum_gap\nSeverity: medium\nRepo: suksomsri7/siamdive\nThread: suksomsri7/siamdive#8\nGraph gold label: weak_supervision_needs_review\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: suksomsri7/siamdive#8\nRepo: suksomsri7/siamdive\nIssue/PR number: 8\nGraph consistency label: weak_supervision_needs_review\nNodes: 24\nEdges: 47\nNode types: {'pr_file': 6, 'link_quality': 5, 'commit': 3, 'comment': 2, 'comment_chain': 2, 'thread': 1, 'repo': 1, 'issue_c"}, "properties": {"scanner": "foundry_dataset", "category": "tech_debt", "severity": "medium", "confidence": 0.7, "cwe": "", "owasp": ""}}, {"id": "foundry_assumption_check", "name": "Foundry mined assumption checks: suksomsri7/siamdive", "shortDescription": {"text": "Foundry mined assumption checks: suksomsri7/siamdive"}, "fullDescription": {"text": "Comment chain pattern product: assumption_checks\nRepo: suksomsri7/siamdive\nThread: suksomsri7/siamdive#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: suksomsri7/siamdive#9\nRepo: suksomsri7/siamdive\nThread label: thread_has_human_issue_and_fix_context\nOutcome: claimed_resolved_unverified\nComment count: 2\nLinked commit count: 4\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 1\nLabels: {'agent_instruction_gap': 1, 'deployment_env_gap': 1}\nPolarities: {'bad': 2}\nChanged file labels: {'api_or_backend': 1}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-1cf663947466fd88\",\n    \"kind\": \"pull_request_body\",\n    \"label\": \"agent_instruction_gap\",\n    \"polarity\""}, "properties": {"scanner": "foundry_dataset", "category": "practices", "severity": "medium", "confidence": 0.62, "cwe": "", "owasp": ""}}, {"id": "foundry_docs_only_fix", "name": "Foundry mined docs only runtime fix: suksomsri7/siamdive", "shortDescription": {"text": "Foundry mined docs only runtime fix: suksomsri7/siamdive"}, "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: weak_supervision_needs_review\nRepo: suksomsri7/siamdive\nThread: suksomsri7/siamdive#5\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: suksomsri7/siamdive\nThread: suksomsri7/siamdive#5\nGraph gold label: weak_supervision_needs_review\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: suksomsri7/siamdive#5\nRepo: suksomsri7/siamdive\nIssue/PR number: 5\nGraph consistency label: weak_supervision_needs_review\nNodes: 19\nEdges: 30\nNode types: {'link_quality': 5, 'comment': 2, 'pr_file': 2, 'comment_chain': 2, 'commit': 2, 'thread': 1, 'repo': 1, 'issue_chain': 1, '"}, "properties": {"scanner": "foundry_dataset", "category": "practices", "severity": "high", "confidence": 0.8, "cwe": "", "owasp": ""}}, {"id": "foundry_schema_ui_api_gap", "name": "Foundry mined schema ui api mismatch: suksomsri7/siamdive", "shortDescription": {"text": "Foundry mined schema ui api mismatch: suksomsri7/siamdive"}, "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: suksomsri7/siamdive\nThread: suksomsri7/siamdive#7\nEvidence:\nGraph motif: Schema, UI, and API evidence do not line up\nMotif id: schema_ui_api_mismatch\nPolarity: bad\nTraining usage: assumption_check\nSeverity: high\nRepo: suksomsri7/siamdive\nThread: suksomsri7/siamdive#7\nGraph gold label: weak_supervision_needs_review\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: suksomsri7/siamdive#7\nRepo: suksomsri7/siamdive\nIssue/PR number: 7\nGraph consistency label: weak_supervision_needs_review\nNodes: 24\nEdges: 41\nNode types: {'commit': 5, 'link_quality': 5, 'pr_file': 4, 'comment': 2, 'comment_chain': 2, 'thread': 1, 'repo': 1, 'issue_chain': 1, 'fix_outcome': 1, 'alignment': 1, 'blueprint"}, "properties": {"scanner": "foundry_dataset", "category": "quality", "severity": "high", "confidence": 0.76, "cwe": "", "owasp": ""}}, {"id": "foundry_auth_guardrail_gap", "name": "Foundry mined security auth guardrail gaps: suksomsri7/siamdive", "shortDescription": {"text": "Foundry mined security auth guardrail gaps: suksomsri7/siamdive"}, "fullDescription": {"text": "Graph query export: Security/auth changes without enough guardrails\nQuery id: security_auth_guardrail_gaps\nQuery type: motif_query\nIntent: Assumption-check security/auth examples requiring stronger tests or CI.\nMotif: security_auth_without_guardrails\nTraining usage: assumption_check\nGraph gold label: weak_supervision_needs_review\nRepo: suksomsri7/siamdive\nThread: suksomsri7/siamdive#6\nEvidence:\nGraph motif: Security/auth change without enough guardrails\nMotif id: security_auth_without_guardrails\nPolarity: bad\nTraining usage: assumption_check\nSeverity: critical\nRepo: suksomsri7/siamdive\nThread: suksomsri7/siamdive#6\nGraph gold label: weak_supervision_needs_review\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: suksomsri7/siamdive#6\nRepo: suksomsri7/siamdive\nIssue/PR number: 6\nGraph consistency label: weak_supervision_needs_review\nNodes: 19\nEdges: 32\nNode types: {'commit': 4, 'link_quality': 4, 'pr_file': 3, 'comment': 2, 'comment_chain': 2, 'thread': 1, 'repo': 1, 'issu"}, "properties": {"scanner": "foundry_dataset", "category": "auth", "severity": "critical", "confidence": 0.78, "cwe": "", "owasp": ""}}, {"id": "scanner-bead75b0f9233e05", "name": "No API endpoints detected", "shortDescription": {"text": "No API endpoints detected"}, "fullDescription": {"text": "The scanner did not find FastAPI/Flask/Express/NestJS/GraphQL/gRPC routes. If this repo exposes APIs, the framework may be unsupported."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "info", "confidence": 1.0}}, {"id": "scanner-c0353d255e08f5cf", "name": "Stray `console.log` in TS/JS \u2014 scripts/set-og-from-covers.ts:44", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/set-og-from-covers.ts:44"}, "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-9d558e7dd8760e0a", "name": "Stray `console.log` in TS/JS \u2014 scripts/seed-blog-topics.ts:148", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/seed-blog-topics.ts:148"}, "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-3f8ba4c5b0d0f436", "name": "Stray `console.log` in TS/JS \u2014 scripts/seed-countries.ts:72", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/seed-countries.ts:72"}, "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-558430798707b53c", "name": "Stray `console.log` in TS/JS \u2014 scripts/batch-publish.ts:46", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/batch-publish.ts:46"}, "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-b362dcd1b77f662f", "name": "Stray `console.log` in TS/JS \u2014 scripts/fix-schedule-dates.ts:139", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/fix-schedule-dates.ts:139"}, "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-bce0768e4b82adf9", "name": "Stray `console.log` in TS/JS \u2014 scripts/regenerate-draft-prompts.ts:17", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/regenerate-draft-prompts.ts:17"}, "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-9f4f0a775b4e0d39", "name": "Stray `console.log` in TS/JS \u2014 scripts/migrate-service-areas-to-thailand.ts:20", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/migrate-service-areas-to-thailand.ts:20"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-4607d5c2957a5883", "name": "Stray `console.log` in TS/JS \u2014 prisma/seed-issara-translations.ts:3827", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 prisma/seed-issara-translations.ts:3827"}, "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-5abdc60d25744e57", "name": "Stray `console.log` in TS/JS \u2014 prisma/seed-issara-sample-content.ts:578", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 prisma/seed-issara-sample-content.ts:578"}, "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-c3d14421b5c1e5b5", "name": "Stray `console.log` in TS/JS \u2014 prisma/seed-fix-thai-dates.ts:50", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 prisma/seed-fix-thai-dates.ts:50"}, "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-0ae325e5287cd813", "name": "Stray `console.log` in TS/JS \u2014 prisma/seed-aquarian-schedules.ts:166", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 prisma/seed-aquarian-schedules.ts:166"}, "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-b20d7dac7691c49f", "name": "Stray `console.log` in TS/JS \u2014 prisma/seed.ts:8", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 prisma/seed.ts:8"}, "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-62aef64c72e60b9e", "name": "Stray `console.log` in TS/JS \u2014 prisma/seed-aquarian-north-south-content.ts:104", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 prisma/seed-aquarian-north-south-content.ts:104"}, "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-ce1e02db5a92458e", "name": "Stray `console.log` in TS/JS \u2014 prisma/seed-fix-and-dates.ts:361", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 prisma/seed-fix-and-dates.ts:361"}, "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-1f7ea05a099056dc", "name": "Stray `console.log` in TS/JS \u2014 prisma/seed-issara-apply-all.ts:68", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 prisma/seed-issara-apply-all.ts:68"}, "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-3f8f2e4bb4c7500a", "name": "Stray `console.log` in TS/JS \u2014 prisma/seed-translate-all.ts:526", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 prisma/seed-translate-all.ts:526"}, "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-ed04f715ff1b698a", "name": "Stray `console.log` in TS/JS \u2014 prisma/seed-issara-schedules.ts:124", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 prisma/seed-issara-schedules.ts:124"}, "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-e0c57038d14857ff", "name": "Stray `console.log` in TS/JS \u2014 prisma/seed-clean-dates.ts:143", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 prisma/seed-clean-dates.ts:143"}, "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-6548bf27981d07df", "name": "Stray `console.log` in TS/JS \u2014 prisma/seed-final-fix.ts:68", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 prisma/seed-final-fix.ts:68"}, "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-fe1bce754faf7ce2", "name": "Stray `console.log` in TS/JS \u2014 prisma/fix-issara-itinerary-dates.ts:37", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 prisma/fix-issara-itinerary-dates.ts:37"}, "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-5b95b8f5276c3f86", "name": "Stray `console.log` in TS/JS \u2014 prisma/seed-add-checkout.ts:207", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 prisma/seed-add-checkout.ts:207"}, "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-36f652905654f81d", "name": "Stray `console.log` in TS/JS \u2014 prisma/seed-aquarian-3samples.ts:81", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 prisma/seed-aquarian-3samples.ts:81"}, "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-128290574c2245d8", "name": "Stray `console.log` in TS/JS \u2014 public/tools/siamdive-mj-bridge.user.js:196", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 public/tools/siamdive-mj-bridge.user.js:196"}, "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-0feda4cf5f7ac894", "name": "Icon-only button without accessible name \u2014 src/components/TripPullUp.tsx:131", "shortDescription": {"text": "Icon-only button without accessible name \u2014 src/components/TripPullUp.tsx:131"}, "fullDescription": {"text": "A `<button>` whose only child is a single glyph or symbol needs `title=` or `aria-label=` so screen readers (and tooltips on hover) work.\n\nWhy: P3 in CHECKLIST.md \u2014 icon-only buttons skipped a title.\nRule id: fq.button.no-label"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-de4f34f77eea5aa6", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 src/components/TripPullUp.tsx:907", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/components/TripPullUp.tsx:907"}, "fullDescription": {"text": "Open XSS surface unless the input is provably trusted. Replace with explicit JSX or sanitize via a vetted library.\n\nWhy: OWASP basics. Already partially flagged by the security analyzer.\nRule id: fq.dangerous-html"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-d36563864f1f69e9", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 src/components/ScheduleFullDetails.tsx:70", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/components/ScheduleFullDetails.tsx:70"}, "fullDescription": {"text": "Open XSS surface unless the input is provably trusted. Replace with explicit JSX or sanitize via a vetted library.\n\nWhy: OWASP basics. Already partially flagged by the security analyzer.\nRule id: fq.dangerous-html"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-f9a4677961ef9ad2", "name": "Icon-only button without accessible name \u2014 src/components/PhotoEditor/PhotoEditor.tsx:416", "shortDescription": {"text": "Icon-only button without accessible name \u2014 src/components/PhotoEditor/PhotoEditor.tsx:416"}, "fullDescription": {"text": "A `<button>` whose only child is a single glyph or symbol needs `title=` or `aria-label=` so screen readers (and tooltips on hover) work.\n\nWhy: P3 in CHECKLIST.md \u2014 icon-only buttons skipped a title.\nRule id: fq.button.no-label"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-53993f4eec587df7", "name": "Stray `console.log` in TS/JS \u2014 src/components/PhotoEditor/PhotoEditor.tsx:351", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 src/components/PhotoEditor/PhotoEditor.tsx:351"}, "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-f0f0fd690e38e033", "name": "Icon-only button without accessible name \u2014 src/components/social/ShareDrawer.tsx:213", "shortDescription": {"text": "Icon-only button without accessible name \u2014 src/components/social/ShareDrawer.tsx:213"}, "fullDescription": {"text": "A `<button>` whose only child is a single glyph or symbol needs `title=` or `aria-label=` so screen readers (and tooltips on hover) work.\n\nWhy: P3 in CHECKLIST.md \u2014 icon-only buttons skipped a title.\nRule id: fq.button.no-label"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-1bf249f0447e4183", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 src/components/backoffice/TripForm.tsx:237", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/components/backoffice/TripForm.tsx:237"}, "fullDescription": {"text": "Open XSS surface unless the input is provably trusted. Replace with explicit JSX or sanitize via a vetted library.\n\nWhy: OWASP basics. Already partially flagged by the security analyzer.\nRule id: fq.dangerous-html"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-c184618333a53c86", "name": "Icon-only button without accessible name \u2014 src/components/backoffice/OptionsPanel.tsx:87", "shortDescription": {"text": "Icon-only button without accessible name \u2014 src/components/backoffice/OptionsPanel.tsx:87"}, "fullDescription": {"text": "A `<button>` whose only child is a single glyph or symbol needs `title=` or `aria-label=` so screen readers (and tooltips on hover) work.\n\nWhy: P3 in CHECKLIST.md \u2014 icon-only buttons skipped a title.\nRule id: fq.button.no-label"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-00eb7ebe6311a3df", "name": "Icon-only button without accessible name \u2014 src/components/backoffice/PackagePanel.tsx:205", "shortDescription": {"text": "Icon-only button without accessible name \u2014 src/components/backoffice/PackagePanel.tsx:205"}, "fullDescription": {"text": "A `<button>` whose only child is a single glyph or symbol needs `title=` or `aria-label=` so screen readers (and tooltips on hover) work.\n\nWhy: P3 in CHECKLIST.md \u2014 icon-only buttons skipped a title.\nRule id: fq.button.no-label"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-06a8291772d23c54", "name": "Icon-only button without accessible name \u2014 src/components/backoffice/LiveaboardManager.tsx:373", "shortDescription": {"text": "Icon-only button without accessible name \u2014 src/components/backoffice/LiveaboardManager.tsx:373"}, "fullDescription": {"text": "A `<button>` whose only child is a single glyph or symbol needs `title=` or `aria-label=` so screen readers (and tooltips on hover) work.\n\nWhy: P3 in CHECKLIST.md \u2014 icon-only buttons skipped a title.\nRule id: fq.button.no-label"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-4c926a3e60a90455", "name": "Icon-only button without accessible name \u2014 src/components/backoffice/PackageOptionsPicker.tsx:46", "shortDescription": {"text": "Icon-only button without accessible name \u2014 src/components/backoffice/PackageOptionsPicker.tsx:46"}, "fullDescription": {"text": "A `<button>` whose only child is a single glyph or symbol needs `title=` or `aria-label=` so screen readers (and tooltips on hover) work.\n\nWhy: P3 in CHECKLIST.md \u2014 icon-only buttons skipped a title.\nRule id: fq.button.no-label"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-7eaf53609031adec", "name": "Icon-only button without accessible name \u2014 src/components/ark-ai/TripSchedulePicker.tsx:213", "shortDescription": {"text": "Icon-only button without accessible name \u2014 src/components/ark-ai/TripSchedulePicker.tsx:213"}, "fullDescription": {"text": "A `<button>` whose only child is a single glyph or symbol needs `title=` or `aria-label=` so screen readers (and tooltips on hover) work.\n\nWhy: P3 in CHECKLIST.md \u2014 icon-only buttons skipped a title.\nRule id: fq.button.no-label"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-744a8ce1c3bf3e13", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 src/components/ark-ai/ChatMessage.tsx:131", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/components/ark-ai/ChatMessage.tsx:131"}, "fullDescription": {"text": "Open XSS surface unless the input is provably trusted. Replace with explicit JSX or sanitize via a vetted library.\n\nWhy: OWASP basics. Already partially flagged by the security analyzer.\nRule id: fq.dangerous-html"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-a74c81dc1f44485c", "name": "Icon-only button without accessible name \u2014 src/components/ark-ai/plan/PlanTimeline.tsx:467", "shortDescription": {"text": "Icon-only button without accessible name \u2014 src/components/ark-ai/plan/PlanTimeline.tsx:467"}, "fullDescription": {"text": "A `<button>` whose only child is a single glyph or symbol needs `title=` or `aria-label=` so screen readers (and tooltips on hover) work.\n\nWhy: P3 in CHECKLIST.md \u2014 icon-only buttons skipped a title.\nRule id: fq.button.no-label"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-33abbc02112c838b", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 src/components/ark-ai/plan/PlanTimeline.tsx:701", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/components/ark-ai/plan/PlanTimeline.tsx:701"}, "fullDescription": {"text": "Open XSS surface unless the input is provably trusted. Replace with explicit JSX or sanitize via a vetted library.\n\nWhy: OWASP basics. Already partially flagged by the security analyzer.\nRule id: fq.dangerous-html"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-63e1abbaab0269fd", "name": "Icon-only button without accessible name \u2014 src/components/ark-ai/plan/ContactChannelSheet.tsx:90", "shortDescription": {"text": "Icon-only button without accessible name \u2014 src/components/ark-ai/plan/ContactChannelSheet.tsx:90"}, "fullDescription": {"text": "A `<button>` whose only child is a single glyph or symbol needs `title=` or `aria-label=` so screen readers (and tooltips on hover) work.\n\nWhy: P3 in CHECKLIST.md \u2014 icon-only buttons skipped a title.\nRule id: fq.button.no-label"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-83e16b538a5a72bb", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/[lang]/(frontend)/layout.tsx:172", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/[lang]/(frontend)/layout.tsx:172"}, "fullDescription": {"text": "Open XSS surface unless the input is provably trusted. Replace with explicit JSX or sanitize via a vetted library.\n\nWhy: OWASP basics. Already partially flagged by the security analyzer.\nRule id: fq.dangerous-html"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-7b83ace01559feeb", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/[lang]/(frontend)/blogs/[slug]/page.tsx:216", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/[lang]/(frontend)/blogs/[slug]/page.tsx:216"}, "fullDescription": {"text": "Open XSS surface unless the input is provably trusted. Replace with explicit JSX or sanitize via a vetted library.\n\nWhy: OWASP basics. Already partially flagged by the security analyzer.\nRule id: fq.dangerous-html"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-7690130a69207efa", "name": "Icon-only button without accessible name \u2014 src/app/backoffice/settings/page.tsx:622", "shortDescription": {"text": "Icon-only button without accessible name \u2014 src/app/backoffice/settings/page.tsx:622"}, "fullDescription": {"text": "A `<button>` whose only child is a single glyph or symbol needs `title=` or `aria-label=` so screen readers (and tooltips on hover) work.\n\nWhy: P3 in CHECKLIST.md \u2014 icon-only buttons skipped a title.\nRule id: fq.button.no-label"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-3d12728e353e6b7b", "name": "Icon-only button without accessible name \u2014 src/app/backoffice/fleet/page.tsx:226", "shortDescription": {"text": "Icon-only button without accessible name \u2014 src/app/backoffice/fleet/page.tsx:226"}, "fullDescription": {"text": "A `<button>` whose only child is a single glyph or symbol needs `title=` or `aria-label=` so screen readers (and tooltips on hover) work.\n\nWhy: P3 in CHECKLIST.md \u2014 icon-only buttons skipped a title.\nRule id: fq.button.no-label"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-18caac09e7f7c64e", "name": "Icon-only button without accessible name \u2014 src/app/backoffice/display/page.tsx:420", "shortDescription": {"text": "Icon-only button without accessible name \u2014 src/app/backoffice/display/page.tsx:420"}, "fullDescription": {"text": "A `<button>` whose only child is a single glyph or symbol needs `title=` or `aria-label=` so screen readers (and tooltips on hover) work.\n\nWhy: P3 in CHECKLIST.md \u2014 icon-only buttons skipped a title.\nRule id: fq.button.no-label"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-3258c3a0331c0951", "name": "Icon-only button without accessible name \u2014 src/app/backoffice/freedive-instructor/page.tsx:218", "shortDescription": {"text": "Icon-only button without accessible name \u2014 src/app/backoffice/freedive-instructor/page.tsx:218"}, "fullDescription": {"text": "A `<button>` whose only child is a single glyph or symbol needs `title=` or `aria-label=` so screen readers (and tooltips on hover) work.\n\nWhy: P3 in CHECKLIST.md \u2014 icon-only buttons skipped a title.\nRule id: fq.button.no-label"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-382b5a42b7361192", "name": "Icon-only button without accessible name \u2014 src/app/backoffice/trips/freedive/page.tsx:262", "shortDescription": {"text": "Icon-only button without accessible name \u2014 src/app/backoffice/trips/freedive/page.tsx:262"}, "fullDescription": {"text": "A `<button>` whose only child is a single glyph or symbol needs `title=` or `aria-label=` so screen readers (and tooltips on hover) work.\n\nWhy: P3 in CHECKLIST.md \u2014 icon-only buttons skipped a title.\nRule id: fq.button.no-label"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-ef07da85a4ea1028", "name": "Icon-only button without accessible name \u2014 src/app/backoffice/trips/dive-resort/page.tsx:233", "shortDescription": {"text": "Icon-only button without accessible name \u2014 src/app/backoffice/trips/dive-resort/page.tsx:233"}, "fullDescription": {"text": "A `<button>` whose only child is a single glyph or symbol needs `title=` or `aria-label=` so screen readers (and tooltips on hover) work.\n\nWhy: P3 in CHECKLIST.md \u2014 icon-only buttons skipped a title.\nRule id: fq.button.no-label"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-4916ece4c10c7626", "name": "Icon-only button without accessible name \u2014 src/app/backoffice/trips/land-tour/page.tsx:299", "shortDescription": {"text": "Icon-only button without accessible name \u2014 src/app/backoffice/trips/land-tour/page.tsx:299"}, "fullDescription": {"text": "A `<button>` whose only child is a single glyph or symbol needs `title=` or `aria-label=` so screen readers (and tooltips on hover) work.\n\nWhy: P3 in CHECKLIST.md \u2014 icon-only buttons skipped a title.\nRule id: fq.button.no-label"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-08f565d3c0f4964c", "name": "Icon-only button without accessible name \u2014 src/app/backoffice/trips/dive-center/page.tsx:213", "shortDescription": {"text": "Icon-only button without accessible name \u2014 src/app/backoffice/trips/dive-center/page.tsx:213"}, "fullDescription": {"text": "A `<button>` whose only child is a single glyph or symbol needs `title=` or `aria-label=` so screen readers (and tooltips on hover) work.\n\nWhy: P3 in CHECKLIST.md \u2014 icon-only buttons skipped a title.\nRule id: fq.button.no-label"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-f084b589a7df7150", "name": "Icon-only button without accessible name \u2014 src/app/backoffice/trips/daytrip/page.tsx:299", "shortDescription": {"text": "Icon-only button without accessible name \u2014 src/app/backoffice/trips/daytrip/page.tsx:299"}, "fullDescription": {"text": "A `<button>` whose only child is a single glyph or symbol needs `title=` or `aria-label=` so screen readers (and tooltips on hover) work.\n\nWhy: P3 in CHECKLIST.md \u2014 icon-only buttons skipped a title.\nRule id: fq.button.no-label"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-2a37da4f0f8d01f6", "name": "Icon-only button without accessible name \u2014 src/app/backoffice/trips/snorkeling/page.tsx:299", "shortDescription": {"text": "Icon-only button without accessible name \u2014 src/app/backoffice/trips/snorkeling/page.tsx:299"}, "fullDescription": {"text": "A `<button>` whose only child is a single glyph or symbol needs `title=` or `aria-label=` so screen readers (and tooltips on hover) work.\n\nWhy: P3 in CHECKLIST.md \u2014 icon-only buttons skipped a title.\nRule id: fq.button.no-label"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-ea1a7faebf0ec119", "name": "Icon-only button without accessible name \u2014 src/app/backoffice/freedive-courses/page.tsx:218", "shortDescription": {"text": "Icon-only button without accessible name \u2014 src/app/backoffice/freedive-courses/page.tsx:218"}, "fullDescription": {"text": "A `<button>` whose only child is a single glyph or symbol needs `title=` or `aria-label=` so screen readers (and tooltips on hover) work.\n\nWhy: P3 in CHECKLIST.md \u2014 icon-only buttons skipped a title.\nRule id: fq.button.no-label"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-41836c8c0438d3ee", "name": "Icon-only button without accessible name \u2014 src/app/backoffice/admins/page.tsx:200", "shortDescription": {"text": "Icon-only button without accessible name \u2014 src/app/backoffice/admins/page.tsx:200"}, "fullDescription": {"text": "A `<button>` whose only child is a single glyph or symbol needs `title=` or `aria-label=` so screen readers (and tooltips on hover) work.\n\nWhy: P3 in CHECKLIST.md \u2014 icon-only buttons skipped a title.\nRule id: fq.button.no-label"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-fa7185708a55f20b", "name": "Icon-only button without accessible name \u2014 src/app/backoffice/api-keys/page.tsx:297", "shortDescription": {"text": "Icon-only button without accessible name \u2014 src/app/backoffice/api-keys/page.tsx:297"}, "fullDescription": {"text": "A `<button>` whose only child is a single glyph or symbol needs `title=` or `aria-label=` so screen readers (and tooltips on hover) work.\n\nWhy: P3 in CHECKLIST.md \u2014 icon-only buttons skipped a title.\nRule id: fq.button.no-label"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-661f332c5448dd52", "name": "Icon-only button without accessible name \u2014 src/app/backoffice/scuba-instructor/page.tsx:218", "shortDescription": {"text": "Icon-only button without accessible name \u2014 src/app/backoffice/scuba-instructor/page.tsx:218"}, "fullDescription": {"text": "A `<button>` whose only child is a single glyph or symbol needs `title=` or `aria-label=` so screen readers (and tooltips on hover) work.\n\nWhy: P3 in CHECKLIST.md \u2014 icon-only buttons skipped a title.\nRule id: fq.button.no-label"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-75d09ef1cc26b50a", "name": "Icon-only button without accessible name \u2014 src/app/backoffice/schedules/page.tsx:217", "shortDescription": {"text": "Icon-only button without accessible name \u2014 src/app/backoffice/schedules/page.tsx:217"}, "fullDescription": {"text": "A `<button>` whose only child is a single glyph or symbol needs `title=` or `aria-label=` so screen readers (and tooltips on hover) work.\n\nWhy: P3 in CHECKLIST.md \u2014 icon-only buttons skipped a title.\nRule id: fq.button.no-label"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-272791da920449a6", "name": "Icon-only button without accessible name \u2014 src/app/backoffice/courses/page.tsx:218", "shortDescription": {"text": "Icon-only button without accessible name \u2014 src/app/backoffice/courses/page.tsx:218"}, "fullDescription": {"text": "A `<button>` whose only child is a single glyph or symbol needs `title=` or `aria-label=` so screen readers (and tooltips on hover) work.\n\nWhy: P3 in CHECKLIST.md \u2014 icon-only buttons skipped a title.\nRule id: fq.button.no-label"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-71f4c4226b2fbdd5", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/backoffice/blogs/BlogPreviewDrawer.tsx:274", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/backoffice/blogs/BlogPreviewDrawer.tsx:274"}, "fullDescription": {"text": "Open XSS surface unless the input is provably trusted. Replace with explicit JSX or sanitize via a vetted library.\n\nWhy: OWASP basics. Already partially flagged by the security analyzer.\nRule id: fq.dangerous-html"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-b10e69ffba1a8907", "name": "Icon-only button without accessible name \u2014 src/app/backoffice/companies/page.tsx:200", "shortDescription": {"text": "Icon-only button without accessible name \u2014 src/app/backoffice/companies/page.tsx:200"}, "fullDescription": {"text": "A `<button>` whose only child is a single glyph or symbol needs `title=` or `aria-label=` so screen readers (and tooltips on hover) work.\n\nWhy: P3 in CHECKLIST.md \u2014 icon-only buttons skipped a title.\nRule id: fq.button.no-label"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-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-2cfbea448ccd366d", "name": "Insecure pattern 'dangerous_innerhtml' in src/components/TripPullUp.tsx:907", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in src/components/TripPullUp.tsx:907"}, "fullDescription": {"text": "Found a known-risky pattern (dangerous_innerhtml). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-6b8b5c7af62a3472", "name": "Insecure pattern 'dangerous_innerhtml' in src/components/ScheduleFullDetails.tsx:70", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in src/components/ScheduleFullDetails.tsx:70"}, "fullDescription": {"text": "Found a known-risky pattern (dangerous_innerhtml). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-b10c4d7a3e4d0a18", "name": "Insecure pattern 'exec_used' in src/components/backoffice/TripForm.tsx:204", "shortDescription": {"text": "Insecure pattern 'exec_used' in src/components/backoffice/TripForm.tsx:204"}, "fullDescription": {"text": "Found a known-risky pattern (exec_used). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-3f23a8593258db4c", "name": "Insecure pattern 'direct_innerhtml_assignment' in src/components/backoffice/TripForm.tsx:182", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in src/components/backoffice/TripForm.tsx:182"}, "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-ef2da6888b36dbb6", "name": "Insecure pattern 'local_storage_auth_token' in src/components/ark-ai/ArkAIChatPanel.tsx:536", "shortDescription": {"text": "Insecure pattern 'local_storage_auth_token' in src/components/ark-ai/ArkAIChatPanel.tsx:536"}, "fullDescription": {"text": "Found a known-risky pattern (local_storage_auth_token). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-367305af2d203f1e", "name": "Insecure pattern 'dangerous_innerhtml' in src/components/ark-ai/ChatMessage.tsx:131", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in src/components/ark-ai/ChatMessage.tsx:131"}, "fullDescription": {"text": "Found a known-risky pattern (dangerous_innerhtml). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-8056c9a9937ed521", "name": "Insecure pattern 'dangerous_innerhtml' in src/components/ark-ai/plan/PlanTimeline.tsx:701", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in src/components/ark-ai/plan/PlanTimeline.tsx:701"}, "fullDescription": {"text": "Found a known-risky pattern (dangerous_innerhtml). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-2838c1220e145fe1", "name": "Insecure pattern 'dangerous_innerhtml' in src/app/[lang]/(frontend)/layout.tsx:172", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/[lang]/(frontend)/layout.tsx:172"}, "fullDescription": {"text": "Found a known-risky pattern (dangerous_innerhtml). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-ec97c4a29fe0514e", "name": "Insecure pattern 'dangerous_innerhtml' in src/app/[lang]/(frontend)/blogs/[slug]/page.tsx:216", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/[lang]/(frontend)/blogs/[slug]/page.tsx:216"}, "fullDescription": {"text": "Found a known-risky pattern (dangerous_innerhtml). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-bbbdfaeb7928230d", "name": "Insecure pattern 'exec_used' in src/app/backoffice/blogs/page.tsx:423", "shortDescription": {"text": "Insecure pattern 'exec_used' in src/app/backoffice/blogs/page.tsx:423"}, "fullDescription": {"text": "Found a known-risky pattern (exec_used). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-05fa43b470152270", "name": "Insecure pattern 'direct_innerhtml_assignment' in src/app/backoffice/blogs/page.tsx:388", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in src/app/backoffice/blogs/page.tsx:388"}, "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-d8f48ede608e1d2e", "name": "Insecure pattern 'dangerous_innerhtml' in src/app/backoffice/blogs/BlogPreviewDrawer.tsx:274", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/backoffice/blogs/BlogPreviewDrawer.tsx:274"}, "fullDescription": {"text": "Found a known-risky pattern (dangerous_innerhtml). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-4601e3ad3bb28677", "name": "No CI/CD pipelines detected", "shortDescription": {"text": "No CI/CD pipelines detected"}, "fullDescription": {"text": "No GitHub Actions, GitLab CI, or CircleCI configs found. Without CI you can't gate deploys on tests/lints."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-dedf63356c9c769c", "name": "Very large file: prisma/seed-issara-translations.ts (3853 lines)", "shortDescription": {"text": "Very large file: prisma/seed-issara-translations.ts (3853 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-951bb83781c460de", "name": "Very large file: src/components/TripPullUp.tsx (1741 lines)", "shortDescription": {"text": "Very large file: src/components/TripPullUp.tsx (1741 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-12f149d3de1f0bc3", "name": "Very large file: src/components/ark-ai/ArkAIChatPanel.tsx (1609 lines)", "shortDescription": {"text": "Very large file: src/components/ark-ai/ArkAIChatPanel.tsx (1609 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-9fc945b25ea9ce1d", "name": "Very large file: src/components/ark-ai/plan/PlanTimeline.tsx (1111 lines)", "shortDescription": {"text": "Very large file: src/components/ark-ai/plan/PlanTimeline.tsx (1111 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-74811a9ae518d87f", "name": "Very large file: src/app/backoffice/settings/page.tsx (1374 lines)", "shortDescription": {"text": "Very large file: src/app/backoffice/settings/page.tsx (1374 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-f8876dcd4a10e9f9", "name": "Very large file: src/app/backoffice/blogs/page.tsx (931 lines)", "shortDescription": {"text": "Very large file: src/app/backoffice/blogs/page.tsx (931 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-6893a6c8b0861585", "name": "Very low test-to-source ratio", "shortDescription": {"text": "Very low test-to-source ratio"}, "fullDescription": {"text": "5 test file(s) for 320 source file(s) (ratio 0.02). Consider adding integration or unit tests for critical paths."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-141b30a41e03817b", "name": "No license file detected", "shortDescription": {"text": "No license file detected"}, "fullDescription": {"text": "No LICENSE/COPYING/NOTICE file was found. Generated repositories often omit licensing, which blocks reuse and automated intake."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-3ab5d313dda8e5f9", "name": "Debug logging residue appears in source files", "shortDescription": {"text": "Debug logging residue appears in source files"}, "fullDescription": {"text": "Found 113 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 150 placeholder/mock markers across 38 source files. This often means the repo looks complete while core flows still use generated scaffolding or fake data."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-9d79c4077342a7d0", "name": "Runtime service client appears to use placeholder configuration", "shortDescription": {"text": "Runtime service client appears to use placeholder configuration"}, "fullDescription": {"text": "A runtime source file appears to wire Supabase/Firebase/AI/payment-style clients to placeholder URLs, keys, or fallback values. In the Fable corpus this often means the UI/API shape is present while the backend service is not actually configured."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-2d0c7b7ab8f8aacf", "name": "Critical user flow still appears backed by mock or placeholder data", "shortDescription": {"text": "Critical user flow still appears backed by mock or placeholder data"}, "fullDescription": {"text": "A payment/auth/admin/order/billing-style flow contains mock, fake, TODO, dummy, or placeholder markers in runtime source. In the Fable corpus this is a high-leverage completeness smell: the app can look finished while the money, identity, or tenant flow is still scaffolded."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-b9088664ace7f748", "name": "Composite production-readiness gap", "shortDescription": {"text": "Composite production-readiness gap"}, "fullDescription": {"text": "Multiple low-cost hardening controls are missing together: license, ci. 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-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-9f2d64dbf2c6ea24", "name": "Commented-code block (17 lines) in public/tools/siamdive-mj-bridge.user.js:1", "shortDescription": {"text": "Commented-code block (17 lines) in public/tools/siamdive-mj-bridge.user.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-ad1a338de63a0a45", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/RecentlyViewedRow.tsx:57", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/RecentlyViewedRow.tsx:57"}, "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-153727abdab10043", "name": "Commented-code block (6 lines) in src/components/CurrencyProvider.tsx:3", "shortDescription": {"text": "Commented-code block (6 lines) in src/components/CurrencyProvider.tsx:3"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-32d32fa05e4940b8", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/LiffMyPlanGate.tsx:97", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/LiffMyPlanGate.tsx:97"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-892364a5d1439334", "name": "Commented-code block (6 lines) in src/components/HomeContent.tsx:172", "shortDescription": {"text": "Commented-code block (6 lines) in src/components/HomeContent.tsx:172"}, "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-872e62ef4ccbb6f1", "name": "Commented-code block (6 lines) in src/components/PlanToast.tsx:7", "shortDescription": {"text": "Commented-code block (6 lines) in src/components/PlanToast.tsx:7"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-17a3e0bd5f905208", "name": "Commented-code block (6 lines) in src/components/ResortConfigurator.tsx:5", "shortDescription": {"text": "Commented-code block (6 lines) in src/components/ResortConfigurator.tsx:5"}, "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-1485df17a2561a58", "name": "Commented-code block (7 lines) in src/components/Navbar.tsx:86", "shortDescription": {"text": "Commented-code block (7 lines) in src/components/Navbar.tsx:86"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-11d6bfd28aa78597", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/PhotoEditor/ImageEditorField.tsx:95", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/PhotoEditor/ImageEditorField.tsx:95"}, "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-fd4fad2279a29c83", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/PhotoEditor/PhotoEditor.tsx:149", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/PhotoEditor/PhotoEditor.tsx:149"}, "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-1daf7e3df09dd957", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/social/ShareImageEditor.tsx:467", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/social/ShareImageEditor.tsx:467"}, "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-d720ea85cc65eb01", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/social/ShareDrawer.tsx:66", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/social/ShareDrawer.tsx:66"}, "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-c93e0f949c5feb65", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/backoffice/TripForm.tsx:100", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/backoffice/TripForm.tsx:100"}, "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-911676369fb3eff8", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/backoffice/OptionsPanel.tsx:63", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/backoffice/OptionsPanel.tsx:63"}, "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-f15a41eae4396033", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/backoffice/PackagePanel.tsx:171", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/backoffice/PackagePanel.tsx:171"}, "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-b8cd51fb2ca007b2", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/backoffice/LiveaboardManager.tsx:155", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/backoffice/LiveaboardManager.tsx:155"}, "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-50c085928301d045", "name": "Commented-code block (5 lines) in src/components/ark-ai/ArkAIChatPanel.tsx:263", "shortDescription": {"text": "Commented-code block (5 lines) in src/components/ark-ai/ArkAIChatPanel.tsx:263"}, "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-2095a0db4d0f0dd7", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/ark-ai/ArkAIChatPanel.tsx:1011", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/ark-ai/ArkAIChatPanel.tsx:1011"}, "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-6556af71295beb5f", "name": "Commented-code block (6 lines) in src/components/ark-ai/CompareSheet.tsx:6", "shortDescription": {"text": "Commented-code block (6 lines) in src/components/ark-ai/CompareSheet.tsx:6"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-6c7979def8e0c6c8", "name": "Commented-code block (8 lines) in src/components/ark-ai/plan/PlanTimeline.tsx:134", "shortDescription": {"text": "Commented-code block (8 lines) in src/components/ark-ai/plan/PlanTimeline.tsx:134"}, "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-11ee9c331c4441df", "name": "Commented-code block (5 lines) in src/components/ark-ai/plan/SharePlanSheet.tsx:3", "shortDescription": {"text": "Commented-code block (5 lines) in src/components/ark-ai/plan/SharePlanSheet.tsx:3"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-6dfd3a69fff0d0e2", "name": "Commented-code block (5 lines) in src/components/ark-ai/plan/PlanNotificationsBanner.tsx:33", "shortDescription": {"text": "Commented-code block (5 lines) in src/components/ark-ai/plan/PlanNotificationsBanner.tsx:33"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-be146e4b2f4263b1", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/ark-ai/plan/SearchResultModal.tsx:313", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/ark-ai/plan/SearchResultModal.tsx:313"}, "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-b5b3bb1092822c78", "name": "Commented-code block (6 lines) in src/components/ark-ai/plan/PlanDetail.tsx:154", "shortDescription": {"text": "Commented-code block (6 lines) in src/components/ark-ai/plan/PlanDetail.tsx:154"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-a3c30501bfd79b9a", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/ark-ai/plan/PlanDetail.tsx:214", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/ark-ai/plan/PlanDetail.tsx:214"}, "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-568ff62e8a41f036", "name": "Commented-code block (5 lines) in src/components/ark-ai/plan/BuildTargetSheet.tsx:3", "shortDescription": {"text": "Commented-code block (5 lines) in src/components/ark-ai/plan/BuildTargetSheet.tsx:3"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-b759251b8c2ef02b", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/api/upload/route.ts:28", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/api/upload/route.ts:28"}, "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-19a1d99dab9e161c", "name": "Commented-code block (11 lines) in src/app/api/analytics/[metric]/route.ts:5", "shortDescription": {"text": "Commented-code block (11 lines) in src/app/api/analytics/[metric]/route.ts:5"}, "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-ac0996f540606528", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/api/watermarks/route.ts:16", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/api/watermarks/route.ts:16"}, "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-ca1f0cdd5b33514a", "name": "Commented-code block (5 lines) in src/app/api/cron/sync-social-metrics/route.ts:10", "shortDescription": {"text": "Commented-code block (5 lines) in src/app/api/cron/sync-social-metrics/route.ts:10"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-527373a181f2c956", "name": "Commented-code block (7 lines) in src/app/api/cron/cleanup-ai-data/route.ts:5", "shortDescription": {"text": "Commented-code block (7 lines) in src/app/api/cron/cleanup-ai-data/route.ts:5"}, "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-4c6a66f1a8cbec1d", "name": "Commented-code block (7 lines) in src/app/api/cron/plan-improve/route.ts:5", "shortDescription": {"text": "Commented-code block (7 lines) in src/app/api/cron/plan-improve/route.ts:5"}, "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-caa789718c428bb7", "name": "Commented-code block (7 lines) in src/app/api/cron/analytics-rollup/route.ts:8", "shortDescription": {"text": "Commented-code block (7 lines) in src/app/api/cron/analytics-rollup/route.ts:8"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-8cc0decdb77aa74b", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/api/cron/fx-rates/route.ts:41", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/api/cron/fx-rates/route.ts:41"}, "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-90ded6b9e40f4fbf", "name": "Commented-code block (6 lines) in src/app/api/blog-images/route.ts:55", "shortDescription": {"text": "Commented-code block (6 lines) in src/app/api/blog-images/route.ts:55"}, "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-7479d998cbef0603", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/api/blog-images/route.ts:17", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/api/blog-images/route.ts:17"}, "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-787a394b2cfa0941", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/api/plans/upload/route.ts:50", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/api/plans/upload/route.ts:50"}, "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-852409b53f731273", "name": "Commented-code block (6 lines) in src/app/api/plans/email/route.ts:24", "shortDescription": {"text": "Commented-code block (6 lines) in src/app/api/plans/email/route.ts:24"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-10ef51b513d5f50e", "name": "Commented-code block (5 lines) in src/app/api/plans/[id]/route.ts:142", "shortDescription": {"text": "Commented-code block (5 lines) in src/app/api/plans/[id]/route.ts:142"}, "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-13ea272f30a3dc91", "name": "Commented-code block (6 lines) in src/app/api/plans/[id]/items/search/route.ts:37", "shortDescription": {"text": "Commented-code block (6 lines) in src/app/api/plans/[id]/items/search/route.ts:37"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-eb7a067685aba979", "name": "Commented-code block (5 lines) in src/app/api/plans/share/[token]/copy/route.ts:24", "shortDescription": {"text": "Commented-code block (5 lines) in src/app/api/plans/share/[token]/copy/route.ts:24"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-53844815922a5a8b", "name": "Commented-code block (6 lines) in src/app/api/blogs/route.ts:9", "shortDescription": {"text": "Commented-code block (6 lines) in src/app/api/blogs/route.ts:9"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-1b6f89dc9c07aa72", "name": "Commented-code block (5 lines) in src/app/api/ark-ai/chat/route.ts:165", "shortDescription": {"text": "Commented-code block (5 lines) in src/app/api/ark-ai/chat/route.ts:165"}, "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-72936320c6f81269", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/api/ark-ai/chat/route.ts:390", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/api/ark-ai/chat/route.ts:390"}, "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-07c0bbd2ef585acd", "name": "Commented-code block (10 lines) in src/app/api/ark-ai/check-pending-picks/route.ts:6", "shortDescription": {"text": "Commented-code block (10 lines) in src/app/api/ark-ai/check-pending-picks/route.ts:6"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-afd0bad284dbcec6", "name": "Commented-code block (5 lines) in src/app/api/ark-ai/build-plan/route.ts:33", "shortDescription": {"text": "Commented-code block (5 lines) in src/app/api/ark-ai/build-plan/route.ts:33"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-9190b5f64fe3b1ba", "name": "Commented-code block (6 lines) in src/app/[lang]/plan/[shortId]/join/JoinPlanClient.tsx:107", "shortDescription": {"text": "Commented-code block (6 lines) in src/app/[lang]/plan/[shortId]/join/JoinPlanClient.tsx:107"}, "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-78a095837a346147", "name": "Commented-code block (5 lines) in src/app/[lang]/(frontend)/trips/[segment]/page.tsx:29", "shortDescription": {"text": "Commented-code block (5 lines) in src/app/[lang]/(frontend)/trips/[segment]/page.tsx:29"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-acc5cc11e7ab9d9b", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/backoffice/settings/page.tsx:100", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/backoffice/settings/page.tsx:100"}, "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-14a3a400b19cdab0", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/backoffice/settings/ai/page.tsx:83", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/backoffice/settings/ai/page.tsx:83"}, "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-20733f20b8312885", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/backoffice/fleet/page.tsx:62", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/backoffice/fleet/page.tsx:62"}, "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-7248b2cea20d1b3c", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/backoffice/display/page.tsx:311", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/backoffice/display/page.tsx:311"}, "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-92bad3a1a86b2bd2", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/backoffice/freedive-instructor/page.tsx:95", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/backoffice/freedive-instructor/page.tsx:95"}, "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-cb7e7d416ab73900", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/backoffice/trips/freedive/page.tsx:116", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/backoffice/trips/freedive/page.tsx:116"}, "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-31284021abe20dcb", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/backoffice/trips/dive-resort/page.tsx:110", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/backoffice/trips/dive-resort/page.tsx:110"}, "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-fec1b24d0ea06b62", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/backoffice/trips/land-tour/page.tsx:129", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/backoffice/trips/land-tour/page.tsx:129"}, "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-28472aae8b895fa4", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/backoffice/trips/dive-center/page.tsx:104", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/backoffice/trips/dive-center/page.tsx:104"}, "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-41a736fec8a1b9a2", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/backoffice/trips/daytrip/page.tsx:129", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/backoffice/trips/daytrip/page.tsx:129"}, "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-83a5ea9c114dcaad", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/backoffice/trips/snorkeling/page.tsx:129", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/backoffice/trips/snorkeling/page.tsx:129"}, "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-f82c9a3524e5ed54", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/backoffice/freedive-courses/page.tsx:95", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/backoffice/freedive-courses/page.tsx:95"}, "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-e431c3ad7f041053", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/backoffice/admins/page.tsx:103", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/backoffice/admins/page.tsx:103"}, "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-e85947622c9333fa", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/backoffice/social/templates/page.tsx:38", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/backoffice/social/templates/page.tsx:38"}, "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-e77f385b0c223122", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/backoffice/social/accounts/page.tsx:67", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/backoffice/social/accounts/page.tsx:67"}, "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-5074e6b55fa43140", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/backoffice/social/queue/page.tsx:57", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/backoffice/social/queue/page.tsx:57"}, "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-4b61473c8c4d574a", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/backoffice/api-keys/page.tsx:148", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/backoffice/api-keys/page.tsx:148"}, "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-e7b8f71505abc16f", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/backoffice/scuba-instructor/page.tsx:95", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/backoffice/scuba-instructor/page.tsx:95"}, "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-0d2de444443a4717", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/backoffice/schedules/page.tsx:93", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/backoffice/schedules/page.tsx:93"}, "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-078e28a8b0b3d689", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/backoffice/courses/page.tsx:95", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/backoffice/courses/page.tsx:95"}, "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-edbb35b852e5a8d3", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/backoffice/blogs/page.tsx:322", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/backoffice/blogs/page.tsx:322"}, "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-59a6ad0c1a49b82b", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/backoffice/companies/page.tsx:101", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/backoffice/companies/page.tsx:101"}, "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-a90fa169181f3250", "name": "Commented-code block (6 lines) in src/lib/pending-picks.ts:1", "shortDescription": {"text": "Commented-code block (6 lines) in src/lib/pending-picks.ts:1"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-0b396360ecc7bf97", "name": "Commented-code block (16 lines) in src/lib/mjPrompt.ts:7", "shortDescription": {"text": "Commented-code block (16 lines) in src/lib/mjPrompt.ts:7"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-1ae6f2768e4f32b4", "name": "Commented-code block (5 lines) in src/lib/currency.ts:3", "shortDescription": {"text": "Commented-code block (5 lines) in src/lib/currency.ts:3"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-ce4fe712c9c1d00d", "name": "Commented-code block (6 lines) in src/lib/blogParity.ts:1", "shortDescription": {"text": "Commented-code block (6 lines) in src/lib/blogParity.ts:1"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-3335686c2dae0007", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/lib/blogCoverGen.ts:35", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/lib/blogCoverGen.ts:35"}, "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-2c2ff7db269175a4", "name": "Commented-code block (8 lines) in src/lib/plan-store.ts:83", "shortDescription": {"text": "Commented-code block (8 lines) in src/lib/plan-store.ts:83"}, "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-b35579e31c1a5952", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/lib/plan-store.ts:196", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/lib/plan-store.ts:196"}, "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-30b8997b41e70bae", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/lib/social/compose.ts:62", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/lib/social/compose.ts:62"}, "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-ea29f1e6167e7a98", "name": "Commented-code block (5 lines) in src/lib/ark-ai/deleted-sigs.ts:7", "shortDescription": {"text": "Commented-code block (5 lines) in src/lib/ark-ai/deleted-sigs.ts:7"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-100a3882e016c5ee", "name": "Commented-code block (6 lines) in src/lib/ark-ai/trip-prep-templates.ts:1", "shortDescription": {"text": "Commented-code block (6 lines) in src/lib/ark-ai/trip-prep-templates.ts:1"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-4ed290877bb32596", "name": "Commented-code block (8 lines) in src/lib/ark-ai/day-grouping.ts:6", "shortDescription": {"text": "Commented-code block (8 lines) in src/lib/ark-ai/day-grouping.ts:6"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-e35ccc940ff801bc", "name": "Commented-code block (5 lines) in src/lib/ark-ai/plan-signature.ts:4", "shortDescription": {"text": "Commented-code block (5 lines) in src/lib/ark-ai/plan-signature.ts:4"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-694e45bf8065b9e1", "name": "Commented-code block (5 lines) in src/lib/ark-ai/rag.ts:302", "shortDescription": {"text": "Commented-code block (5 lines) in src/lib/ark-ai/rag.ts:302"}, "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-103ec6d63d70416e", "name": "Commented-code block (5 lines) in src/lib/ark-ai/date-hint.ts:69", "shortDescription": {"text": "Commented-code block (5 lines) in src/lib/ark-ai/date-hint.ts:69"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-e8689b92fb362f57", "name": "Commented-code block (5 lines) in src/lib/ark-ai/itinerary-parser.ts:14", "shortDescription": {"text": "Commented-code block (5 lines) in src/lib/ark-ai/itinerary-parser.ts:14"}, "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-8ce531beb89fc54a", "name": "Commented-code block (6 lines) in src/lib/ark-ai/slot-hints.ts:1", "shortDescription": {"text": "Commented-code block (6 lines) in src/lib/ark-ai/slot-hints.ts:1"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-d962ec3fbb9a809d", "name": "Commented-code block (5 lines) in src/lib/ark-ai/i18n.ts:345", "shortDescription": {"text": "Commented-code block (5 lines) in src/lib/ark-ai/i18n.ts:345"}, "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-7041e858e173c142", "name": "Commented-code block (5 lines) in src/lib/ark-ai/cost.ts:4", "shortDescription": {"text": "Commented-code block (5 lines) in src/lib/ark-ai/cost.ts:4"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-e8fbc5d9f6e50b33", "name": "Commented-code block (5 lines) in src/lib/ark-ai/build-plan.ts:63", "shortDescription": {"text": "Commented-code block (5 lines) in src/lib/ark-ai/build-plan.ts:63"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-fe27dfa3fb0bc016", "name": "Commented-code block (5 lines) in src/lib/ark-ai/slots.ts:1", "shortDescription": {"text": "Commented-code block (5 lines) in src/lib/ark-ai/slots.ts:1"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-bc65c442d5c7e0ee", "name": "Commented-code block (5 lines) in src/lib/ark-ai/plan-templates.ts:1", "shortDescription": {"text": "Commented-code block (5 lines) in src/lib/ark-ai/plan-templates.ts:1"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}]}}, "automationDetails": {"id": "repobility/20483"}, "properties": {"repository": "suksomsri7/siamdive", "repoUrl": "https://github.com/suksomsri7/siamdive", "branch": "main"}, "results": [{"ruleId": "foundry_unresolved_feedback", "level": "warning", "message": {"text": "Foundry mined unresolved feedback: suksomsri7/siamdive"}, "properties": {"repobilityId": 370478, "scanner": "foundry_dataset", "fingerprint": "25c944f89c19e3bfcd4f637ee4d3259ff34c2b8134a0a6b5131de6d7cdda8f62", "category": "practices", "severity": "medium", "confidence": 0.7, "triageState": "open", "verdict": "needs_review", "isResolved": false, "reason": "Imported from mined Foundry/Fable5 evidence with real GitHub/source provenance. Review source_id before acting.", "evidence": {"meta": {"kind": "graph_query_record", "title": "Human feedback without linked fix evidence", "intent": "Negative/unresolved examples that should not be hallucinated into fixes.", "labels": {"bug_fix": 4, "api_or_backend": 1, "deployment_env_gap": 1, "agent_instruction_gap": 1, "claimed_resolved_unverified": 3, "issue_or_pull_request_thread": 1, "not_resolved_or_not_observed": 1, "human_reported_issue_no_linked_fix": 1, "human_reported_issue_then_fix_attempt": 1, "thread_has_human_issue_and_fix_context": 2}, "source": "graph_query_export", "motif_id": "unlinked_feedback_needs_evidence", "outcomes": {"claimed_resolved_unverified": 6, "not_resolved_or_not_observed": 2}, "polarity": "bad", "query_id": "unresolved_feedback", "severity": "medium", "ci_labels": {}, "synthetic": false, "edge_count": 24, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 2, "thread_has_comment": 2, "thread_touches_file": 1, "chain_has_link_quality": 4, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "issue_chain_touches_file": 1, "thread_has_comment_chain": 2, "comment_chain_links_commit": 4, "comment_chain_touches_file": 2, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 2}, "node_count": 17, "node_types": {"repo": 1, "commit": 4, "thread": 1, "comment": 2, "pr_file": 1, "fix_outcome": 1, "issue_chain": 1, "link_quality": 4, "comment_chain": 2}, "query_type": "motif_query", "thread_key": "suksomsri7/siamdive#9", "issue_number": "9", "quality_tiers": {"unresolved": 1, "weak_supervision": 3}, "repo_full_name": "suksomsri7/siamdive", "training_usage": "negative_or_unresolved", "source_motif_id": "graph-pattern-motif-thread-0f85fb6cbf82eab1", "graph_gold_label": "weak_supervision_needs_review", "changed_file_labels": {"api_or_backend": 5}}, "text": "Graph query export: Human feedback without linked fix evidence\nQuery id: unresolved_feedback\nQuery type: motif_query\nIntent: Negative/unresolved examples that should not be hallucinated into fixes.\nMotif: unlinked_feedback_needs_evidence\nTraining usage: negative_or_unresolved\nGraph gold label: weak_supervision_needs_review\nRepo: suksomsri7/siamdive\nThread: suksomsri7/siamdive#9\nEvidence:\nGraph motif: Human feedback exists without a linked fix\nMotif id: unlinked_feedback_needs_evidence\nPolarity: bad\nTraining usage: negative_or_unresolved\nSeverity: medium\nRepo: suksomsri7/siamdive\nThread: suksomsri7/siamdive#9\nGraph gold label: weak_supervision_needs_review\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: suksomsri7/siamdive#9\nRepo: suksomsri7/siamdive\nIssue/PR number: 9\nGraph consistency label: weak_supervision_needs_review\nNodes: 17\nEdges: 24\nNode types: {'commit': 4, 'link_quality': 4, 'comment': 2, 'comment_chain': 2, 'thread': 1, 'repo': 1, 'pr_file': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'comment_chain_links_commit': 4, 'chain_has_link_quality': 4, 'thread_has_comment': 2, 'thread_has_comment_chain': 2, 'comment_has_chain': 2, 'comment_chain_touches_file': 2, 'issue_chain_has_comment_chain': 2, 'repo_has_thread': 1, 'thread_touches_file': 1, 'thread_has_issue_chain': 1, 'issue_chain_touches_file': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'bug_fix': 4, 'claimed_resolved_unverified': 3, 'thread_has_human_issue_and_fix_context': 2, 'issue_or_pull_request_thread': 1, 'agent_instruction_gap': 1, 'deployment_env_gap': 1, 'api_or_backend': 1, 'human_reported_issue_then_fix_attempt': 1, 'human_reported_issue_no_linked_fix': 1, 'not_resolved_or_not_observed': 1}\nOutcomes: {'claimed_resolved_unverified': 6, 'not_resolved_or_not_observed': 2}\nQuality tiers: {'weak_supervision': 3, 'unresolved': 1}\nCI labels: {}\nCurriculum targets:\n- Teach models to preserve unresolved human feedback instead of hallucinating fixes.\n- Build issue-to-regression examples where no accepted fix exists yet.\nAssumption checks:\n- Can a commit be linked by issue number, SHA, changed path, or time window?\n- If no link exists, is this explicitly labelled unresolved?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/suksomsri7/siamdive", "source_id": "graph-query-motif_query-2d73cbb9638079c1", "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": "suksomsri7/siamdive", "source_dataset": "graph_queries/unresolved_feedback", "training_usage": "negative_or_unresolved"}}}, {"ruleId": "foundry_unresolved_feedback", "level": "warning", "message": {"text": "Foundry mined unresolved feedback: suksomsri7/siamdive"}, "properties": {"repobilityId": 370477, "scanner": "foundry_dataset", "fingerprint": "15973a4d9da98eadf882b813a45b9fdaf3ba47d35d70f39b1bf6dd1590d46d48", "category": "practices", "severity": "medium", "confidence": 0.7, "triageState": "open", "verdict": "needs_review", "isResolved": false, "reason": "Imported from mined Foundry/Fable5 evidence with real GitHub/source provenance. Review source_id before acting.", "evidence": {"meta": {"kind": "graph_query_record", "title": "Human feedback without linked fix evidence", "intent": "Negative/unresolved examples that should not be hallucinated into fixes.", "labels": {"bug_fix": 3, "api_or_backend": 2, "ui_or_frontend": 4, "deployment_env_gap": 1, "api_integration_gap": 1, "mostly follows blueprint": 1, "claimed_resolved_unverified": 3, "issue_or_pull_request_thread": 1, "not_resolved_or_not_observed": 1, "blueprint_human_gap_disagreement": 1, "human_reported_issue_no_linked_fix": 1, "human_reported_issue_then_fix_attempt": 1, "thread_has_human_issue_and_fix_context": 2}, "source": "graph_query_export", "motif_id": "unlinked_feedback_needs_evidence", "outcomes": {"claimed_resolved_unverified": 6, "not_resolved_or_not_observed": 2}, "polarity": "bad", "query_id": "unresolved_feedback", "severity": "medium", "ci_labels": {}, "synthetic": false, "edge_count": 47, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 2, "thread_has_comment": 2, "thread_touches_file": 6, "alignment_uses_comment": 1, "alignment_uses_finding": 1, "chain_has_link_quality": 5, "comment_aligns_finding": 1, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "issue_chain_touches_file": 6, "thread_has_comment_chain": 2, "comment_chain_links_commit": 3, "comment_chain_touches_file": 12, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 2}, "node_count": 24, "node_types": {"repo": 1, "commit": 3, "thread": 1, "comment": 2, "pr_file": 6, "alignment": 1, "fix_outcome": 1, "issue_chain": 1, "link_quality": 5, "comment_chain": 2, "blueprint_finding": 1}, "query_type": "motif_query", "thread_key": "suksomsri7/siamdive#8", "issue_number": "8", "quality_tiers": {"unresolved": 1, "assumption_check": 1, "weak_supervision": 3}, "repo_full_name": "suksomsri7/siamdive", "training_usage": "negative_or_unresolved", "source_motif_id": "graph-pattern-motif-thread-1dd484bcdd0ae5be", "graph_gold_label": "weak_supervision_needs_review", "changed_file_labels": {"api_or_backend": 10, "ui_or_frontend": 20}}, "text": "Graph query export: Human feedback without linked fix evidence\nQuery id: unresolved_feedback\nQuery type: motif_query\nIntent: Negative/unresolved examples that should not be hallucinated into fixes.\nMotif: unlinked_feedback_needs_evidence\nTraining usage: negative_or_unresolved\nGraph gold label: weak_supervision_needs_review\nRepo: suksomsri7/siamdive\nThread: suksomsri7/siamdive#8\nEvidence:\nGraph motif: Human feedback exists without a linked fix\nMotif id: unlinked_feedback_needs_evidence\nPolarity: bad\nTraining usage: negative_or_unresolved\nSeverity: medium\nRepo: suksomsri7/siamdive\nThread: suksomsri7/siamdive#8\nGraph gold label: weak_supervision_needs_review\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: suksomsri7/siamdive#8\nRepo: suksomsri7/siamdive\nIssue/PR number: 8\nGraph consistency label: weak_supervision_needs_review\nNodes: 24\nEdges: 47\nNode types: {'pr_file': 6, 'link_quality': 5, 'commit': 3, 'comment': 2, 'comment_chain': 2, 'thread': 1, 'repo': 1, 'issue_chain': 1, 'fix_outcome': 1, 'alignment': 1, 'blueprint_finding': 1}\nEdge types: {'comment_chain_touches_file': 12, 'thread_touches_file': 6, 'issue_chain_touches_file': 6, 'chain_has_link_quality': 5, 'comment_chain_links_commit': 3, 'thread_has_comment': 2, 'thread_has_comment_chain': 2, 'comment_has_chain': 2, 'issue_chain_has_comment_chain': 2, 'repo_has_thread': 1, 'thread_has_issue_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1, 'alignment_uses_comment': 1, 'alignment_uses_finding': 1, 'comment_aligns_finding': 1}\nLabels: {'ui_or_frontend': 4, 'bug_fix': 3, 'claimed_resolved_unverified': 3, 'api_or_backend': 2, 'thread_has_human_issue_and_fix_context': 2, 'issue_or_pull_request_thread': 1, 'api_integration_gap': 1, 'deployment_env_gap': 1, 'human_reported_issue_then_fix_attempt': 1, 'human_reported_issue_no_linked_fix': 1, 'not_resolved_or_not_observed': 1, 'blueprint_human_gap_disagreement': 1, 'mostly follows blueprint': 1}\nOutcomes: {'claimed_resolved_unverified': 6, 'not_resolved_or_not_observed': 2}\nQuality tiers: {'weak_supervision': 3, 'unresolved': 1, 'assumption_check': 1}\nCI labels: {}\nCurriculum targets:\n- Teach models to preserve unresolved human feedback instead of hallucinating fixes.\n- Build issue-to-regression examples where no accepted fix exists yet.\nAssumption checks:\n- Can a commit be linked by issue number, SHA, changed path, or time window?\n- If no link exists, is this explicitly labelled unresolved?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/suksomsri7/siamdive", "source_id": "graph-query-motif_query-c70d6d8e4aeba8f8", "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": "suksomsri7/siamdive", "source_dataset": "graph_queries/unresolved_feedback", "training_usage": "negative_or_unresolved"}}}, {"ruleId": "foundry_unresolved_feedback", "level": "warning", "message": {"text": "Foundry mined unresolved feedback: suksomsri7/siamdive"}, "properties": {"repobilityId": 370476, "scanner": "foundry_dataset", "fingerprint": "32699838604f55141d13074a458314124ebe916b1af18d545c42e3830aabb4cc", "category": "practices", "severity": "medium", "confidence": 0.7, "triageState": "open", "verdict": "needs_review", "isResolved": false, "reason": "Imported from mined Foundry/Fable5 evidence with real GitHub/source provenance. Review source_id before acting.", "evidence": {"meta": {"kind": "graph_query_record", "title": "Human feedback without linked fix evidence", "intent": "Negative/unresolved examples that should not be hallucinated into fixes.", "labels": {"bug_fix": 5, "api_or_backend": 2, "docs_or_claims": 1, "schema_or_data": 1, "deployment_env_gap": 1, "data_schema_persistence": 1, "mostly follows blueprint": 1, "claimed_resolved_unverified": 3, "issue_or_pull_request_thread": 1, "not_resolved_or_not_observed": 1, "blueprint_human_gap_disagreement": 1, "human_reported_issue_no_linked_fix": 1, "human_reported_issue_then_fix_attempt": 1, "thread_has_human_issue_and_fix_context": 2}, "source": "graph_query_export", "motif_id": "unlinked_feedback_needs_evidence", "outcomes": {"claimed_resolved_unverified": 6, "not_resolved_or_not_observed": 2}, "polarity": "bad", "query_id": "unresolved_feedback", "severity": "medium", "ci_labels": {}, "synthetic": false, "edge_count": 41, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 2, "thread_has_comment": 2, "thread_touches_file": 4, "alignment_uses_comment": 1, "alignment_uses_finding": 1, "chain_has_link_quality": 5, "comment_aligns_finding": 1, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "issue_chain_touches_file": 4, "thread_has_comment_chain": 2, "comment_chain_links_commit": 5, "comment_chain_touches_file": 8, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 2}, "node_count": 24, "node_types": {"repo": 1, "commit": 5, "thread": 1, "comment": 2, "pr_file": 4, "alignment": 1, "fix_outcome": 1, "issue_chain": 1, "link_quality": 5, "comment_chain": 2, "blueprint_finding": 1}, "query_type": "motif_query", "thread_key": "suksomsri7/siamdive#7", "issue_number": "7", "quality_tiers": {"unresolved": 1, "assumption_check": 1, "weak_supervision": 3}, "repo_full_name": "suksomsri7/siamdive", "training_usage": "negative_or_unresolved", "source_motif_id": "graph-pattern-motif-thread-cdd4a101e0ddfe3c", "graph_gold_label": "weak_supervision_needs_review", "changed_file_labels": {"api_or_backend": 10, "docs_or_claims": 5, "schema_or_data": 5}}, "text": "Graph query export: Human feedback without linked fix evidence\nQuery id: unresolved_feedback\nQuery type: motif_query\nIntent: Negative/unresolved examples that should not be hallucinated into fixes.\nMotif: unlinked_feedback_needs_evidence\nTraining usage: negative_or_unresolved\nGraph gold label: weak_supervision_needs_review\nRepo: suksomsri7/siamdive\nThread: suksomsri7/siamdive#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: suksomsri7/siamdive\nThread: suksomsri7/siamdive#7\nGraph gold label: weak_supervision_needs_review\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: suksomsri7/siamdive#7\nRepo: suksomsri7/siamdive\nIssue/PR number: 7\nGraph consistency label: weak_supervision_needs_review\nNodes: 24\nEdges: 41\nNode types: {'commit': 5, 'link_quality': 5, 'pr_file': 4, 'comment': 2, 'comment_chain': 2, 'thread': 1, 'repo': 1, 'issue_chain': 1, 'fix_outcome': 1, 'alignment': 1, 'blueprint_finding': 1}\nEdge types: {'comment_chain_touches_file': 8, 'comment_chain_links_commit': 5, 'chain_has_link_quality': 5, 'thread_touches_file': 4, 'issue_chain_touches_file': 4, 'thread_has_comment': 2, 'thread_has_comment_chain': 2, 'comment_has_chain': 2, 'issue_chain_has_comment_chain': 2, 'repo_has_thread': 1, 'thread_has_issue_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1, 'alignment_uses_comment': 1, 'alignment_uses_finding': 1, 'comment_aligns_finding': 1}\nLabels: {'bug_fix': 5, 'claimed_resolved_unverified': 3, 'api_or_backend': 2, 'thread_has_human_issue_and_fix_context': 2, 'issue_or_pull_request_thread': 1, 'data_schema_persistence': 1, 'deployment_env_gap': 1, 'docs_or_claims': 1, 'schema_or_data': 1, 'human_reported_issue_then_fix_attempt': 1, 'human_reported_issue_no_linked_fix': 1, 'not_resolved_or_not_observed': 1, 'blueprint_human_gap_disagreement': 1, 'mostly follows blueprint': 1}\nOutcomes: {'claimed_resolved_unverified': 6, 'not_resolved_or_not_observed': 2}\nQuality tiers: {'weak_supervision': 3, 'unresolved': 1, 'assumption_check': 1}\nCI labels: {}\nCurriculum targets:\n- Teach models to preserve unresolved human feedback instead of hallucinating fixes.\n- Build issue-to-regression examples where no accepted fix exists yet.\nAssumption checks:\n- Can a commit be linked by issue number, SHA, changed path, or time window?\n- If no link exists, is this explicitly labelled unresolved?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/suksomsri7/siamdive", "source_id": "graph-query-motif_query-6026fe1e3d0c65c8", "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": "suksomsri7/siamdive", "source_dataset": "graph_queries/unresolved_feedback", "training_usage": "negative_or_unresolved"}}}, {"ruleId": "foundry_unresolved_feedback", "level": "warning", "message": {"text": "Foundry mined unresolved feedback: suksomsri7/siamdive"}, "properties": {"repobilityId": 370475, "scanner": "foundry_dataset", "fingerprint": "f6ce7b4b534953f78c9aa3e251ab0ab36f97ae79732a0f18cffe2638197f2742", "category": "practices", "severity": "medium", "confidence": 0.7, "triageState": "open", "verdict": "needs_review", "isResolved": false, "reason": "Imported from mined Foundry/Fable5 evidence with real GitHub/source provenance. Review source_id before acting.", "evidence": {"meta": {"kind": "graph_query_record", "title": "Human feedback without linked fix evidence", "intent": "Negative/unresolved examples that should not be hallucinated into fixes.", "labels": {"bug_fix": 3, "api_or_backend": 1, "docs_or_claims": 1, "ui_or_frontend": 1, "deployment_env_gap": 1, "dependency_or_build": 1, "security_auth_secret": 1, "claimed_resolved_unverified": 3, "issue_or_pull_request_thread": 1, "not_resolved_or_not_observed": 1, "human_reported_issue_no_linked_fix": 1, "human_reported_issue_then_fix_attempt": 1, "thread_has_human_issue_and_fix_context": 2}, "source": "graph_query_export", "motif_id": "unlinked_feedback_needs_evidence", "outcomes": {"claimed_resolved_unverified": 6, "not_resolved_or_not_observed": 2}, "polarity": "bad", "query_id": "unresolved_feedback", "severity": "medium", "ci_labels": {}, "synthetic": false, "edge_count": 32, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 2, "thread_has_comment": 2, "thread_touches_file": 3, "chain_has_link_quality": 4, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "issue_chain_touches_file": 3, "thread_has_comment_chain": 2, "comment_chain_links_commit": 4, "comment_chain_touches_file": 6, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 2}, "node_count": 19, "node_types": {"repo": 1, "commit": 4, "thread": 1, "comment": 2, "pr_file": 3, "fix_outcome": 1, "issue_chain": 1, "link_quality": 4, "comment_chain": 2}, "query_type": "motif_query", "thread_key": "suksomsri7/siamdive#6", "issue_number": "6", "quality_tiers": {"unresolved": 1, "weak_supervision": 3}, "repo_full_name": "suksomsri7/siamdive", "training_usage": "negative_or_unresolved", "source_motif_id": "graph-pattern-motif-thread-8cba127428f8b949", "graph_gold_label": "weak_supervision_needs_review", "changed_file_labels": {"api_or_backend": 5, "docs_or_claims": 5, "ui_or_frontend": 5}}, "text": "Graph query export: Human feedback without linked fix evidence\nQuery id: unresolved_feedback\nQuery type: motif_query\nIntent: Negative/unresolved examples that should not be hallucinated into fixes.\nMotif: unlinked_feedback_needs_evidence\nTraining usage: negative_or_unresolved\nGraph gold label: weak_supervision_needs_review\nRepo: suksomsri7/siamdive\nThread: suksomsri7/siamdive#6\nEvidence:\nGraph motif: Human feedback exists without a linked fix\nMotif id: unlinked_feedback_needs_evidence\nPolarity: bad\nTraining usage: negative_or_unresolved\nSeverity: medium\nRepo: suksomsri7/siamdive\nThread: suksomsri7/siamdive#6\nGraph gold label: weak_supervision_needs_review\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: suksomsri7/siamdive#6\nRepo: suksomsri7/siamdive\nIssue/PR number: 6\nGraph consistency label: weak_supervision_needs_review\nNodes: 19\nEdges: 32\nNode types: {'commit': 4, 'link_quality': 4, 'pr_file': 3, 'comment': 2, 'comment_chain': 2, 'thread': 1, 'repo': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'comment_chain_touches_file': 6, 'comment_chain_links_commit': 4, 'chain_has_link_quality': 4, 'thread_touches_file': 3, 'issue_chain_touches_file': 3, 'thread_has_comment': 2, 'thread_has_comment_chain': 2, 'comment_has_chain': 2, 'issue_chain_has_comment_chain': 2, 'repo_has_thread': 1, 'thread_has_issue_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'bug_fix': 3, 'claimed_resolved_unverified': 3, 'thread_has_human_issue_and_fix_context': 2, 'issue_or_pull_request_thread': 1, 'security_auth_secret': 1, 'deployment_env_gap': 1, 'docs_or_claims': 1, 'ui_or_frontend': 1, 'api_or_backend': 1, 'human_reported_issue_then_fix_attempt': 1, 'dependency_or_build': 1, 'human_reported_issue_no_linked_fix': 1, 'not_resolved_or_not_observed': 1}\nOutcomes: {'claimed_resolved_unverified': 6, 'not_resolved_or_not_observed': 2}\nQuality tiers: {'weak_supervision': 3, 'unresolved': 1}\nCI labels: {}\nCurriculum targets:\n- Teach models to preserve unresolved human feedback instead of hallucinating fixes.\n- Build issue-to-regression examples where no accepted fix exists yet.\nAssumption checks:\n- Can a commit be linked by issue number, SHA, changed path, or time window?\n- If no link exists, is this explicitly labelled unresolved?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/suksomsri7/siamdive", "source_id": "graph-query-motif_query-1f30784d9cfba388", "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": "suksomsri7/siamdive", "source_dataset": "graph_queries/unresolved_feedback", "training_usage": "negative_or_unresolved"}}}, {"ruleId": "foundry_unresolved_feedback", "level": "warning", "message": {"text": "Foundry mined unresolved feedback: suksomsri7/siamdive"}, "properties": {"repobilityId": 370474, "scanner": "foundry_dataset", "fingerprint": "ba99bbac905b09ecc0f43abfdd69ca8778feed0c3f35af5f35ab9c0212e5accf", "category": "practices", "severity": "medium", "confidence": 0.7, "triageState": "open", "verdict": "needs_review", "isResolved": false, "reason": "Imported from mined Foundry/Fable5 evidence with real GitHub/source provenance. Review source_id before acting.", "evidence": {"meta": {"kind": "graph_query_record", "title": "Human feedback without linked fix evidence", "intent": "Negative/unresolved examples that should not be hallucinated into fixes.", "labels": {"bug_fix": 2, "docs_or_claims": 1, "ui_or_frontend": 1, "deployment_env_gap": 1, "data_schema_persistence": 1, "mostly follows blueprint": 1, "claimed_resolved_unverified": 3, "issue_or_pull_request_thread": 1, "not_resolved_or_not_observed": 1, "blueprint_human_gap_disagreement": 1, "human_reported_issue_no_linked_fix": 1, "human_reported_issue_then_fix_attempt": 1, "thread_has_human_issue_and_fix_context": 2}, "source": "graph_query_export", "motif_id": "unlinked_feedback_needs_evidence", "outcomes": {"claimed_resolved_unverified": 6, "not_resolved_or_not_observed": 2}, "polarity": "bad", "query_id": "unresolved_feedback", "severity": "medium", "ci_labels": {}, "synthetic": false, "edge_count": 30, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 2, "thread_has_comment": 2, "thread_touches_file": 2, "alignment_uses_comment": 1, "alignment_uses_finding": 1, "chain_has_link_quality": 5, "comment_aligns_finding": 1, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "issue_chain_touches_file": 2, "thread_has_comment_chain": 2, "comment_chain_links_commit": 2, "comment_chain_touches_file": 4, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 2}, "node_count": 19, "node_types": {"repo": 1, "commit": 2, "thread": 1, "comment": 2, "pr_file": 2, "alignment": 1, "fix_outcome": 1, "issue_chain": 1, "link_quality": 5, "comment_chain": 2, "blueprint_finding": 1}, "query_type": "motif_query", "thread_key": "suksomsri7/siamdive#5", "issue_number": "5", "quality_tiers": {"unresolved": 1, "assumption_check": 1, "weak_supervision": 3}, "repo_full_name": "suksomsri7/siamdive", "training_usage": "negative_or_unresolved", "source_motif_id": "graph-pattern-motif-thread-64bd283b348b1a5b", "graph_gold_label": "weak_supervision_needs_review", "changed_file_labels": {"docs_or_claims": 5, "ui_or_frontend": 5}}, "text": "Graph query export: Human feedback without linked fix evidence\nQuery id: unresolved_feedback\nQuery type: motif_query\nIntent: Negative/unresolved examples that should not be hallucinated into fixes.\nMotif: unlinked_feedback_needs_evidence\nTraining usage: negative_or_unresolved\nGraph gold label: weak_supervision_needs_review\nRepo: suksomsri7/siamdive\nThread: suksomsri7/siamdive#5\nEvidence:\nGraph motif: Human feedback exists without a linked fix\nMotif id: unlinked_feedback_needs_evidence\nPolarity: bad\nTraining usage: negative_or_unresolved\nSeverity: medium\nRepo: suksomsri7/siamdive\nThread: suksomsri7/siamdive#5\nGraph gold label: weak_supervision_needs_review\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: suksomsri7/siamdive#5\nRepo: suksomsri7/siamdive\nIssue/PR number: 5\nGraph consistency label: weak_supervision_needs_review\nNodes: 19\nEdges: 30\nNode types: {'link_quality': 5, 'comment': 2, 'pr_file': 2, 'comment_chain': 2, 'commit': 2, 'thread': 1, 'repo': 1, 'issue_chain': 1, 'fix_outcome': 1, 'alignment': 1, 'blueprint_finding': 1}\nEdge types: {'chain_has_link_quality': 5, 'comment_chain_touches_file': 4, 'thread_has_comment': 2, 'thread_touches_file': 2, 'thread_has_comment_chain': 2, 'comment_has_chain': 2, 'comment_chain_links_commit': 2, 'issue_chain_has_comment_chain': 2, 'issue_chain_touches_file': 2, 'repo_has_thread': 1, 'thread_has_issue_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1, 'alignment_uses_comment': 1, 'alignment_uses_finding': 1, 'comment_aligns_finding': 1}\nLabels: {'claimed_resolved_unverified': 3, 'bug_fix': 2, 'thread_has_human_issue_and_fix_context': 2, 'issue_or_pull_request_thread': 1, 'data_schema_persistence': 1, 'deployment_env_gap': 1, 'docs_or_claims': 1, 'ui_or_frontend': 1, 'human_reported_issue_then_fix_attempt': 1, 'human_reported_issue_no_linked_fix': 1, 'not_resolved_or_not_observed': 1, 'blueprint_human_gap_disagreement': 1, 'mostly follows blueprint': 1}\nOutcomes: {'claimed_resolved_unverified': 6, 'not_resolved_or_not_observed': 2}\nQuality tiers: {'weak_supervision': 3, 'unresolved': 1, 'assumption_check': 1}\nCI labels: {}\nCurriculum targets:\n- Teach models to preserve unresolved human feedback instead of hallucinating fixes.\n- Build issue-to-regression examples where no accepted fix exists yet.\nAssumption checks:\n- Can a commit be linked by issue number, SHA, changed path, or time window?\n- If no link exists, is this explicitly labelled unresolved?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/suksomsri7/siamdive", "source_id": "graph-query-motif_query-58dde468aea66bfc", "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": "suksomsri7/siamdive", "source_dataset": "graph_queries/unresolved_feedback", "training_usage": "negative_or_unresolved"}}}, {"ruleId": "foundry_unresolved_feedback", "level": "warning", "message": {"text": "Foundry mined unresolved feedback: suksomsri7/siamdive"}, "properties": {"repobilityId": 370473, "scanner": "foundry_dataset", "fingerprint": "7e648e2716777a7ec153f54623a17668a75345f8cc82cba52e37d1426dfaefb0", "category": "practices", "severity": "medium", "confidence": 0.7, "triageState": "open", "verdict": "needs_review", "isResolved": false, "reason": "Imported from mined Foundry/Fable5 evidence with real GitHub/source provenance. Review source_id before acting.", "evidence": {"meta": {"kind": "graph_query_record", "title": "Human feedback without linked fix evidence", "intent": "Negative/unresolved examples that should not be hallucinated into fixes.", "labels": {"bug_fix": 4, "docs_or_claims": 1, "ui_or_frontend": 1, "ui_workflow_gap": 1, "deployment_env_gap": 1, "mostly follows blueprint": 1, "claimed_resolved_unverified": 3, "issue_or_pull_request_thread": 1, "not_resolved_or_not_observed": 1, "blueprint_human_gap_disagreement": 1, "human_reported_issue_no_linked_fix": 1, "human_reported_issue_then_fix_attempt": 1, "thread_has_human_issue_and_fix_context": 2}, "source": "graph_query_export", "motif_id": "unlinked_feedback_needs_evidence", "outcomes": {"claimed_resolved_unverified": 6, "not_resolved_or_not_observed": 2}, "polarity": "bad", "query_id": "unresolved_feedback", "severity": "medium", "ci_labels": {}, "synthetic": false, "edge_count": 32, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 2, "thread_has_comment": 2, "thread_touches_file": 2, "alignment_uses_comment": 1, "alignment_uses_finding": 1, "chain_has_link_quality": 5, "comment_aligns_finding": 1, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "issue_chain_touches_file": 2, "thread_has_comment_chain": 2, "comment_chain_links_commit": 4, "comment_chain_touches_file": 4, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 2}, "node_count": 21, "node_types": {"repo": 1, "commit": 4, "thread": 1, "comment": 2, "pr_file": 2, "alignment": 1, "fix_outcome": 1, "issue_chain": 1, "link_quality": 5, "comment_chain": 2, "blueprint_finding": 1}, "query_type": "motif_query", "thread_key": "suksomsri7/siamdive#4", "issue_number": "4", "quality_tiers": {"unresolved": 1, "assumption_check": 1, "weak_supervision": 3}, "repo_full_name": "suksomsri7/siamdive", "training_usage": "negative_or_unresolved", "source_motif_id": "graph-pattern-motif-thread-718a6f8a67196603", "graph_gold_label": "weak_supervision_needs_review", "changed_file_labels": {"docs_or_claims": 5, "ui_or_frontend": 5}}, "text": "Graph query export: Human feedback without linked fix evidence\nQuery id: unresolved_feedback\nQuery type: motif_query\nIntent: Negative/unresolved examples that should not be hallucinated into fixes.\nMotif: unlinked_feedback_needs_evidence\nTraining usage: negative_or_unresolved\nGraph gold label: weak_supervision_needs_review\nRepo: suksomsri7/siamdive\nThread: suksomsri7/siamdive#4\nEvidence:\nGraph motif: Human feedback exists without a linked fix\nMotif id: unlinked_feedback_needs_evidence\nPolarity: bad\nTraining usage: negative_or_unresolved\nSeverity: medium\nRepo: suksomsri7/siamdive\nThread: suksomsri7/siamdive#4\nGraph gold label: weak_supervision_needs_review\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: suksomsri7/siamdive#4\nRepo: suksomsri7/siamdive\nIssue/PR number: 4\nGraph consistency label: weak_supervision_needs_review\nNodes: 21\nEdges: 32\nNode types: {'link_quality': 5, 'commit': 4, 'comment': 2, 'pr_file': 2, 'comment_chain': 2, 'thread': 1, 'repo': 1, 'issue_chain': 1, 'fix_outcome': 1, 'alignment': 1, 'blueprint_finding': 1}\nEdge types: {'chain_has_link_quality': 5, 'comment_chain_links_commit': 4, 'comment_chain_touches_file': 4, 'thread_has_comment': 2, 'thread_touches_file': 2, 'thread_has_comment_chain': 2, 'comment_has_chain': 2, 'issue_chain_has_comment_chain': 2, 'issue_chain_touches_file': 2, 'repo_has_thread': 1, 'thread_has_issue_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1, 'alignment_uses_comment': 1, 'alignment_uses_finding': 1, 'comment_aligns_finding': 1}\nLabels: {'bug_fix': 4, 'claimed_resolved_unverified': 3, 'thread_has_human_issue_and_fix_context': 2, 'issue_or_pull_request_thread': 1, 'ui_workflow_gap': 1, 'deployment_env_gap': 1, 'docs_or_claims': 1, 'ui_or_frontend': 1, 'human_reported_issue_then_fix_attempt': 1, 'human_reported_issue_no_linked_fix': 1, 'not_resolved_or_not_observed': 1, 'blueprint_human_gap_disagreement': 1, 'mostly follows blueprint': 1}\nOutcomes: {'claimed_resolved_unverified': 6, 'not_resolved_or_not_observed': 2}\nQuality tiers: {'weak_supervision': 3, 'unresolved': 1, 'assumption_check': 1}\nCI labels: {}\nCurriculum targets:\n- Teach models to preserve unresolved human feedback instead of hallucinating fixes.\n- Build issue-to-regression examples where no accepted fix exists yet.\nAssumption checks:\n- Can a commit be linked by issue number, SHA, changed path, or time window?\n- If no link exists, is this explicitly labelled unresolved?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/suksomsri7/siamdive", "source_id": "graph-query-motif_query-0568e057b5f9b80b", "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": "suksomsri7/siamdive", "source_dataset": "graph_queries/unresolved_feedback", "training_usage": "negative_or_unresolved"}}}, {"ruleId": "foundry_unresolved_feedback", "level": "warning", "message": {"text": "Foundry mined unresolved feedback: suksomsri7/siamdive"}, "properties": {"repobilityId": 370472, "scanner": "foundry_dataset", "fingerprint": "e1f04bd70f47fe20aa0d7ab6a1f4ecf267acf1323f8f243e5438fac113c39fd4", "category": "practices", "severity": "medium", "confidence": 0.7, "triageState": "open", "verdict": "needs_review", "isResolved": false, "reason": "Imported from mined Foundry/Fable5 evidence with real GitHub/source provenance. Review source_id before acting.", "evidence": {"meta": {"kind": "graph_query_record", "title": "Human feedback without linked fix evidence", "intent": "Negative/unresolved examples that should not be hallucinated into fixes.", "labels": {"test_or_ci": 1, "api_or_backend": 1, "docs_or_claims": 1, "ui_or_frontend": 3, "deployment_env_gap": 1, "human_feedback_general": 1, "unlinked_human_feedback": 1, "issue_or_pull_request_thread": 1, "not_resolved_or_not_observed": 1, "ambiguous_needs_more_evidence": 3, "human_reported_issue_no_linked_fix": 1, "thread_has_human_issue_without_fix_context": 2}, "source": "graph_query_export", "motif_id": "unlinked_feedback_needs_evidence", "outcomes": {"not_resolved_or_not_observed": 2, "ambiguous_needs_more_evidence": 6}, "polarity": "bad", "query_id": "unresolved_feedback", "severity": "medium", "ci_labels": {}, "synthetic": false, "edge_count": 40, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 2, "thread_has_comment": 2, "thread_touches_file": 6, "chain_has_link_quality": 4, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "issue_chain_touches_file": 6, "thread_has_comment_chain": 2, "comment_chain_touches_file": 12, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 2}, "node_count": 18, "node_types": {"repo": 1, "thread": 1, "comment": 2, "pr_file": 6, "fix_outcome": 1, "issue_chain": 1, "link_quality": 4, "comment_chain": 2}, "query_type": "motif_query", "thread_key": "suksomsri7/siamdive#3", "issue_number": "3", "quality_tiers": {"unresolved": 4}, "repo_full_name": "suksomsri7/siamdive", "training_usage": "negative_or_unresolved", "source_motif_id": "graph-pattern-motif-thread-d51cef458e1fb4e4", "graph_gold_label": "needs_more_evidence", "changed_file_labels": {"test_or_ci": 5, "api_or_backend": 5, "docs_or_claims": 5, "ui_or_frontend": 15}}, "text": "Graph query export: Human feedback without linked fix evidence\nQuery id: unresolved_feedback\nQuery type: motif_query\nIntent: Negative/unresolved examples that should not be hallucinated into fixes.\nMotif: unlinked_feedback_needs_evidence\nTraining usage: negative_or_unresolved\nGraph gold label: needs_more_evidence\nRepo: suksomsri7/siamdive\nThread: suksomsri7/siamdive#3\nEvidence:\nGraph motif: Human feedback exists without a linked fix\nMotif id: unlinked_feedback_needs_evidence\nPolarity: bad\nTraining usage: negative_or_unresolved\nSeverity: medium\nRepo: suksomsri7/siamdive\nThread: suksomsri7/siamdive#3\nGraph gold label: needs_more_evidence\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: suksomsri7/siamdive#3\nRepo: suksomsri7/siamdive\nIssue/PR number: 3\nGraph consistency label: needs_more_evidence\nNodes: 18\nEdges: 40\nNode types: {'pr_file': 6, 'link_quality': 4, 'comment': 2, 'comment_chain': 2, 'thread': 1, 'repo': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'comment_chain_touches_file': 12, 'thread_touches_file': 6, 'issue_chain_touches_file': 6, 'chain_has_link_quality': 4, 'thread_has_comment': 2, 'thread_has_comment_chain': 2, 'comment_has_chain': 2, 'issue_chain_has_comment_chain': 2, 'repo_has_thread': 1, 'thread_has_issue_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'ui_or_frontend': 3, 'ambiguous_needs_more_evidence': 3, 'thread_has_human_issue_without_fix_context': 2, 'issue_or_pull_request_thread': 1, 'human_feedback_general': 1, 'deployment_env_gap': 1, 'docs_or_claims': 1, 'api_or_backend': 1, 'test_or_ci': 1, 'unlinked_human_feedback': 1, 'human_reported_issue_no_linked_fix': 1, 'not_resolved_or_not_observed': 1}\nOutcomes: {'ambiguous_needs_more_evidence': 6, 'not_resolved_or_not_observed': 2}\nQuality tiers: {'unresolved': 4}\nCI labels: {}\nCurriculum targets:\n- Teach models to preserve unresolved human feedback instead of hallucinating fixes.\n- Build issue-to-regression examples where no accepted fix exists yet.\nAssumption checks:\n- Can a commit be linked by issue number, SHA, changed path, or time window?\n- If no link exists, is this explicitly labelled unresolved?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/suksomsri7/siamdive", "source_id": "graph-query-motif_query-87ac170f48bba816", "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": "suksomsri7/siamdive", "source_dataset": "graph_queries/unresolved_feedback", "training_usage": "negative_or_unresolved"}}}, {"ruleId": "foundry_unresolved_feedback", "level": "warning", "message": {"text": "Foundry mined unresolved feedback: suksomsri7/siamdive"}, "properties": {"repobilityId": 370471, "scanner": "foundry_dataset", "fingerprint": "8552b16ce5d70574e16d4042590a8d653acd6a6c1a4d5334ecfc16f74bb2207b", "category": "practices", "severity": "medium", "confidence": 0.7, "triageState": "open", "verdict": "needs_review", "isResolved": false, "reason": "Imported from mined Foundry/Fable5 evidence with real GitHub/source provenance. Review source_id before acting.", "evidence": {"meta": {"kind": "graph_query_record", "title": "Human feedback without linked fix evidence", "intent": "Negative/unresolved examples that should not be hallucinated into fixes.", "labels": {"test_or_ci": 1, "api_or_backend": 2, "docs_or_claims": 1, "schema_or_data": 3, "ui_or_frontend": 3, "deployment_env_gap": 1, "human_feedback_general": 1, "unlinked_human_feedback": 1, "issue_or_pull_request_thread": 1, "not_resolved_or_not_observed": 1, "ambiguous_needs_more_evidence": 3, "human_reported_issue_no_linked_fix": 1, "thread_has_human_issue_without_fix_context": 2}, "source": "graph_query_export", "motif_id": "unlinked_feedback_needs_evidence", "outcomes": {"not_resolved_or_not_observed": 2, "ambiguous_needs_more_evidence": 6}, "polarity": "bad", "query_id": "unresolved_feedback", "severity": "medium", "ci_labels": {}, "synthetic": false, "edge_count": 56, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 2, "thread_has_comment": 2, "thread_touches_file": 10, "chain_has_link_quality": 4, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "issue_chain_touches_file": 10, "thread_has_comment_chain": 2, "comment_chain_touches_file": 20, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 2}, "node_count": 22, "node_types": {"repo": 1, "thread": 1, "comment": 2, "pr_file": 10, "fix_outcome": 1, "issue_chain": 1, "link_quality": 4, "comment_chain": 2}, "query_type": "motif_query", "thread_key": "suksomsri7/siamdive#2", "issue_number": "2", "quality_tiers": {"unresolved": 4}, "repo_full_name": "suksomsri7/siamdive", "training_usage": "negative_or_unresolved", "source_motif_id": "graph-pattern-motif-thread-1d75612ff289d87f", "graph_gold_label": "needs_more_evidence", "changed_file_labels": {"test_or_ci": 5, "api_or_backend": 10, "docs_or_claims": 5, "schema_or_data": 15, "ui_or_frontend": 15}}, "text": "Graph query export: Human feedback without linked fix evidence\nQuery id: unresolved_feedback\nQuery type: motif_query\nIntent: Negative/unresolved examples that should not be hallucinated into fixes.\nMotif: unlinked_feedback_needs_evidence\nTraining usage: negative_or_unresolved\nGraph gold label: needs_more_evidence\nRepo: suksomsri7/siamdive\nThread: suksomsri7/siamdive#2\nEvidence:\nGraph motif: Human feedback exists without a linked fix\nMotif id: unlinked_feedback_needs_evidence\nPolarity: bad\nTraining usage: negative_or_unresolved\nSeverity: medium\nRepo: suksomsri7/siamdive\nThread: suksomsri7/siamdive#2\nGraph gold label: needs_more_evidence\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: suksomsri7/siamdive#2\nRepo: suksomsri7/siamdive\nIssue/PR number: 2\nGraph consistency label: needs_more_evidence\nNodes: 22\nEdges: 56\nNode types: {'pr_file': 10, 'link_quality': 4, 'comment': 2, 'comment_chain': 2, 'thread': 1, 'repo': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'comment_chain_touches_file': 20, 'thread_touches_file': 10, 'issue_chain_touches_file': 10, 'chain_has_link_quality': 4, 'thread_has_comment': 2, 'thread_has_comment_chain': 2, 'comment_has_chain': 2, 'issue_chain_has_comment_chain': 2, 'repo_has_thread': 1, 'thread_has_issue_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'schema_or_data': 3, 'ui_or_frontend': 3, 'ambiguous_needs_more_evidence': 3, 'api_or_backend': 2, 'thread_has_human_issue_without_fix_context': 2, 'issue_or_pull_request_thread': 1, 'human_feedback_general': 1, 'deployment_env_gap': 1, 'docs_or_claims': 1, 'test_or_ci': 1, 'unlinked_human_feedback': 1, 'human_reported_issue_no_linked_fix': 1, 'not_resolved_or_not_observed': 1}\nOutcomes: {'ambiguous_needs_more_evidence': 6, 'not_resolved_or_not_observed': 2}\nQuality tiers: {'unresolved': 4}\nCI labels: {}\nCurriculum targets:\n- Teach models to preserve unresolved human feedback instead of hallucinating fixes.\n- Build issue-to-regression examples where no accepted fix exists yet.\nAssumption checks:\n- Can a commit be linked by issue number, SHA, changed path, or time window?\n- If no link exists, is this explicitly labelled unresolved?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/suksomsri7/siamdive", "source_id": "graph-query-motif_query-a39778ef3002a9cc", "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": "suksomsri7/siamdive", "source_dataset": "graph_queries/unresolved_feedback", "training_usage": "negative_or_unresolved"}}}, {"ruleId": "foundry_unresolved_feedback", "level": "warning", "message": {"text": "Foundry mined unresolved feedback: suksomsri7/siamdive"}, "properties": {"repobilityId": 370470, "scanner": "foundry_dataset", "fingerprint": "a9970b8382eea848a5b8c9698c3f63d43b0822a3efbe7c743b7f6ddfa0a4ef38", "category": "practices", "severity": "medium", "confidence": 0.7, "triageState": "open", "verdict": "needs_review", "isResolved": false, "reason": "Imported from mined Foundry/Fable5 evidence with real GitHub/source provenance. Review source_id before acting.", "evidence": {"meta": {"kind": "graph_query_record", "title": "Human feedback without linked fix evidence", "intent": "Negative/unresolved examples that should not be hallucinated into fixes.", "labels": {"bug_fix": 2, "ui_or_frontend": 1, "deployment_env_gap": 1, "agent_instruction_gap": 1, "claimed_resolved_unverified": 3, "issue_or_pull_request_thread": 1, "not_resolved_or_not_observed": 1, "human_reported_issue_no_linked_fix": 1, "human_reported_issue_then_fix_attempt": 1, "thread_has_human_issue_and_fix_context": 2}, "source": "graph_query_export", "motif_id": "unlinked_feedback_needs_evidence", "outcomes": {"claimed_resolved_unverified": 6, "not_resolved_or_not_observed": 2}, "polarity": "bad", "query_id": "unresolved_feedback", "severity": "medium", "ci_labels": {}, "synthetic": false, "edge_count": 22, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 2, "thread_has_comment": 2, "thread_touches_file": 1, "chain_has_link_quality": 4, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "issue_chain_touches_file": 1, "thread_has_comment_chain": 2, "comment_chain_links_commit": 2, "comment_chain_touches_file": 2, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 2}, "node_count": 15, "node_types": {"repo": 1, "commit": 2, "thread": 1, "comment": 2, "pr_file": 1, "fix_outcome": 1, "issue_chain": 1, "link_quality": 4, "comment_chain": 2}, "query_type": "motif_query", "thread_key": "suksomsri7/siamdive#10", "issue_number": "10", "quality_tiers": {"unresolved": 1, "weak_supervision": 3}, "repo_full_name": "suksomsri7/siamdive", "training_usage": "negative_or_unresolved", "source_motif_id": "graph-pattern-motif-thread-cda1ea37f43e6c84", "graph_gold_label": "weak_supervision_needs_review", "changed_file_labels": {"ui_or_frontend": 5}}, "text": "Graph query export: Human feedback without linked fix evidence\nQuery id: unresolved_feedback\nQuery type: motif_query\nIntent: Negative/unresolved examples that should not be hallucinated into fixes.\nMotif: unlinked_feedback_needs_evidence\nTraining usage: negative_or_unresolved\nGraph gold label: weak_supervision_needs_review\nRepo: suksomsri7/siamdive\nThread: suksomsri7/siamdive#10\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: suksomsri7/siamdive\nThread: suksomsri7/siamdive#10\nGraph gold label: weak_supervision_needs_review\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: suksomsri7/siamdive#10\nRepo: suksomsri7/siamdive\nIssue/PR number: 10\nGraph consistency label: weak_supervision_needs_review\nNodes: 15\nEdges: 22\nNode types: {'link_quality': 4, 'comment': 2, 'comment_chain': 2, 'commit': 2, 'thread': 1, 'repo': 1, 'pr_file': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'chain_has_link_quality': 4, 'thread_has_comment': 2, 'thread_has_comment_chain': 2, 'comment_has_chain': 2, 'comment_chain_links_commit': 2, 'comment_chain_touches_file': 2, 'issue_chain_has_comment_chain': 2, 'repo_has_thread': 1, 'thread_touches_file': 1, 'thread_has_issue_chain': 1, 'issue_chain_touches_file': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'claimed_resolved_unverified': 3, 'bug_fix': 2, 'thread_has_human_issue_and_fix_context': 2, 'issue_or_pull_request_thread': 1, 'agent_instruction_gap': 1, 'deployment_env_gap': 1, 'ui_or_frontend': 1, 'human_reported_issue_then_fix_attempt': 1, 'human_reported_issue_no_linked_fix': 1, 'not_resolved_or_not_observed': 1}\nOutcomes: {'claimed_resolved_unverified': 6, 'not_resolved_or_not_observed': 2}\nQuality tiers: {'weak_supervision': 3, 'unresolved': 1}\nCI labels: {}\nCurriculum targets:\n- Teach models to preserve unresolved human feedback instead of hallucinating fixes.\n- Build issue-to-regression examples where no accepted fix exists yet.\nAssumption checks:\n- Can a commit be linked by issue number, SHA, changed path, or time window?\n- If no link exists, is this explicitly labelled unresolved?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/suksomsri7/siamdive", "source_id": "graph-query-motif_query-2dab0cc18579aa32", "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": "suksomsri7/siamdive", "source_dataset": "graph_queries/unresolved_feedback", "training_usage": "negative_or_unresolved"}}}, {"ruleId": "foundry_unresolved_feedback", "level": "warning", "message": {"text": "Foundry mined unresolved feedback: suksomsri7/siamdive"}, "properties": {"repobilityId": 370469, "scanner": "foundry_dataset", "fingerprint": "8fa4f353364e59c05407fd26bd8f8e96ca651a8cb2fff665bdfc8635b7c971bf", "category": "practices", "severity": "medium", "confidence": 0.7, "triageState": "open", "verdict": "needs_review", "isResolved": false, "reason": "Imported from mined Foundry/Fable5 evidence with real GitHub/source provenance. Review source_id before acting.", "evidence": {"meta": {"kind": "graph_query_record", "title": "Human feedback without linked fix evidence", "intent": "Negative/unresolved examples that should not be hallucinated into fixes.", "labels": {"test_or_ci": 1, "api_or_backend": 3, "docs_or_claims": 1, "schema_or_data": 3, "ui_or_frontend": 6, "deployment_env_gap": 1, "human_feedback_general": 1, "unlinked_human_feedback": 1, "issue_or_pull_request_thread": 1, "not_resolved_or_not_observed": 1, "ambiguous_needs_more_evidence": 3, "human_reported_issue_no_linked_fix": 1, "thread_has_human_issue_without_fix_context": 2}, "source": "graph_query_export", "motif_id": "unlinked_feedback_needs_evidence", "outcomes": {"not_resolved_or_not_observed": 2, "ambiguous_needs_more_evidence": 6}, "polarity": "bad", "query_id": "unresolved_feedback", "severity": "medium", "ci_labels": {}, "synthetic": false, "edge_count": 66, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 2, "thread_has_comment": 2, "thread_touches_file": 14, "chain_has_link_quality": 4, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "issue_chain_touches_file": 12, "thread_has_comment_chain": 2, "comment_chain_touches_file": 24, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 2}, "node_count": 26, "node_types": {"repo": 1, "thread": 1, "comment": 2, "pr_file": 14, "fix_outcome": 1, "issue_chain": 1, "link_quality": 4, "comment_chain": 2}, "query_type": "motif_query", "thread_key": "suksomsri7/siamdive#1", "issue_number": "1", "quality_tiers": {"unresolved": 4}, "repo_full_name": "suksomsri7/siamdive", "training_usage": "negative_or_unresolved", "source_motif_id": "graph-pattern-motif-thread-309c5c95f56bf18b", "graph_gold_label": "needs_more_evidence", "changed_file_labels": {"test_or_ci": 5, "api_or_backend": 15, "docs_or_claims": 5, "schema_or_data": 15, "ui_or_frontend": 30}}, "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: suksomsri7/siamdive\nThread: suksomsri7/siamdive#1\nEvidence:\nGraph motif: Human feedback exists without a linked fix\nMotif id: unlinked_feedback_needs_evidence\nPolarity: bad\nTraining usage: negative_or_unresolved\nSeverity: medium\nRepo: suksomsri7/siamdive\nThread: suksomsri7/siamdive#1\nGraph gold label: needs_more_evidence\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: suksomsri7/siamdive#1\nRepo: suksomsri7/siamdive\nIssue/PR number: 1\nGraph consistency label: needs_more_evidence\nNodes: 26\nEdges: 66\nNode types: {'pr_file': 14, 'link_quality': 4, 'comment': 2, 'comment_chain': 2, 'thread': 1, 'repo': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'comment_chain_touches_file': 24, 'thread_touches_file': 14, 'issue_chain_touches_file': 12, 'chain_has_link_quality': 4, 'thread_has_comment': 2, 'thread_has_comment_chain': 2, 'comment_has_chain': 2, 'issue_chain_has_comment_chain': 2, 'repo_has_thread': 1, 'thread_has_issue_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'ui_or_frontend': 6, 'schema_or_data': 3, 'api_or_backend': 3, 'ambiguous_needs_more_evidence': 3, 'thread_has_human_issue_without_fix_context': 2, 'issue_or_pull_request_thread': 1, 'human_feedback_general': 1, 'deployment_env_gap': 1, 'docs_or_claims': 1, 'test_or_ci': 1, 'unlinked_human_feedback': 1, 'human_reported_issue_no_linked_fix': 1, 'not_resolved_or_not_observed': 1}\nOutcomes: {'ambiguous_needs_more_evidence': 6, 'not_resolved_or_not_observed': 2}\nQuality tiers: {'unresolved': 4}\nCI labels: {}\nCurriculum targets:\n- Teach models to preserve unresolved human feedback instead of hallucinating fixes.\n- Build issue-to-regression examples where no accepted fix exists yet.\nAssumption checks:\n- Can a commit be linked by issue number, SHA, changed path, or time window?\n- If no link exists, is this explicitly labelled unresolved?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/suksomsri7/siamdive", "source_id": "graph-query-motif_query-2b7ed2dc327f307b", "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": "suksomsri7/siamdive", "source_dataset": "graph_queries/unresolved_feedback", "training_usage": "negative_or_unresolved"}}}, {"ruleId": "foundry_blueprint_gap", "level": "warning", "message": {"text": "Foundry mined blueprint gap alignment: suksomsri7/siamdive"}, "properties": {"repobilityId": 356459, "scanner": "foundry_dataset", "fingerprint": "b7500252d4311e4963dd6cf2e5c6ccd5055a89fb345dae79706c489374fdfcc3", "category": "tech_debt", "severity": "medium", "confidence": 0.7, "triageState": "open", "verdict": "needs_review", "isResolved": false, "reason": "Imported from mined Foundry/Fable5 evidence with real GitHub/source provenance. Review source_id before acting.", "evidence": {"meta": {"kind": "graph_query_record", "title": "Human feedback aligned with blueprint or architecture gaps", "intent": "Curriculum-gap examples connecting issue threads to helicopter-view gaps.", "labels": {"bug_fix": 3, "api_or_backend": 2, "ui_or_frontend": 4, "deployment_env_gap": 1, "api_integration_gap": 1, "mostly follows blueprint": 1, "claimed_resolved_unverified": 3, "issue_or_pull_request_thread": 1, "not_resolved_or_not_observed": 1, "blueprint_human_gap_disagreement": 1, "human_reported_issue_no_linked_fix": 1, "human_reported_issue_then_fix_attempt": 1, "thread_has_human_issue_and_fix_context": 2}, "source": "graph_query_export", "motif_id": "blueprint_gap_alignment", "outcomes": {"claimed_resolved_unverified": 6, "not_resolved_or_not_observed": 2}, "polarity": "mixed", "query_id": "blueprint_gap_alignment", "severity": "medium", "ci_labels": {}, "synthetic": false, "edge_count": 47, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 2, "thread_has_comment": 2, "thread_touches_file": 6, "alignment_uses_comment": 1, "alignment_uses_finding": 1, "chain_has_link_quality": 5, "comment_aligns_finding": 1, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "issue_chain_touches_file": 6, "thread_has_comment_chain": 2, "comment_chain_links_commit": 3, "comment_chain_touches_file": 12, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 2}, "node_count": 24, "node_types": {"repo": 1, "commit": 3, "thread": 1, "comment": 2, "pr_file": 6, "alignment": 1, "fix_outcome": 1, "issue_chain": 1, "link_quality": 5, "comment_chain": 2, "blueprint_finding": 1}, "query_type": "motif_query", "thread_key": "suksomsri7/siamdive#8", "issue_number": "8", "quality_tiers": {"unresolved": 1, "assumption_check": 1, "weak_supervision": 3}, "repo_full_name": "suksomsri7/siamdive", "training_usage": "curriculum_gap", "source_motif_id": "graph-pattern-motif-thread-e91a12420dc9f65a", "graph_gold_label": "weak_supervision_needs_review", "changed_file_labels": {"api_or_backend": 10, "ui_or_frontend": 20}}, "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: suksomsri7/siamdive\nThread: suksomsri7/siamdive#8\nEvidence:\nGraph motif: Human feedback aligns with blueprint or architecture gaps\nMotif id: blueprint_gap_alignment\nPolarity: mixed\nTraining usage: curriculum_gap\nSeverity: medium\nRepo: suksomsri7/siamdive\nThread: suksomsri7/siamdive#8\nGraph gold label: weak_supervision_needs_review\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: suksomsri7/siamdive#8\nRepo: suksomsri7/siamdive\nIssue/PR number: 8\nGraph consistency label: weak_supervision_needs_review\nNodes: 24\nEdges: 47\nNode types: {'pr_file': 6, 'link_quality': 5, 'commit': 3, 'comment': 2, 'comment_chain': 2, 'thread': 1, 'repo': 1, 'issue_chain': 1, 'fix_outcome': 1, 'alignment': 1, 'blueprint_finding': 1}\nEdge types: {'comment_chain_touches_file': 12, 'thread_touches_file': 6, 'issue_chain_touches_file': 6, 'chain_has_link_quality': 5, 'comment_chain_links_commit': 3, 'thread_has_comment': 2, 'thread_has_comment_chain': 2, 'comment_has_chain': 2, 'issue_chain_has_comment_chain': 2, 'repo_has_thread': 1, 'thread_has_issue_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1, 'alignment_uses_comment': 1, 'alignment_uses_finding': 1, 'comment_aligns_finding': 1}\nLabels: {'ui_or_frontend': 4, 'bug_fix': 3, 'claimed_resolved_unverified': 3, 'api_or_backend': 2, 'thread_has_human_issue_and_fix_context': 2, 'issue_or_pull_request_thread': 1, 'api_integration_gap': 1, 'deployment_env_gap': 1, 'human_reported_issue_then_fix_attempt': 1, 'human_reported_issue_no_linked_fix': 1, 'not_resolved_or_not_observed': 1, 'blueprint_human_gap_disagreement': 1, 'mostly follows blueprint': 1}\nOutcomes: {'claimed_resolved_unverified': 6, 'not_resolved_or_not_observed': 2}\nQuality tiers: {'weak_supervision': 3, 'unresolved': 1, 'assumption_check': 1}\nCI labels: {}\nCurriculum targets:\n- Use helicopter-view architecture/schema/design evidence beside issue threads.\n- Teach models to compare requested product class against implementation layers.\nAssumption checks:\n- Which blueprint layer is absent: frontend, API, data, auth, tests, or deployment?\n- Does human feedback confirm the same architectural gap?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/suksomsri7/siamdive", "source_id": "graph-query-motif_query-46812e9e7d6ca5c2", "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": "suksomsri7/siamdive", "source_dataset": "graph_queries/blueprint_gap_alignment", "training_usage": "curriculum_gap"}}}, {"ruleId": "foundry_blueprint_gap", "level": "warning", "message": {"text": "Foundry mined blueprint gap alignment: suksomsri7/siamdive"}, "properties": {"repobilityId": 356458, "scanner": "foundry_dataset", "fingerprint": "8056819c32faa81a711fa5ea5a8a5d2bbe015428c2bed9ad4d2bb7c4063b3ae3", "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": 5, "api_or_backend": 2, "docs_or_claims": 1, "schema_or_data": 1, "deployment_env_gap": 1, "data_schema_persistence": 1, "mostly follows blueprint": 1, "claimed_resolved_unverified": 3, "issue_or_pull_request_thread": 1, "not_resolved_or_not_observed": 1, "blueprint_human_gap_disagreement": 1, "human_reported_issue_no_linked_fix": 1, "human_reported_issue_then_fix_attempt": 1, "thread_has_human_issue_and_fix_context": 2}, "source": "graph_query_export", "motif_id": "blueprint_gap_alignment", "outcomes": {"claimed_resolved_unverified": 6, "not_resolved_or_not_observed": 2}, "polarity": "mixed", "query_id": "blueprint_gap_alignment", "severity": "medium", "ci_labels": {}, "synthetic": false, "edge_count": 41, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 2, "thread_has_comment": 2, "thread_touches_file": 4, "alignment_uses_comment": 1, "alignment_uses_finding": 1, "chain_has_link_quality": 5, "comment_aligns_finding": 1, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "issue_chain_touches_file": 4, "thread_has_comment_chain": 2, "comment_chain_links_commit": 5, "comment_chain_touches_file": 8, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 2}, "node_count": 24, "node_types": {"repo": 1, "commit": 5, "thread": 1, "comment": 2, "pr_file": 4, "alignment": 1, "fix_outcome": 1, "issue_chain": 1, "link_quality": 5, "comment_chain": 2, "blueprint_finding": 1}, "query_type": "motif_query", "thread_key": "suksomsri7/siamdive#7", "issue_number": "7", "quality_tiers": {"unresolved": 1, "assumption_check": 1, "weak_supervision": 3}, "repo_full_name": "suksomsri7/siamdive", "training_usage": "curriculum_gap", "source_motif_id": "graph-pattern-motif-thread-218abe2f932a4150", "graph_gold_label": "weak_supervision_needs_review", "changed_file_labels": {"api_or_backend": 10, "docs_or_claims": 5, "schema_or_data": 5}}, "text": "Graph query export: Human feedback aligned with blueprint or architecture gaps\nQuery id: blueprint_gap_alignment\nQuery type: motif_query\nIntent: Curriculum-gap examples connecting issue threads to helicopter-view gaps.\nMotif: blueprint_gap_alignment\nTraining usage: curriculum_gap\nGraph gold label: weak_supervision_needs_review\nRepo: suksomsri7/siamdive\nThread: suksomsri7/siamdive#7\nEvidence:\nGraph motif: Human feedback aligns with blueprint or architecture gaps\nMotif id: blueprint_gap_alignment\nPolarity: mixed\nTraining usage: curriculum_gap\nSeverity: medium\nRepo: suksomsri7/siamdive\nThread: suksomsri7/siamdive#7\nGraph gold label: weak_supervision_needs_review\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: suksomsri7/siamdive#7\nRepo: suksomsri7/siamdive\nIssue/PR number: 7\nGraph consistency label: weak_supervision_needs_review\nNodes: 24\nEdges: 41\nNode types: {'commit': 5, 'link_quality': 5, 'pr_file': 4, 'comment': 2, 'comment_chain': 2, 'thread': 1, 'repo': 1, 'issue_chain': 1, 'fix_outcome': 1, 'alignment': 1, 'blueprint_finding': 1}\nEdge types: {'comment_chain_touches_file': 8, 'comment_chain_links_commit': 5, 'chain_has_link_quality': 5, 'thread_touches_file': 4, 'issue_chain_touches_file': 4, 'thread_has_comment': 2, 'thread_has_comment_chain': 2, 'comment_has_chain': 2, 'issue_chain_has_comment_chain': 2, 'repo_has_thread': 1, 'thread_has_issue_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1, 'alignment_uses_comment': 1, 'alignment_uses_finding': 1, 'comment_aligns_finding': 1}\nLabels: {'bug_fix': 5, 'claimed_resolved_unverified': 3, 'api_or_backend': 2, 'thread_has_human_issue_and_fix_context': 2, 'issue_or_pull_request_thread': 1, 'data_schema_persistence': 1, 'deployment_env_gap': 1, 'docs_or_claims': 1, 'schema_or_data': 1, 'human_reported_issue_then_fix_attempt': 1, 'human_reported_issue_no_linked_fix': 1, 'not_resolved_or_not_observed': 1, 'blueprint_human_gap_disagreement': 1, 'mostly follows blueprint': 1}\nOutcomes: {'claimed_resolved_unverified': 6, 'not_resolved_or_not_observed': 2}\nQuality tiers: {'weak_supervision': 3, 'unresolved': 1, 'assumption_check': 1}\nCI labels: {}\nCurriculum targets:\n- Use helicopter-view architecture/schema/design evidence beside issue threads.\n- Teach models to compare requested product class against implementation layers.\nAssumption checks:\n- Which blueprint layer is absent: frontend, API, data, auth, tests, or deployment?\n- Does human feedback confirm the same architectural gap?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/suksomsri7/siamdive", "source_id": "graph-query-motif_query-a9e90963d0f936a9", "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": "suksomsri7/siamdive", "source_dataset": "graph_queries/blueprint_gap_alignment", "training_usage": "curriculum_gap"}}}, {"ruleId": "foundry_blueprint_gap", "level": "warning", "message": {"text": "Foundry mined blueprint gap alignment: suksomsri7/siamdive"}, "properties": {"repobilityId": 356457, "scanner": "foundry_dataset", "fingerprint": "bc6427debeec6a8ee470a9a1dd484312e81280faed6fc8c202848dd3de64298a", "category": "tech_debt", "severity": "medium", "confidence": 0.7, "triageState": "open", "verdict": "needs_review", "isResolved": false, "reason": "Imported from mined Foundry/Fable5 evidence with real GitHub/source provenance. Review source_id before acting.", "evidence": {"meta": {"kind": "graph_query_record", "title": "Human feedback aligned with blueprint or architecture gaps", "intent": "Curriculum-gap examples connecting issue threads to helicopter-view gaps.", "labels": {"bug_fix": 2, "docs_or_claims": 1, "ui_or_frontend": 1, "deployment_env_gap": 1, "data_schema_persistence": 1, "mostly follows blueprint": 1, "claimed_resolved_unverified": 3, "issue_or_pull_request_thread": 1, "not_resolved_or_not_observed": 1, "blueprint_human_gap_disagreement": 1, "human_reported_issue_no_linked_fix": 1, "human_reported_issue_then_fix_attempt": 1, "thread_has_human_issue_and_fix_context": 2}, "source": "graph_query_export", "motif_id": "blueprint_gap_alignment", "outcomes": {"claimed_resolved_unverified": 6, "not_resolved_or_not_observed": 2}, "polarity": "mixed", "query_id": "blueprint_gap_alignment", "severity": "medium", "ci_labels": {}, "synthetic": false, "edge_count": 30, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 2, "thread_has_comment": 2, "thread_touches_file": 2, "alignment_uses_comment": 1, "alignment_uses_finding": 1, "chain_has_link_quality": 5, "comment_aligns_finding": 1, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "issue_chain_touches_file": 2, "thread_has_comment_chain": 2, "comment_chain_links_commit": 2, "comment_chain_touches_file": 4, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 2}, "node_count": 19, "node_types": {"repo": 1, "commit": 2, "thread": 1, "comment": 2, "pr_file": 2, "alignment": 1, "fix_outcome": 1, "issue_chain": 1, "link_quality": 5, "comment_chain": 2, "blueprint_finding": 1}, "query_type": "motif_query", "thread_key": "suksomsri7/siamdive#5", "issue_number": "5", "quality_tiers": {"unresolved": 1, "assumption_check": 1, "weak_supervision": 3}, "repo_full_name": "suksomsri7/siamdive", "training_usage": "curriculum_gap", "source_motif_id": "graph-pattern-motif-thread-f8a14215a0f29cd1", "graph_gold_label": "weak_supervision_needs_review", "changed_file_labels": {"docs_or_claims": 5, "ui_or_frontend": 5}}, "text": "Graph query export: Human feedback aligned with blueprint or architecture gaps\nQuery id: blueprint_gap_alignment\nQuery type: motif_query\nIntent: Curriculum-gap examples connecting issue threads to helicopter-view gaps.\nMotif: blueprint_gap_alignment\nTraining usage: curriculum_gap\nGraph gold label: weak_supervision_needs_review\nRepo: suksomsri7/siamdive\nThread: suksomsri7/siamdive#5\nEvidence:\nGraph motif: Human feedback aligns with blueprint or architecture gaps\nMotif id: blueprint_gap_alignment\nPolarity: mixed\nTraining usage: curriculum_gap\nSeverity: medium\nRepo: suksomsri7/siamdive\nThread: suksomsri7/siamdive#5\nGraph gold label: weak_supervision_needs_review\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: suksomsri7/siamdive#5\nRepo: suksomsri7/siamdive\nIssue/PR number: 5\nGraph consistency label: weak_supervision_needs_review\nNodes: 19\nEdges: 30\nNode types: {'link_quality': 5, 'comment': 2, 'pr_file': 2, 'comment_chain': 2, 'commit': 2, 'thread': 1, 'repo': 1, 'issue_chain': 1, 'fix_outcome': 1, 'alignment': 1, 'blueprint_finding': 1}\nEdge types: {'chain_has_link_quality': 5, 'comment_chain_touches_file': 4, 'thread_has_comment': 2, 'thread_touches_file': 2, 'thread_has_comment_chain': 2, 'comment_has_chain': 2, 'comment_chain_links_commit': 2, 'issue_chain_has_comment_chain': 2, 'issue_chain_touches_file': 2, 'repo_has_thread': 1, 'thread_has_issue_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1, 'alignment_uses_comment': 1, 'alignment_uses_finding': 1, 'comment_aligns_finding': 1}\nLabels: {'claimed_resolved_unverified': 3, 'bug_fix': 2, 'thread_has_human_issue_and_fix_context': 2, 'issue_or_pull_request_thread': 1, 'data_schema_persistence': 1, 'deployment_env_gap': 1, 'docs_or_claims': 1, 'ui_or_frontend': 1, 'human_reported_issue_then_fix_attempt': 1, 'human_reported_issue_no_linked_fix': 1, 'not_resolved_or_not_observed': 1, 'blueprint_human_gap_disagreement': 1, 'mostly follows blueprint': 1}\nOutcomes: {'claimed_resolved_unverified': 6, 'not_resolved_or_not_observed': 2}\nQuality tiers: {'weak_supervision': 3, 'unresolved': 1, 'assumption_check': 1}\nCI labels: {}\nCurriculum targets:\n- Use helicopter-view architecture/schema/design evidence beside issue threads.\n- Teach models to compare requested product class against implementation layers.\nAssumption checks:\n- Which blueprint layer is absent: frontend, API, data, auth, tests, or deployment?\n- Does human feedback confirm the same architectural gap?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/suksomsri7/siamdive", "source_id": "graph-query-motif_query-4ce9207af3eabebc", "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": "suksomsri7/siamdive", "source_dataset": "graph_queries/blueprint_gap_alignment", "training_usage": "curriculum_gap"}}}, {"ruleId": "foundry_blueprint_gap", "level": "warning", "message": {"text": "Foundry mined blueprint gap alignment: suksomsri7/siamdive"}, "properties": {"repobilityId": 356456, "scanner": "foundry_dataset", "fingerprint": "9405a8d5f5056b3340135a9a03225185e1140d8df57bbd7e1194ac280e50c602", "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": 4, "docs_or_claims": 1, "ui_or_frontend": 1, "ui_workflow_gap": 1, "deployment_env_gap": 1, "mostly follows blueprint": 1, "claimed_resolved_unverified": 3, "issue_or_pull_request_thread": 1, "not_resolved_or_not_observed": 1, "blueprint_human_gap_disagreement": 1, "human_reported_issue_no_linked_fix": 1, "human_reported_issue_then_fix_attempt": 1, "thread_has_human_issue_and_fix_context": 2}, "source": "graph_query_export", "motif_id": "blueprint_gap_alignment", "outcomes": {"claimed_resolved_unverified": 6, "not_resolved_or_not_observed": 2}, "polarity": "mixed", "query_id": "blueprint_gap_alignment", "severity": "medium", "ci_labels": {}, "synthetic": false, "edge_count": 32, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 2, "thread_has_comment": 2, "thread_touches_file": 2, "alignment_uses_comment": 1, "alignment_uses_finding": 1, "chain_has_link_quality": 5, "comment_aligns_finding": 1, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "issue_chain_touches_file": 2, "thread_has_comment_chain": 2, "comment_chain_links_commit": 4, "comment_chain_touches_file": 4, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 2}, "node_count": 21, "node_types": {"repo": 1, "commit": 4, "thread": 1, "comment": 2, "pr_file": 2, "alignment": 1, "fix_outcome": 1, "issue_chain": 1, "link_quality": 5, "comment_chain": 2, "blueprint_finding": 1}, "query_type": "motif_query", "thread_key": "suksomsri7/siamdive#4", "issue_number": "4", "quality_tiers": {"unresolved": 1, "assumption_check": 1, "weak_supervision": 3}, "repo_full_name": "suksomsri7/siamdive", "training_usage": "curriculum_gap", "source_motif_id": "graph-pattern-motif-thread-661f880b893512de", "graph_gold_label": "weak_supervision_needs_review", "changed_file_labels": {"docs_or_claims": 5, "ui_or_frontend": 5}}, "text": "Graph query export: Human feedback aligned with blueprint or architecture gaps\nQuery id: blueprint_gap_alignment\nQuery type: motif_query\nIntent: Curriculum-gap examples connecting issue threads to helicopter-view gaps.\nMotif: blueprint_gap_alignment\nTraining usage: curriculum_gap\nGraph gold label: weak_supervision_needs_review\nRepo: suksomsri7/siamdive\nThread: suksomsri7/siamdive#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: suksomsri7/siamdive\nThread: suksomsri7/siamdive#4\nGraph gold label: weak_supervision_needs_review\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: suksomsri7/siamdive#4\nRepo: suksomsri7/siamdive\nIssue/PR number: 4\nGraph consistency label: weak_supervision_needs_review\nNodes: 21\nEdges: 32\nNode types: {'link_quality': 5, 'commit': 4, 'comment': 2, 'pr_file': 2, 'comment_chain': 2, 'thread': 1, 'repo': 1, 'issue_chain': 1, 'fix_outcome': 1, 'alignment': 1, 'blueprint_finding': 1}\nEdge types: {'chain_has_link_quality': 5, 'comment_chain_links_commit': 4, 'comment_chain_touches_file': 4, 'thread_has_comment': 2, 'thread_touches_file': 2, 'thread_has_comment_chain': 2, 'comment_has_chain': 2, 'issue_chain_has_comment_chain': 2, 'issue_chain_touches_file': 2, 'repo_has_thread': 1, 'thread_has_issue_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1, 'alignment_uses_comment': 1, 'alignment_uses_finding': 1, 'comment_aligns_finding': 1}\nLabels: {'bug_fix': 4, 'claimed_resolved_unverified': 3, 'thread_has_human_issue_and_fix_context': 2, 'issue_or_pull_request_thread': 1, 'ui_workflow_gap': 1, 'deployment_env_gap': 1, 'docs_or_claims': 1, 'ui_or_frontend': 1, 'human_reported_issue_then_fix_attempt': 1, 'human_reported_issue_no_linked_fix': 1, 'not_resolved_or_not_observed': 1, 'blueprint_human_gap_disagreement': 1, 'mostly follows blueprint': 1}\nOutcomes: {'claimed_resolved_unverified': 6, 'not_resolved_or_not_observed': 2}\nQuality tiers: {'weak_supervision': 3, 'unresolved': 1, 'assumption_check': 1}\nCI labels: {}\nCurriculum targets:\n- Use helicopter-view architecture/schema/design evidence beside issue threads.\n- Teach models to compare requested product class against implementation layers.\nAssumption checks:\n- Which blueprint layer is absent: frontend, API, data, auth, tests, or deployment?\n- Does human feedback confirm the same architectural gap?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/suksomsri7/siamdive", "source_id": "graph-query-motif_query-f77f9d07a6d324f0", "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": "suksomsri7/siamdive", "source_dataset": "graph_queries/blueprint_gap_alignment", "training_usage": "curriculum_gap"}}}, {"ruleId": "foundry_assumption_check", "level": "warning", "message": {"text": "Foundry mined assumption checks: suksomsri7/siamdive"}, "properties": {"repobilityId": 312698, "scanner": "foundry_dataset", "fingerprint": "2a06cd34b66f93c0a9b3752f23f7ef0efe006fdecbb792b077d65cb5122f5332", "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": "suksomsri7/siamdive#9", "human_labels": ["agent_instruction_gap", "api_or_backend", "deployment_env_gap"], "issue_number": "9", "thread_label": "thread_has_human_issue_and_fix_context", "outcome_label": "claimed_resolved_unverified", "source_backed": true, "max_confidence": 0.642, "repo_full_name": "suksomsri7/siamdive", "training_usage": "weak_supervision", "confidence_tier": "weak_supervision", "source_chain_id": "evidence-chain-issue_chain-d24d92fe6dd8f572", "helicopter_views": {"schemas": 2}, "artifact_families": {"ci": 2, "docs": 2, "schemas": 4}, "source_chain_kind": "issue_chain", "changed_file_count": 1, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {"api_or_backend": 1}, "linked_commit_count": 4, "helicopter_view_count": 2, "source_artifact_count": 8, "classification_reasons": ["source_graph_has_real_artifacts", "source_graph_has_verification_artifacts", "repo_has_isolated_helicopter_views", "link_quality_weak_supervision", "high_risk_human_feedback_label"], "linked_ci_commit_count": 0, "verification_artifact_count": 6, "design_schema_api_artifact_count": 4}, "text": "Comment chain pattern product: assumption_checks\nRepo: suksomsri7/siamdive\nThread: suksomsri7/siamdive#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: suksomsri7/siamdive#9\nRepo: suksomsri7/siamdive\nThread label: thread_has_human_issue_and_fix_context\nOutcome: claimed_resolved_unverified\nComment count: 2\nLinked commit count: 4\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 1\nLabels: {'agent_instruction_gap': 1, 'deployment_env_gap': 1}\nPolarities: {'bad': 2}\nChanged file labels: {'api_or_backend': 1}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-1cf663947466fd88\",\n    \"kind\": \"pull_request_body\",\n    \"label\": \"agent_instruction_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/suksomsri7/siamdive/pull/9\",\n    \"text\": \"GitHub feedback: agent_instruction_gap\\nPolarity: bad\\nKind: pull_request_body\\nRepo: suksomsri7/siamdive\\nAuthor: suksomsri7 (User)\\nURL: https://github.com/suksomsri7/siamdive/pull/9\\nTitle: [arkai-v2 P2 fix] tool use for OpenAI/OpenRouter + correct AiPlanSess\u2026\\nBody:\\n\u2026ion upsert\\r\\n\\r\\nTwo prod issues found during Phase 2 smoke (provider was openrouter+gpt-4o-mini, not Anthropic \u2014 slot extraction never fired and the wrong row was being read):\\r\\n\\r\\n1. streamOpenAI now accepts tools+onToolCall like streamAnthropic.\\r\\n   - Converts Anthropic tool spec to OpenAI {type:\\\"function\\\", function:{...}}\\r\\n   - Tracks tool_calls deltas per index, finalizes on finish_reason=\\\"tool_calls\\\"\\r\\n   - Same SSE slotUpdate event shape as Anthropic path\\r\\n\\r\\n2. AiPlanSession upsert was keyed by id=deviceId, but profile.ts (Phase 1.5) creates rows with auto-CUID id. The two writers were forking into separate rows. Fixed: findFirst by deviceId then update existing or create new (mirrors profile.ts pattern). One row per device, both behaviorContext and slots co-located.\\r\\n\\r\\nTool use now enabled for: anthropic, openai, openrouter. Google still text-only.\"\n  },\n  {\n    \"id\": \"github-feedback-comment-cba9ff9c6101d4fc\",\n    \"kind\": \"issue_comment\",\n    \"label\": \"deployment_env_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/suksomsri7/siamdive/pull/9#issuecomment-4372566589\",\n    \"text\": \"GitHub feedback: deployment_env_gap\\nPolarity: bad\\nKind: issue_comment\\nRepo: suksomsri7/siamdive\\nAuthor: vercel[bot] (Bot)\\nURL: https://github.com/suksomsri7/siamdive/pull/9#issuecomment-4372566589\\nTitle: \\nBody:\\n[vc]: #cKExHYzMuO8Id+RIwJbW+K5U9ahLKlCHB06vnVs6CN8=:eyJpc01vbm9yZXBvIjp0cnVlLCJ0eXBlIjoiZ2l0aHViIiwicHJvamVjdHMiOlt7Im5hbWUiOiJzaWFtZGl2ZSIsInByb2plY3RJZCI6InByal85djJnMDZtcDdEVWEyQkhkMTRQNHE5ZkUyWnZDIiwibGl2ZUZlZWRiYWNrIjp7InJlc29sdmVkIjowLCJ1bnJlc29sdmVkI\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/suksomsri7/siamdive", "source_id": "comment-chain-pattern-assumption_checks-545a4ae8a7be5f45", "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": "suksomsri7/siamdive", "source_dataset": "comment_chain_patterns/assumption_checks", "training_usage": "weak_supervision"}}}, {"ruleId": "foundry_assumption_check", "level": "warning", "message": {"text": "Foundry mined assumption checks: suksomsri7/siamdive"}, "properties": {"repobilityId": 312697, "scanner": "foundry_dataset", "fingerprint": "da416ef9cf3037eb8d1c5007da01e2bf0858bda491f03a75e2020e478227f016", "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": "suksomsri7/siamdive#8", "human_labels": ["api_integration_gap", "api_or_backend", "deployment_env_gap", "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.625, "repo_full_name": "suksomsri7/siamdive", "training_usage": "weak_supervision", "confidence_tier": "weak_supervision", "source_chain_id": "evidence-chain-issue_chain-a502bccf135c3a91", "helicopter_views": {"schemas": 2}, "artifact_families": {"ci": 2, "docs": 2, "schemas": 4}, "source_chain_kind": "issue_chain", "changed_file_count": 6, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {"api_or_backend": 2, "ui_or_frontend": 4}, "linked_commit_count": 3, "helicopter_view_count": 2, "source_artifact_count": 8, "classification_reasons": ["source_graph_has_real_artifacts", "source_graph_has_verification_artifacts", "repo_has_isolated_helicopter_views", "link_quality_weak_supervision", "high_risk_human_feedback_label"], "linked_ci_commit_count": 0, "verification_artifact_count": 6, "design_schema_api_artifact_count": 4}, "text": "Comment chain pattern product: assumption_checks\nRepo: suksomsri7/siamdive\nThread: suksomsri7/siamdive#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: suksomsri7/siamdive#8\nRepo: suksomsri7/siamdive\nThread label: thread_has_human_issue_and_fix_context\nOutcome: claimed_resolved_unverified\nComment count: 2\nLinked commit count: 3\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 6\nLabels: {'api_integration_gap': 1, 'deployment_env_gap': 1}\nPolarities: {'bad': 2}\nChanged file labels: {'api_or_backend': 2, 'ui_or_frontend': 4}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-91838e917f0fbc9a\",\n    \"kind\": \"pull_request_body\",\n    \"label\": \"api_integration_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/suksomsri7/siamdive/pull/8\",\n    \"text\": \"GitHub feedback: api_integration_gap\\nPolarity: bad\\nKind: pull_request_body\\nRepo: suksomsri7/siamdive\\nAuthor: suksomsri7 (User)\\nURL: https://github.com/suksomsri7/siamdive/pull/8\\nTitle: [arkai-v2 P2] slot extraction via Anthropic tool use\\nBody:\\n- New `update_slots` tool: AI silently records dates/headcount/region/certs/budget/style/interests\\r\\n- Server validates + persists to AiPlanSession.slots (id=deviceId, 30d TTL)\\r\\n- SSE pushes slotUpdate events; chips animate as model fills slots\\r\\n- SlotTrackerChips above ChatPanel: 8-lang labels, ghost required-3, click-to-clear\\r\\n- Required-3 (dates+headcount+region) \u2192 \\\"Build my plan\\\" CTA (Phase 3 stub)\\r\\n- Resume: GET /api/ark-ai/session hydrates chips on open\\r\\n- DELETE /api/ark-ai/session on Clear Chat; PATCH for chip clear\\r\\n- ARK_AI_SLOT_FILLED events fired per changed field\\r\\n- Slot validator: 5 unit smoke tests pass (idempotent, invalid drop, all 7 fields)\"\n  },\n  {\n    \"id\": \"github-feedback-comment-66cedad62e02765c\",\n    \"kind\": \"issue_comment\",\n    \"label\": \"deployment_env_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/suksomsri7/siamdive/pull/8#issuecomment-4372417418\",\n    \"text\": \"GitHub feedback: deployment_env_gap\\nPolarity: bad\\nKind: issue_comment\\nRepo: suksomsri7/siamdive\\nAuthor: vercel[bot] (Bot)\\nURL: https://github.com/suksomsri7/siamdive/pull/8#issuecomment-4372417418\\nTitle: \\nBody:\\n[vc]: #VzJeiQ7KepcLqfmGg2G1m9jk+UPEotakPlv73baQm/Q=:eyJpc01vbm9yZXBvIjp0cnVlLCJ0eXBlIjoiZ2l0aHViIiwicHJvamVjdHMiOlt7Im5hbWUiOiJzaWFtZGl2ZSIsInByb2plY3RJZCI6InByal85djJnMDZtcDdEVWEyQkhkMTRQNHE5ZkUyWnZDIiwibGl2ZUZlZWRiYWNrIjp7InJlc29sdmVkIjowLCJ1bnJlc29sdmVkIjowLCJ0b3RhbCI6MCwibGluayI6InNpYW1kaXZlLWdpdC1hcmthaS12Mi1waGFzZS0yLXNsb3RzLXNpYW1kaXZlcy1wcm9qZWN0cy52ZXJjZWwuYXBwIn0sImluc3BlY3RvclVybCI6Imh0dHBzOi8vdmVyY2VsLmNvbS9zaWFtZGl2ZXMtcHJvamVjdHMvc2lhbWRpdmUvNUtzbk\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/suksomsri7/siamdive", "source_id": "comment-chain-pattern-assumption_checks-c104bcd2a8526f07", "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": "suksomsri7/siamdive", "source_dataset": "comment_chain_patterns/assumption_checks", "training_usage": "weak_supervision"}}}, {"ruleId": "foundry_assumption_check", "level": "warning", "message": {"text": "Foundry mined assumption checks: suksomsri7/siamdive"}, "properties": {"repobilityId": 312696, "scanner": "foundry_dataset", "fingerprint": "9b3e59a4032aeab2ccc742371442e03ce283abf215a457aaab95eb4be59b4e9f", "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": "suksomsri7/siamdive#7", "human_labels": ["api_or_backend", "data_schema_persistence", "deployment_env_gap", "docs_or_claims", "schema_or_data"], "issue_number": "7", "thread_label": "thread_has_human_issue_and_fix_context", "outcome_label": "claimed_resolved_unverified", "source_backed": true, "max_confidence": 0.642, "repo_full_name": "suksomsri7/siamdive", "training_usage": "weak_supervision", "confidence_tier": "weak_supervision", "source_chain_id": "evidence-chain-issue_chain-f93192c67af24e0c", "helicopter_views": {"schemas": 2}, "artifact_families": {"ci": 2, "docs": 2, "schemas": 4}, "source_chain_kind": "issue_chain", "changed_file_count": 4, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {"api_or_backend": 2, "docs_or_claims": 1, "schema_or_data": 1}, "linked_commit_count": 5, "helicopter_view_count": 2, "source_artifact_count": 8, "classification_reasons": ["source_graph_has_real_artifacts", "source_graph_has_verification_artifacts", "repo_has_isolated_helicopter_views", "link_quality_weak_supervision", "high_risk_human_feedback_label"], "linked_ci_commit_count": 0, "verification_artifact_count": 6, "design_schema_api_artifact_count": 4}, "text": "Comment chain pattern product: assumption_checks\nRepo: suksomsri7/siamdive\nThread: suksomsri7/siamdive#7\nOutcome: claimed_resolved_unverified\nThread label: thread_has_human_issue_and_fix_context\nSource graph label: source_backed_multi_signal_graph\nReasons: source_graph_has_real_artifacts, source_graph_has_verification_artifacts, repo_has_isolated_helicopter_views, link_quality_weak_supervision, high_risk_human_feedback_label\nChain evidence:\nIssue/PR evidence chain: suksomsri7/siamdive#7\nRepo: suksomsri7/siamdive\nThread label: thread_has_human_issue_and_fix_context\nOutcome: claimed_resolved_unverified\nComment count: 2\nLinked commit count: 5\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 4\nLabels: {'data_schema_persistence': 1, 'deployment_env_gap': 1}\nPolarities: {'bad': 2}\nChanged file labels: {'docs_or_claims': 1, 'schema_or_data': 1, 'api_or_backend': 2}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-cbec6437e207e8ff\",\n    \"kind\": \"pull_request_body\",\n    \"label\": \"data_schema_persistence\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/suksomsri7/siamdive/pull/7\",\n    \"text\": \"GitHub feedback: data_schema_persistence\\nPolarity: bad\\nKind: pull_request_body\\nRepo: suksomsri7/siamdive\\nAuthor: suksomsri7 (User)\\nURL: https://github.com/suksomsri7/siamdive/pull/7\\nTitle: [arkai-v2 P4] Itinerary\u2192UserPlan unify (additive, migration deferred)\\nBody:\\nPhase 4 \u2014 additive code changes only. Data migration script committed but NOT auto-run (requires DB snapshot per master plan 4.5 \u26a0\ufe0f).\\r\\n\\r\\n- prisma/scripts/migrate-itinerary-to-userplan.sql: idempotent backfill from Itinerary \u2192 UserPlan, preserves shortId for URL stability, packs legacy fields into trips JSON\\r\\n- /api/ark-ai/itinerary?mode=popular: union ARK_AI UserPlans + Itinerary, dedupe by shortId, sort by viewCount\\r\\n- /api/og/plan: fall back to UserPlan when shortId missing in Itinerary\\r\\n\\r\\nPlan page already supports both tables (legacy \u2192 ItineraryPageClient, modern \u2192 SharedPlanClient) so no change needed there.\\r\\n\\r\\nItinerary table drop deferred to Phase 7 cleanup cron (after 30-day monitoring window per master plan 4.8).\"\n  },\n  {\n    \"id\": \"github-feedback-comment-87ba5539583900df\",\n    \"kind\": \"issue_comment\",\n    \"label\": \"deployment_env_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/suksomsri7/siamdive/pull/7#issuecomment-4372097461\",\n    \"text\": \"GitHub feedback: deployment_env_gap\\nPolarity: bad\\nKind: issue_comment\\nRepo: suksomsri7/siamdive\\nAuthor: vercel[bot] (Bot)\\nURL: https://github.com/suksomsri7/siamdive/pull/7#issuecomment-4372097461\\nTitle: \\nBody:\\n[vc]: #+ECJw77WLlUpD9f+xIWGZD4zhoqIJHq8KiGPoeNbyYQ=:eyJpc01vbm9yZXBvIjp0cnVlLCJ0eXBlIjoiZ2l0aHViIiwicHJvamVjdHMiOlt7Im5hbWUiOiJzaWFtZGl2ZSIsInByb2plY3RJZCI6InByal85djJnMDZtcDdEVWEyQkhkMTRQNHE5ZkUyWnZDIiwibGl2ZUZlZWRiYWNrIjp7InJlc29sdmVkIjowLCJ1bnJlc29sdmVkIjowLCJ0b3RhbCI6MCwibGluayI6InNpYW1kaXZlLWdpdC1hcmthaS12Mi1waGFzZS00LXVuaWZ5LXNpYW1kaXZlcy1wcm9q\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/suksomsri7/siamdive", "source_id": "comment-chain-pattern-assumption_checks-cbcb0be3b15efd9e", "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": "suksomsri7/siamdive", "source_dataset": "comment_chain_patterns/assumption_checks", "training_usage": "weak_supervision"}}}, {"ruleId": "foundry_assumption_check", "level": "warning", "message": {"text": "Foundry mined assumption checks: suksomsri7/siamdive"}, "properties": {"repobilityId": 312695, "scanner": "foundry_dataset", "fingerprint": "96e0fb7db1065077d33f315ae76aa3b0fd2f6b3ebd7e0b694dbac44daea08cf4", "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": "suksomsri7/siamdive#6", "human_labels": ["api_or_backend", "deployment_env_gap", "docs_or_claims", "security_auth_secret", "ui_or_frontend"], "issue_number": "6", "thread_label": "thread_has_human_issue_and_fix_context", "outcome_label": "claimed_resolved_unverified", "source_backed": true, "max_confidence": 0.625, "repo_full_name": "suksomsri7/siamdive", "training_usage": "weak_supervision", "confidence_tier": "weak_supervision", "source_chain_id": "evidence-chain-issue_chain-aecbedceb82dbe32", "helicopter_views": {"schemas": 2}, "artifact_families": {"ci": 2, "docs": 2, "schemas": 4}, "source_chain_kind": "issue_chain", "changed_file_count": 3, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {"api_or_backend": 1, "docs_or_claims": 1, "ui_or_frontend": 1}, "linked_commit_count": 4, "helicopter_view_count": 2, "source_artifact_count": 8, "classification_reasons": ["source_graph_has_real_artifacts", "source_graph_has_verification_artifacts", "repo_has_isolated_helicopter_views", "link_quality_weak_supervision", "high_risk_human_feedback_label"], "linked_ci_commit_count": 0, "verification_artifact_count": 6, "design_schema_api_artifact_count": 4}, "text": "Comment chain pattern product: assumption_checks\nRepo: suksomsri7/siamdive\nThread: suksomsri7/siamdive#6\nOutcome: claimed_resolved_unverified\nThread label: thread_has_human_issue_and_fix_context\nSource graph label: source_backed_multi_signal_graph\nReasons: source_graph_has_real_artifacts, source_graph_has_verification_artifacts, repo_has_isolated_helicopter_views, link_quality_weak_supervision, high_risk_human_feedback_label\nChain evidence:\nIssue/PR evidence chain: suksomsri7/siamdive#6\nRepo: suksomsri7/siamdive\nThread label: thread_has_human_issue_and_fix_context\nOutcome: claimed_resolved_unverified\nComment count: 2\nLinked commit count: 4\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 3\nLabels: {'security_auth_secret': 1, 'deployment_env_gap': 1}\nPolarities: {'bad': 2}\nChanged file labels: {'docs_or_claims': 1, 'ui_or_frontend': 1, 'api_or_backend': 1}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-6622a7d91ebdb45e\",\n    \"kind\": \"pull_request_body\",\n    \"label\": \"security_auth_secret\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/suksomsri7/siamdive/pull/6\",\n    \"text\": \"GitHub feedback: security_auth_secret\\nPolarity: bad\\nKind: pull_request_body\\nRepo: suksomsri7/siamdive\\nAuthor: suksomsri7 (User)\\nURL: https://github.com/suksomsri7/siamdive/pull/6\\nTitle: [arkai-v2 P7] privacy AI section + cleanup-ai-data cron\\nBody:\\nPrivacy:\\r\\n- \\\"Ark AI Trip Advisor\\\" section added to all 8 language privacy pages (en/th/cn/ja/ko/de/fr/ru). Explains the data flow: which LLM providers, 1-hour anonymous behavior cache, 90-day token-usage log (no message content), no full transcript on server, server-side medical interception.\\r\\n\\r\\nExpiration cron \u2014 POST /api/cron/cleanup-ai-data (X-Cron-Secret auth):\\r\\n- AiUsageLog: 90 days\\r\\n- AiPlanSession: past expiresAt\\r\\n- AnalyticsEvent ARK_AI_*: 90 days\\r\\n- UserPlan source=ARK_AI viewCount=0: 7 days\\r\\n- UserPlan source=ARK_AI public viewCount<3: 30 days\\r\\n\\r\\nVercel cron schedule entry still needs to be added (vercel.json) \u2014 that config step is user-driven so the schedule is visible in the dashboard.\\r\\n\\r\\nOut of scope (low value or no AI dependency yet): generic-mode opt-out toggle (7.2), PDPA email consent (7.3 \u2014 no email collection in Ark AI yet), in-plan safety disclaimer (7.4 \u2014 AI no longer generates plans per system-prompt rule 8).\"\n  },\n  {\n    \"id\": \"github-feedback-comment-338918aa3931dce5\",\n    \"kind\": \"issue_comment\",\n    \"label\": \"deployment_env_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/suksomsri7/siamdive/pull/6#issuecomment-4372093806\",\n    \"text\": \"GitHub feedback: deployment_env_gap\\nPolarity: bad\\nKind: issue_comment\\nRepo: suksomsri7/siamdive\\nAuthor: vercel[bot] (Bot)\\nURL: https://github.com/suksomsri7/siamdive/pull/6#issuecomment-4372093806\\nTitle: \\nBody:\\n[vc]: #8A3kCyxyqtoza2pZyv7f60P6Hl6VPpZSyoGWssuHNJ8=:eyJpc01vbm9yZXBvIjp0cnVlLCJ0eXBlIjoiZ2l0aHViIiwicHJvamVjdHMiOlt7Im5hbWUiOiJzaWFtZGl2ZSIsInByb2plY3R\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/suksomsri7/siamdive", "source_id": "comment-chain-pattern-assumption_checks-a2c89e60185938de", "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": "suksomsri7/siamdive", "source_dataset": "comment_chain_patterns/assumption_checks", "training_usage": "weak_supervision"}}}, {"ruleId": "foundry_assumption_check", "level": "warning", "message": {"text": "Foundry mined assumption checks: suksomsri7/siamdive"}, "properties": {"repobilityId": 312694, "scanner": "foundry_dataset", "fingerprint": "5956ab17ffb42a0b90084098f66f229eb1abeecd2bf08622a62af95a4e2a0138", "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": "suksomsri7/siamdive#5", "human_labels": ["data_schema_persistence", "deployment_env_gap", "docs_or_claims", "ui_or_frontend"], "issue_number": "5", "thread_label": "thread_has_human_issue_and_fix_context", "outcome_label": "claimed_resolved_unverified", "source_backed": true, "max_confidence": 0.607, "repo_full_name": "suksomsri7/siamdive", "training_usage": "weak_supervision", "confidence_tier": "weak_supervision", "source_chain_id": "evidence-chain-issue_chain-a46a0bb37c005924", "helicopter_views": {"schemas": 2}, "artifact_families": {"ci": 2, "docs": 2, "schemas": 4}, "source_chain_kind": "issue_chain", "changed_file_count": 2, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {"docs_or_claims": 1, "ui_or_frontend": 1}, "linked_commit_count": 2, "helicopter_view_count": 2, "source_artifact_count": 8, "classification_reasons": ["source_graph_has_real_artifacts", "source_graph_has_verification_artifacts", "repo_has_isolated_helicopter_views", "link_quality_weak_supervision", "high_risk_human_feedback_label"], "linked_ci_commit_count": 0, "verification_artifact_count": 6, "design_schema_api_artifact_count": 4}, "text": "Comment chain pattern product: assumption_checks\nRepo: suksomsri7/siamdive\nThread: suksomsri7/siamdive#5\nOutcome: claimed_resolved_unverified\nThread label: thread_has_human_issue_and_fix_context\nSource graph label: source_backed_multi_signal_graph\nReasons: source_graph_has_real_artifacts, source_graph_has_verification_artifacts, repo_has_isolated_helicopter_views, link_quality_weak_supervision, high_risk_human_feedback_label\nChain evidence:\nIssue/PR evidence chain: suksomsri7/siamdive#5\nRepo: suksomsri7/siamdive\nThread label: thread_has_human_issue_and_fix_context\nOutcome: claimed_resolved_unverified\nComment count: 2\nLinked commit count: 2\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 2\nLabels: {'data_schema_persistence': 1, 'deployment_env_gap': 1}\nPolarities: {'bad': 2}\nChanged file labels: {'docs_or_claims': 1, 'ui_or_frontend': 1}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-5152ca460453c4c7\",\n    \"kind\": \"pull_request_body\",\n    \"label\": \"data_schema_persistence\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/suksomsri7/siamdive/pull/5\",\n    \"text\": \"GitHub feedback: data_schema_persistence\\nPolarity: bad\\nKind: pull_request_body\\nRepo: suksomsri7/siamdive\\nAuthor: suksomsri7 (User)\\nURL: https://github.com/suksomsri7/siamdive/pull/5\\nTitle: [arkai-v2 P5] RAG blog area boost + category hints\\nBody:\\nPhase 5 RAG enhancement \u2014 area-aware blog recommendations:\\r\\n- RagBoat now exposes areaIds (service area IDs) alongside human-readable area name\\r\\n- RagBlog now exposes category + serviceAreaIds (Phase 1 schema fields, finally surfaced)\\r\\n- buildRagContext: blogs whose serviceAreaIds intersect with available boat areas get a +2 score boost. So when a user asks \\\"what about diving Phuket?\\\", a blog tagged with the Phuket service area surfaces even if its title doesn't say \\\"Phuket\\\" verbatim.\\r\\n- Blog context lines now include category + areaTags count for the AI to use when picking the most relevant article\\r\\n\\r\\nSkill (5.1-5.3) and bulk-tag UI (5.4-5.8) deferred \u2014 both require user-driven work outside this branch (separate plugin repo + a non-trivial backoffice page). Backfill via SQL if needed before those land.\"\n  },\n  {\n    \"id\": \"github-feedback-comment-218865856a21b045\",\n    \"kind\": \"issue_comment\",\n    \"label\": \"deployment_env_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/suksomsri7/siamdive/pull/5#issuecomment-4372090665\",\n    \"text\": \"GitHub feedback: deployment_env_gap\\nPolarity: bad\\nKind: issue_comment\\nRepo: suksomsri7/siamdive\\nAuthor: vercel[bot] (Bot)\\nURL: https://github.com/suksomsri7/siamdive/pull/5#issuecomment-4372090665\\nTitle: \\nBody:\\n[vc]: #1y1sKXfU7jRMLm0Uckn3bKzzry8ciSTFMcXiYqoTBxc=:eyJpc01vbm9yZXBvIjp0cnVlLCJ0eXBlIjoiZ2l0aHViIiwicHJvamVjdHMiOlt7Im5hbWUiOiJzaWFtZGl2ZSIsInByb2plY3RJZCI6InByal85djJnMDZtcDdEVWEyQkhkMTRQNHE5ZkUyWnZDIiwibGl2ZUZlZWRiYWNrIjp7InJlc29sdmVkIjowLCJ1bnJlc29sdmVkIjowLCJ0b3RhbCI6MCwibGluayI6InNpYW1kaXZlLWdpdC1hcmtha\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/suksomsri7/siamdive", "source_id": "comment-chain-pattern-assumption_checks-8c2c759b6b1da77c", "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": "suksomsri7/siamdive", "source_dataset": "comment_chain_patterns/assumption_checks", "training_usage": "weak_supervision"}}}, {"ruleId": "foundry_assumption_check", "level": "warning", "message": {"text": "Foundry mined assumption checks: suksomsri7/siamdive"}, "properties": {"repobilityId": 312693, "scanner": "foundry_dataset", "fingerprint": "bfb251ebf120c60d3f2484006b6b9b245ddd7e6ae4ee4b307539ad6f3e2ddbf0", "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": "suksomsri7/siamdive#4", "human_labels": ["deployment_env_gap", "docs_or_claims", "ui_or_frontend", "ui_workflow_gap"], "issue_number": "4", "thread_label": "thread_has_human_issue_and_fix_context", "outcome_label": "claimed_resolved_unverified", "source_backed": true, "max_confidence": 0.625, "repo_full_name": "suksomsri7/siamdive", "training_usage": "weak_supervision", "confidence_tier": "weak_supervision", "source_chain_id": "evidence-chain-issue_chain-96ac0cfda9a42b7a", "helicopter_views": {"schemas": 2}, "artifact_families": {"ci": 2, "docs": 2, "schemas": 4}, "source_chain_kind": "issue_chain", "changed_file_count": 2, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {"docs_or_claims": 1, "ui_or_frontend": 1}, "linked_commit_count": 4, "helicopter_view_count": 2, "source_artifact_count": 8, "classification_reasons": ["source_graph_has_real_artifacts", "source_graph_has_verification_artifacts", "repo_has_isolated_helicopter_views", "link_quality_weak_supervision", "high_risk_human_feedback_label"], "linked_ci_commit_count": 0, "verification_artifact_count": 6, "design_schema_api_artifact_count": 4}, "text": "Comment chain pattern product: assumption_checks\nRepo: suksomsri7/siamdive\nThread: suksomsri7/siamdive#4\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: suksomsri7/siamdive#4\nRepo: suksomsri7/siamdive\nThread label: thread_has_human_issue_and_fix_context\nOutcome: claimed_resolved_unverified\nComment count: 2\nLinked commit count: 4\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 2\nLabels: {'ui_workflow_gap': 1, 'deployment_env_gap': 1}\nPolarities: {'bad': 2}\nChanged file labels: {'docs_or_claims': 1, 'ui_or_frontend': 1}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-a16dd2f29c9ae684\",\n    \"kind\": \"pull_request_body\",\n    \"label\": \"ui_workflow_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/suksomsri7/siamdive/pull/4\",\n    \"text\": \"GitHub feedback: ui_workflow_gap\\nPolarity: bad\\nKind: pull_request_body\\nRepo: suksomsri7/siamdive\\nAuthor: suksomsri7 (User)\\nURL: https://github.com/suksomsri7/siamdive/pull/4\\nTitle: [arkai-v2 P7.5] a11y polish: aria-live, dialog role, keyboard nav\\nBody:\\nArkAIChatPanel a11y improvements:\\r\\n- Panel now role=\\\"dialog\\\" aria-modal=\\\"true\\\" with localized aria-label\\r\\n- Messages container is aria-live=\\\"polite\\\" + aria-atomic=\\\"false\\\" so screen readers announce streaming chunks without re-reading the whole transcript\\r\\n- Escape key closes the panel\\r\\n- Textarea auto-focuses on open so keyboard users land ready to type\\r\\n- Close, clear-chat, and send buttons now carry aria-label (icon-only buttons were unlabeled before)\\r\\n- Decorative SVGs marked aria-hidden so screen readers skip them\\r\\n\\r\\nSentry / formal monitoring (7.5.1-7.5.3) and Lighthouse run (7.5.7) deferred \u2014 both are user-driven (account creation, runtime checks).\"\n  },\n  {\n    \"id\": \"github-feedback-comment-961537c8f56fb7c0\",\n    \"kind\": \"issue_comment\",\n    \"label\": \"deployment_env_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/suksomsri7/siamdive/pull/4#issuecomment-4372086876\",\n    \"text\": \"GitHub feedback: deployment_env_gap\\nPolarity: bad\\nKind: issue_comment\\nRepo: suksomsri7/siamdive\\nAuthor: vercel[bot] (Bot)\\nURL: https://github.com/suksomsri7/siamdive/pull/4#issuecomment-4372086876\\nTitle: \\nBody:\\n[vc]: #MVlqK1ItRYt//BYc4sNA7eiH/uxhRcqLsp+VKp5yZAM=:eyJpc01vbm9yZXBvIjp0cnVlLCJ0eXBlIjoiZ2l0aHViIiwicHJvamVjdHMiOlt7Im5hbWUiOiJzaWFtZGl2ZSIsInByb2plY3RJZCI6InByal85djJnMDZtcDdEVWEyQkhkMTRQNHE5ZkUyWnZDIiwibGl2ZUZlZWRiYWNrIjp7InJlc29sdmVkIjowLCJ1bnJlc29sdmVkIjowLCJ0b3RhbCI6MCwibGluayI6InNpYW1kaXZlLWdpdC1hcmthaS12Mi1waGFzZS03NS1tb25pdG9yLXNpYW1kaXZlcy1wcm9qZWN0cy52ZXJjZWwuYXBwIn0sImluc3BlY3RvclVybCI6Imh0dHBzOi8vdmVyY2VsLmNvbS9zaWFtZGl2ZXMtcHJvamVjdHMvc2lhbWRpdm\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/suksomsri7/siamdive", "source_id": "comment-chain-pattern-assumption_checks-511ae8896e19a358", "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": "suksomsri7/siamdive", "source_dataset": "comment_chain_patterns/assumption_checks", "training_usage": "weak_supervision"}}}, {"ruleId": "foundry_assumption_check", "level": "warning", "message": {"text": "Foundry mined assumption checks: suksomsri7/siamdive"}, "properties": {"repobilityId": 312692, "scanner": "foundry_dataset", "fingerprint": "9c6e8245c485152f4bbcc06200f088dfd4801a4f718d3d08a5a99cc0d73aaed0", "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": "suksomsri7/siamdive#3", "human_labels": ["api_or_backend", "deployment_env_gap", "docs_or_claims", "human_feedback_general", "test_or_ci", "ui_or_frontend"], "issue_number": "3", "thread_label": "thread_has_human_issue_without_fix_context", "outcome_label": "ambiguous_needs_more_evidence", "source_backed": true, "max_confidence": 0.0, "repo_full_name": "suksomsri7/siamdive", "training_usage": "negative_or_unresolved", "confidence_tier": "unresolved", "source_chain_id": "evidence-chain-issue_chain-79d2670f03eaf8f0", "helicopter_views": {"schemas": 2}, "artifact_families": {"ci": 2, "docs": 2, "schemas": 4}, "source_chain_kind": "issue_chain", "changed_file_count": 6, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {"test_or_ci": 1, "api_or_backend": 1, "docs_or_claims": 1, "ui_or_frontend": 3}, "linked_commit_count": 0, "helicopter_view_count": 2, "source_artifact_count": 8, "classification_reasons": ["source_graph_has_real_artifacts", "source_graph_has_verification_artifacts", "repo_has_isolated_helicopter_views", "link_quality_unresolved", "high_risk_human_feedback_label"], "linked_ci_commit_count": 0, "verification_artifact_count": 6, "design_schema_api_artifact_count": 4}, "text": "Comment chain pattern product: assumption_checks\nRepo: suksomsri7/siamdive\nThread: suksomsri7/siamdive#3\nOutcome: ambiguous_needs_more_evidence\nThread label: thread_has_human_issue_without_fix_context\nSource graph label: source_backed_multi_signal_graph\nReasons: source_graph_has_real_artifacts, source_graph_has_verification_artifacts, repo_has_isolated_helicopter_views, link_quality_unresolved, high_risk_human_feedback_label\nChain evidence:\nIssue/PR evidence chain: suksomsri7/siamdive#3\nRepo: suksomsri7/siamdive\nThread label: thread_has_human_issue_without_fix_context\nOutcome: ambiguous_needs_more_evidence\nComment count: 2\nLinked commit count: 0\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 6\nLabels: {'human_feedback_general': 1, 'deployment_env_gap': 1}\nPolarities: {'neutral': 1, 'bad': 1}\nChanged file labels: {'docs_or_claims': 1, 'api_or_backend': 1, 'ui_or_frontend': 3, 'test_or_ci': 1}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-b76dc30b78976476\",\n    \"kind\": \"pull_request_body\",\n    \"label\": \"human_feedback_general\",\n    \"polarity\": \"neutral\",\n    \"url\": \"https://github.com/suksomsri7/siamdive/pull/3\",\n    \"text\": \"GitHub feedback: human_feedback_general\\nPolarity: neutral\\nKind: pull_request_body\\nRepo: suksomsri7/siamdive\\nAuthor: suksomsri7 (User)\\nURL: https://github.com/suksomsri7/siamdive/pull/3\\nTitle: Arkai v2 phase 1.7 safety\\nBody:\\n\"\n  },\n  {\n    \"id\": \"github-feedback-comment-e7d9c4fd783b14af\",\n    \"kind\": \"issue_comment\",\n    \"label\": \"deployment_env_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/suksomsri7/siamdive/pull/3#issuecomment-4372083622\",\n    \"text\": \"GitHub feedback: deployment_env_gap\\nPolarity: bad\\nKind: issue_comment\\nRepo: suksomsri7/siamdive\\nAuthor: vercel[bot] (Bot)\\nURL: https://github.com/suksomsri7/siamdive/pull/3#issuecomment-4372083622\\nTitle: \\nBody:\\n[vc]: #BA2SAYxjPGAVJEEOBdpzr7goRnRtBWDhprZquUKDEZo=:eyJpc01vbm9yZXBvIjp0cnVlLCJ0eXBlIjoiZ2l0aHViIiwicHJvamVjdHMiOlt7Im5hbWUiOiJzaWFtZGl2ZSIsInByb2plY3RJZCI6InByal85djJnMDZtcDdEVWEyQkhkMTRQNHE5ZkUyWnZDIiwibGl2ZUZlZWRiYWNrIjp7InJlc29sdmVkIjowLCJ1bnJlc29sdmVkIjowLCJ0b3RhbCI6MCwibGluayI6InNpYW1kaXZlLWdpdC1hcmthaS12Mi1waGFzZS0xNy1zYWZldHktc2lhbWRpdmVzLXByb2plY3RzLnZlcmNlbC5hcHAifSwiaW5zcGVjdG9yVXJsIjoiaHR0cHM6Ly92ZXJjZWwuY29tL3NpYW1kaXZlcy1wcm9qZWN0cy9zaWFtZGl2ZS9FaEp3aHlFYVh4SlNrNThCRlcxS3ZXQkFmVzdEIiwicHJldmlld1VybCI6InNpYW1kaXZlLWdpdC1hcmthaS12Mi1waGFzZS0xNy1zYWZldHktc2lhbWRpdmVzLXByb2plY3RzLnZlcmNlbC5hcHAiLCJuZXh0Q29tbWl0U3RhdHVzIjoiREVQTE9ZRUQifV19\\nThe latest updates on your projects. Learn more about [Vercel for GitHub](https://vercel.link/github-learn-more).\\n\\n| Project | Deployment | Actions | Updated (UTC) |\\n| :--- | :----- | :------ | :------ |\\n| [siamdive](https://vercel.com/siamdives-projects/siamdive) | ![Ready](https://vercel.com/static/status/ready.svg) [Ready](http\"\n  }\n]\nChanged files:\n[\n  {\n    \"id\": \"github-pr-file-file-b3c3e2e0eca54107\",\n    \"filename\": \"ARK_AI_V2_T\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/suksomsri7/siamdive", "source_id": "comment-chain-pattern-assumption_checks-0ddf389e842a991c", "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": "suksomsri7/siamdive", "source_dataset": "comment_chain_patterns/assumption_checks", "training_usage": "negative_or_unresolved"}}}, {"ruleId": "foundry_assumption_check", "level": "warning", "message": {"text": "Foundry mined assumption checks: suksomsri7/siamdive"}, "properties": {"repobilityId": 312691, "scanner": "foundry_dataset", "fingerprint": "d8f87c6b42ca0ffbbb23f3f5ce9817f41236544647f27e15844c2c507fc0f2e6", "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": "suksomsri7/siamdive#2", "human_labels": ["api_or_backend", "deployment_env_gap", "docs_or_claims", "human_feedback_general", "schema_or_data", "test_or_ci", "ui_or_frontend"], "issue_number": "2", "thread_label": "thread_has_human_issue_without_fix_context", "outcome_label": "ambiguous_needs_more_evidence", "source_backed": true, "max_confidence": 0.0, "repo_full_name": "suksomsri7/siamdive", "training_usage": "negative_or_unresolved", "confidence_tier": "unresolved", "source_chain_id": "evidence-chain-issue_chain-d347849428c7039a", "helicopter_views": {"schemas": 2}, "artifact_families": {"ci": 2, "docs": 2, "schemas": 4}, "source_chain_kind": "issue_chain", "changed_file_count": 10, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {"test_or_ci": 1, "api_or_backend": 2, "docs_or_claims": 1, "schema_or_data": 3, "ui_or_frontend": 3}, "linked_commit_count": 0, "helicopter_view_count": 2, "source_artifact_count": 8, "classification_reasons": ["source_graph_has_real_artifacts", "source_graph_has_verification_artifacts", "repo_has_isolated_helicopter_views", "link_quality_unresolved", "high_risk_human_feedback_label"], "linked_ci_commit_count": 0, "verification_artifact_count": 6, "design_schema_api_artifact_count": 4}, "text": "Comment chain pattern product: assumption_checks\nRepo: suksomsri7/siamdive\nThread: suksomsri7/siamdive#2\nOutcome: ambiguous_needs_more_evidence\nThread label: thread_has_human_issue_without_fix_context\nSource graph label: source_backed_multi_signal_graph\nReasons: source_graph_has_real_artifacts, source_graph_has_verification_artifacts, repo_has_isolated_helicopter_views, link_quality_unresolved, high_risk_human_feedback_label\nChain evidence:\nIssue/PR evidence chain: suksomsri7/siamdive#2\nRepo: suksomsri7/siamdive\nThread label: thread_has_human_issue_without_fix_context\nOutcome: ambiguous_needs_more_evidence\nComment count: 2\nLinked commit count: 0\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 10\nLabels: {'human_feedback_general': 1, 'deployment_env_gap': 1}\nPolarities: {'neutral': 1, 'bad': 1}\nChanged file labels: {'docs_or_claims': 1, 'schema_or_data': 3, 'api_or_backend': 2, 'ui_or_frontend': 3, 'test_or_ci': 1}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-60c9cadb8f22c15b\",\n    \"kind\": \"pull_request_body\",\n    \"label\": \"human_feedback_general\",\n    \"polarity\": \"neutral\",\n    \"url\": \"https://github.com/suksomsri7/siamdive/pull/2\",\n    \"text\": \"GitHub feedback: human_feedback_general\\nPolarity: neutral\\nKind: pull_request_body\\nRepo: suksomsri7/siamdive\\nAuthor: suksomsri7 (User)\\nURL: https://github.com/suksomsri7/siamdive/pull/2\\nTitle: Arkai v2 phase 1.5 behavior\\nBody:\\n\"\n  },\n  {\n    \"id\": \"github-feedback-comment-8d96cd55e788904d\",\n    \"kind\": \"issue_comment\",\n    \"label\": \"deployment_env_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/suksomsri7/siamdive/pull/2#issuecomment-4370115228\",\n    \"text\": \"GitHub feedback: deployment_env_gap\\nPolarity: bad\\nKind: issue_comment\\nRepo: suksomsri7/siamdive\\nAuthor: vercel[bot] (Bot)\\nURL: https://github.com/suksomsri7/siamdive/pull/2#issuecomment-4370115228\\nTitle: \\nBody:\\n[vc]: #l2UwJaZE9soVJdYFLEN0ptAgZIdznCYnd1Bw4sOASdM=:eyJpc01vbm9yZXBvIjp0cnVlLCJ0eXBlIjoiZ2l0aHViIiwicHJvamVjdHMiOlt7Im5hbWUiOiJzaWFtZGl2ZSIsInByb2plY3RJZCI6InByal85djJnMDZtcDdEVWEyQkhkMTRQNHE5ZkUyWnZDIiwibGl2ZUZlZWRiYWNrIjp7InJlc29sdmVkIjowLCJ1bnJlc29sdmVkIjowLCJ0b3RhbCI6MCwibGluayI6InNpYW1kaXZlLWdpdC1hcmthaS12Mi1waGFzZS0xNS1iZWhhdmlvci1zaWFtZGl2ZXMtcHJvamVjdHMudmVyY2VsLmFwcCJ9LCJpbnNwZWN0b3JVcmwiOiJodHRwczovL3ZlcmNlbC5jb20vc2lhbWRpdmVzLXByb2plY3RzL3NpYW1kaXZlL0puc2lRaEJuajEzZmVmZ01WSDhnTWhMb1VrODMiLCJwcmV2aWV3VXJsIjoic2lhbWRpdmUtZ2l0LWFya2FpLXYyLXBoYXNlLTE1LWJlaGF2aW9yLXNpYW1kaXZlcy1wcm9qZWN0cy52ZXJjZWwuYXBwIiwibmV4dENvbW1pdFN0YXR1cyI6IkRFUExPWUVEIn1dfQ==\\nThe latest updates on your projects. Learn more about [Vercel for GitHub](https://vercel.link/github-learn-more).\\n\\n| Project | Deployment | Actions | Updated (UTC) |\\n| :--- | :----- | :------ | :------ |\\n| [siamdive](https://vercel.com/siamdives-projects/siamdive) | ![Ready](https://vercel.com/static/status/ready.svg) [Rea\"\n  }\n]\nChanged files:\n[\n  {\n    \"id\": \"github-pr-file-file-b33fa768c7b1f590\",\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/suksomsri7/siamdive", "source_id": "comment-chain-pattern-assumption_checks-abe31b40189334a0", "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": "suksomsri7/siamdive", "source_dataset": "comment_chain_patterns/assumption_checks", "training_usage": "negative_or_unresolved"}}}, {"ruleId": "foundry_assumption_check", "level": "warning", "message": {"text": "Foundry mined assumption checks: suksomsri7/siamdive"}, "properties": {"repobilityId": 312690, "scanner": "foundry_dataset", "fingerprint": "3d8ce4a90d7db0774e860fcf9a4f661be79e7449d93c8121c4970e826092032b", "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": "suksomsri7/siamdive#10", "human_labels": ["agent_instruction_gap", "deployment_env_gap", "ui_or_frontend"], "issue_number": "10", "thread_label": "thread_has_human_issue_and_fix_context", "outcome_label": "claimed_resolved_unverified", "source_backed": true, "max_confidence": 0.607, "repo_full_name": "suksomsri7/siamdive", "training_usage": "weak_supervision", "confidence_tier": "weak_supervision", "source_chain_id": "evidence-chain-issue_chain-9c496c1da8a86e53", "helicopter_views": {"schemas": 2}, "artifact_families": {"ci": 2, "docs": 2, "schemas": 4}, "source_chain_kind": "issue_chain", "changed_file_count": 1, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {"ui_or_frontend": 1}, "linked_commit_count": 2, "helicopter_view_count": 2, "source_artifact_count": 8, "classification_reasons": ["source_graph_has_real_artifacts", "source_graph_has_verification_artifacts", "repo_has_isolated_helicopter_views", "link_quality_weak_supervision", "high_risk_human_feedback_label"], "linked_ci_commit_count": 0, "verification_artifact_count": 6, "design_schema_api_artifact_count": 4}, "text": "Comment chain pattern product: assumption_checks\nRepo: suksomsri7/siamdive\nThread: suksomsri7/siamdive#10\nOutcome: claimed_resolved_unverified\nThread label: thread_has_human_issue_and_fix_context\nSource graph label: source_backed_multi_signal_graph\nReasons: source_graph_has_real_artifacts, source_graph_has_verification_artifacts, repo_has_isolated_helicopter_views, link_quality_weak_supervision, high_risk_human_feedback_label\nChain evidence:\nIssue/PR evidence chain: suksomsri7/siamdive#10\nRepo: suksomsri7/siamdive\nThread label: thread_has_human_issue_and_fix_context\nOutcome: claimed_resolved_unverified\nComment count: 2\nLinked commit count: 2\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 1\nLabels: {'agent_instruction_gap': 1, 'deployment_env_gap': 1}\nPolarities: {'bad': 2}\nChanged file labels: {'ui_or_frontend': 1}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-3527b9c40a82e653\",\n    \"kind\": \"pull_request_body\",\n    \"label\": \"agent_instruction_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/suksomsri7/siamdive/pull/10\",\n    \"text\": \"GitHub feedback: agent_instruction_gap\\nPolarity: bad\\nKind: pull_request_body\\nRepo: suksomsri7/siamdive\\nAuthor: suksomsri7 (User)\\nURL: https://github.com/suksomsri7/siamdive/pull/10\\nTitle: [arkai-v2 P2 fix2] make slot tool use mandatory in prompt + concrete \u2026\\nBody:\\n\u2026examples\\r\\n\\r\\nGPT-4o-mini saw the tool but chose to ask the user \\\"would you like us to record this?\\\" instead of calling silently. Strengthens the slot section:\\r\\n\\r\\n- Frames tool use as MUST when user's message contains slot signals\\r\\n- Adds 5 concrete few-shot examples (TH+EN) showing valid + skip cases\\r\\n- Anchors today's date so relative phrasing resolves correctly\\r\\n- Explicit \\\"do NOT ask the user \u2014 just call the tool silently\\\"\\r\\n\\r\\nStays auto tool_choice (not forced) so non-slot turns don't trigger spurious calls.\"\n  },\n  {\n    \"id\": \"github-feedback-comment-a81113bea41a2a25\",\n    \"kind\": \"issue_comment\",\n    \"label\": \"deployment_env_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/suksomsri7/siamdive/pull/10#issuecomment-4372614671\",\n    \"text\": \"GitHub feedback: deployment_env_gap\\nPolarity: bad\\nKind: issue_comment\\nRepo: suksomsri7/siamdive\\nAuthor: vercel[bot] (Bot)\\nURL: https://github.com/suksomsri7/siamdive/pull/10#issuecomment-4372614671\\nTitle: \\nBody:\\n[vc]: #i7ci9t9np0j98jlu953J9F2s25WD7DV96/RZDcxZ7jA=:eyJpc01vbm9yZXBvIjp0cnVlLCJ0eXBlIjoiZ2l0aHViIiwicHJvamVjdHMiOlt7Im5hbWUiOiJzaWFtZGl2ZSIsInByb2plY3RJZCI6InByal85djJnMDZtcDdEVWEyQkhkMTRQNHE5ZkUyWnZDIiwibGl2ZUZlZWRiYWNrIjp7InJlc29sdmVkIjowLCJ1bnJlc29sdmVkIjowLCJ0b3RhbCI6MCwibGluayI6InNpYW1kaXZlLWdpdC1hcmthaS12Mi1waGFzZS0yLXNsb3RzLWZpeC1zaWFtZGl2ZXMtcHJvamVjdHMudmVyY2VsLmFwcCJ9LCJpbnNwZWN0b3JVcmwiOiJodHRwczovL3ZlcmNlbC5jb20vc2lhbWRpdmVzLXByb2plY3RzL3NpYW1kaXZlL0RKaVRoSERaNHJpNnRxb0xvY0Q1NWY4ZVkyQlkiLCJwcmV2aWV3VXJsIjoic2lhbWRpdmUtZ2l0LWFya2FpLXYyLXBoYXNlLTItc2xvdHMtZml4LXNpYW1kaXZlcy1wcm9qZWN0cy\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/suksomsri7/siamdive", "source_id": "comment-chain-pattern-assumption_checks-bcc05534b6245b39", "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": "suksomsri7/siamdive", "source_dataset": "comment_chain_patterns/assumption_checks", "training_usage": "weak_supervision"}}}, {"ruleId": "foundry_assumption_check", "level": "warning", "message": {"text": "Foundry mined assumption checks: suksomsri7/siamdive"}, "properties": {"repobilityId": 312689, "scanner": "foundry_dataset", "fingerprint": "cbe9bfe12db8c1186ef6bdc390342d7c8a84a6206af357a3b5a7f90350133c20", "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": "suksomsri7/siamdive#1", "human_labels": ["api_or_backend", "deployment_env_gap", "docs_or_claims", "human_feedback_general", "schema_or_data", "test_or_ci", "ui_or_frontend"], "issue_number": "1", "thread_label": "thread_has_human_issue_without_fix_context", "outcome_label": "ambiguous_needs_more_evidence", "source_backed": true, "max_confidence": 0.0, "repo_full_name": "suksomsri7/siamdive", "training_usage": "negative_or_unresolved", "confidence_tier": "unresolved", "source_chain_id": "evidence-chain-issue_chain-580e06ba3eb44d08", "helicopter_views": {"schemas": 2}, "artifact_families": {"ci": 2, "docs": 2, "schemas": 4}, "source_chain_kind": "issue_chain", "changed_file_count": 14, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {"test_or_ci": 1, "api_or_backend": 3, "docs_or_claims": 1, "schema_or_data": 3, "ui_or_frontend": 6}, "linked_commit_count": 0, "helicopter_view_count": 2, "source_artifact_count": 8, "classification_reasons": ["source_graph_has_real_artifacts", "source_graph_has_verification_artifacts", "repo_has_isolated_helicopter_views", "link_quality_unresolved", "high_risk_human_feedback_label"], "linked_ci_commit_count": 0, "verification_artifact_count": 6, "design_schema_api_artifact_count": 4}, "text": "Comment chain pattern product: assumption_checks\nRepo: suksomsri7/siamdive\nThread: suksomsri7/siamdive#1\nOutcome: ambiguous_needs_more_evidence\nThread label: thread_has_human_issue_without_fix_context\nSource graph label: source_backed_multi_signal_graph\nReasons: source_graph_has_real_artifacts, source_graph_has_verification_artifacts, repo_has_isolated_helicopter_views, link_quality_unresolved, high_risk_human_feedback_label\nChain evidence:\nIssue/PR evidence chain: suksomsri7/siamdive#1\nRepo: suksomsri7/siamdive\nThread label: thread_has_human_issue_without_fix_context\nOutcome: ambiguous_needs_more_evidence\nComment count: 2\nLinked commit count: 0\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 14\nLabels: {'human_feedback_general': 1, 'deployment_env_gap': 1}\nPolarities: {'neutral': 1, 'bad': 1}\nChanged file labels: {'docs_or_claims': 1, 'schema_or_data': 3, 'api_or_backend': 3, 'ui_or_frontend': 6, 'test_or_ci': 1}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-774335e816cabfb7\",\n    \"kind\": \"pull_request_body\",\n    \"label\": \"human_feedback_general\",\n    \"polarity\": \"neutral\",\n    \"url\": \"https://github.com/suksomsri7/siamdive/pull/1\",\n    \"text\": \"GitHub feedback: human_feedback_general\\nPolarity: neutral\\nKind: pull_request_body\\nRepo: suksomsri7/siamdive\\nAuthor: suksomsri7 (User)\\nURL: https://github.com/suksomsri7/siamdive/pull/1\\nTitle: Arkai v2 phase 1 cost guard\\nBody:\\n\"\n  },\n  {\n    \"id\": \"github-feedback-comment-83e3bb4566ef3b14\",\n    \"kind\": \"issue_comment\",\n    \"label\": \"deployment_env_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/suksomsri7/siamdive/pull/1#issuecomment-4369733558\",\n    \"text\": \"GitHub feedback: deployment_env_gap\\nPolarity: bad\\nKind: issue_comment\\nRepo: suksomsri7/siamdive\\nAuthor: vercel[bot] (Bot)\\nURL: https://github.com/suksomsri7/siamdive/pull/1#issuecomment-4369733558\\nTitle: \\nBody:\\n[vc]: #8HDUK56AFv+aGH/Bt+pbvxRAcXbxfXXcmcNBuoKtDNo=:eyJpc01vbm9yZXBvIjp0cnVlLCJ0eXBlIjoiZ2l0aHViIiwicHJvamVjdHMiOlt7Im5hbWUiOiJzaWFtZGl2ZSIsInByb2plY3RJZCI6InByal85djJnMDZtcDdEVWEyQkhkMTRQNHE5ZkUyWnZDIiwibGl2ZUZlZWRiYWNrIjp7InJlc29sdmVkIjowLCJ1bnJlc29sdmVkIjowLCJ0b3RhbCI6MCwibGluayI6InNpYW1kaXZlLWdpdC1hcmthaS12Mi1waGFzZS0xLWNvc3QtZ3VhcmQtc2lhbWRpdmVzLXByb2plY3RzLnZlcmNlbC5hcHAifSwiaW5zcGVjdG9yVXJsIjoiaHR0cHM6Ly92ZXJjZWwuY29tL3NpYW1kaXZlcy1wcm9qZWN0cy9zaWFtZGl2ZS91R1BERE1id2RZWnp2aTdQdHV5MnppOEtZdjZRIiwicHJldmlld1VybCI6InNpYW1kaXZlLWdpdC1hcmthaS12Mi1waGFzZS0xLWNvc3QtZ3VhcmQtc2lhbWRpdmVzLXByb2plY3RzLnZlcmNlbC5hcHAiLCJuZXh0Q29tbWl0U3RhdHVzIjoiREVQTE9ZRUQifV19\\nThe latest updates on your projects. Learn more about [Vercel for GitHub](https://vercel.link/github-learn-more).\\n\\n| Project | Deployment | Actions | Updated (UTC) |\\n| :--- | :----- | :------ | :------ |\\n| [siamdive](https://vercel.com/siamdives-projects/siamdive) | ![Ready](https://vercel.com/static/status/ready.svg) [Rea\"\n  }\n]\nChanged files:\n[\n  {\n    \"id\": \"github-pr-file-file-63bf9fe32d86f03d\",\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/suksomsri7/siamdive", "source_id": "comment-chain-pattern-assumption_checks-76a1afbf05a96bac", "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": "suksomsri7/siamdive", "source_dataset": "comment_chain_patterns/assumption_checks", "training_usage": "negative_or_unresolved"}}}, {"ruleId": "foundry_docs_only_fix", "level": "error", "message": {"text": "Foundry mined docs only runtime fix: suksomsri7/siamdive"}, "properties": {"repobilityId": 358292, "scanner": "foundry_dataset", "fingerprint": "3a377eae49f1dad5e1777f45067bc7a0355eb9e726e6c05d7c1357013abfd9a5", "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": 2, "docs_or_claims": 1, "ui_or_frontend": 1, "deployment_env_gap": 1, "data_schema_persistence": 1, "mostly follows blueprint": 1, "claimed_resolved_unverified": 3, "issue_or_pull_request_thread": 1, "not_resolved_or_not_observed": 1, "blueprint_human_gap_disagreement": 1, "human_reported_issue_no_linked_fix": 1, "human_reported_issue_then_fix_attempt": 1, "thread_has_human_issue_and_fix_context": 2}, "source": "graph_query_export", "motif_id": "docs_only_runtime_fix", "outcomes": {"claimed_resolved_unverified": 6, "not_resolved_or_not_observed": 2}, "polarity": "bad", "query_id": "docs_only_runtime_fix", "severity": "high", "ci_labels": {}, "synthetic": false, "edge_count": 30, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 2, "thread_has_comment": 2, "thread_touches_file": 2, "alignment_uses_comment": 1, "alignment_uses_finding": 1, "chain_has_link_quality": 5, "comment_aligns_finding": 1, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "issue_chain_touches_file": 2, "thread_has_comment_chain": 2, "comment_chain_links_commit": 2, "comment_chain_touches_file": 4, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 2}, "node_count": 19, "node_types": {"repo": 1, "commit": 2, "thread": 1, "comment": 2, "pr_file": 2, "alignment": 1, "fix_outcome": 1, "issue_chain": 1, "link_quality": 5, "comment_chain": 2, "blueprint_finding": 1}, "query_type": "motif_query", "thread_key": "suksomsri7/siamdive#5", "issue_number": "5", "quality_tiers": {"unresolved": 1, "assumption_check": 1, "weak_supervision": 3}, "repo_full_name": "suksomsri7/siamdive", "training_usage": "assumption_check", "source_motif_id": "graph-pattern-motif-thread-00ab13e426517b2a", "graph_gold_label": "weak_supervision_needs_review", "changed_file_labels": {"docs_or_claims": 5, "ui_or_frontend": 5}}, "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: weak_supervision_needs_review\nRepo: suksomsri7/siamdive\nThread: suksomsri7/siamdive#5\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: suksomsri7/siamdive\nThread: suksomsri7/siamdive#5\nGraph gold label: weak_supervision_needs_review\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: suksomsri7/siamdive#5\nRepo: suksomsri7/siamdive\nIssue/PR number: 5\nGraph consistency label: weak_supervision_needs_review\nNodes: 19\nEdges: 30\nNode types: {'link_quality': 5, 'comment': 2, 'pr_file': 2, 'comment_chain': 2, 'commit': 2, 'thread': 1, 'repo': 1, 'issue_chain': 1, 'fix_outcome': 1, 'alignment': 1, 'blueprint_finding': 1}\nEdge types: {'chain_has_link_quality': 5, 'comment_chain_touches_file': 4, 'thread_has_comment': 2, 'thread_touches_file': 2, 'thread_has_comment_chain': 2, 'comment_has_chain': 2, 'comment_chain_links_commit': 2, 'issue_chain_has_comment_chain': 2, 'issue_chain_touches_file': 2, 'repo_has_thread': 1, 'thread_has_issue_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1, 'alignment_uses_comment': 1, 'alignment_uses_finding': 1, 'comment_aligns_finding': 1}\nLabels: {'claimed_resolved_unverified': 3, 'bug_fix': 2, 'thread_has_human_issue_and_fix_context': 2, 'issue_or_pull_request_thread': 1, 'data_schema_persistence': 1, 'deployment_env_gap': 1, 'docs_or_claims': 1, 'ui_or_frontend': 1, 'human_reported_issue_then_fix_attempt': 1, 'human_reported_issue_no_linked_fix': 1, 'not_resolved_or_not_observed': 1, 'blueprint_human_gap_disagreement': 1, 'mostly follows blueprint': 1}\nOutcomes: {'claimed_resolved_unverified': 6, 'not_resolved_or_not_observed': 2}\nQuality tiers: {'weak_supervision': 3, 'unresolved': 1, 'assumption_check': 1}\nCI labels: {}\nCurriculum targets:\n- 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/suksomsri7/siamdive", "source_id": "graph-query-motif_query-57c47f6c345d76d4", "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": "suksomsri7/siamdive", "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: suksomsri7/siamdive"}, "properties": {"repobilityId": 358291, "scanner": "foundry_dataset", "fingerprint": "1bc3e7f07b3c5725574eb5e1f3b452eede4c730fb332373c556e30ec15f5c52b", "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": 4, "docs_or_claims": 1, "ui_or_frontend": 1, "ui_workflow_gap": 1, "deployment_env_gap": 1, "mostly follows blueprint": 1, "claimed_resolved_unverified": 3, "issue_or_pull_request_thread": 1, "not_resolved_or_not_observed": 1, "blueprint_human_gap_disagreement": 1, "human_reported_issue_no_linked_fix": 1, "human_reported_issue_then_fix_attempt": 1, "thread_has_human_issue_and_fix_context": 2}, "source": "graph_query_export", "motif_id": "docs_only_runtime_fix", "outcomes": {"claimed_resolved_unverified": 6, "not_resolved_or_not_observed": 2}, "polarity": "bad", "query_id": "docs_only_runtime_fix", "severity": "high", "ci_labels": {}, "synthetic": false, "edge_count": 32, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 2, "thread_has_comment": 2, "thread_touches_file": 2, "alignment_uses_comment": 1, "alignment_uses_finding": 1, "chain_has_link_quality": 5, "comment_aligns_finding": 1, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "issue_chain_touches_file": 2, "thread_has_comment_chain": 2, "comment_chain_links_commit": 4, "comment_chain_touches_file": 4, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 2}, "node_count": 21, "node_types": {"repo": 1, "commit": 4, "thread": 1, "comment": 2, "pr_file": 2, "alignment": 1, "fix_outcome": 1, "issue_chain": 1, "link_quality": 5, "comment_chain": 2, "blueprint_finding": 1}, "query_type": "motif_query", "thread_key": "suksomsri7/siamdive#4", "issue_number": "4", "quality_tiers": {"unresolved": 1, "assumption_check": 1, "weak_supervision": 3}, "repo_full_name": "suksomsri7/siamdive", "training_usage": "assumption_check", "source_motif_id": "graph-pattern-motif-thread-913ad13130177f44", "graph_gold_label": "weak_supervision_needs_review", "changed_file_labels": {"docs_or_claims": 5, "ui_or_frontend": 5}}, "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: weak_supervision_needs_review\nRepo: suksomsri7/siamdive\nThread: suksomsri7/siamdive#4\nEvidence:\nGraph motif: Runtime/integration complaint answered mostly with docs or claims\nMotif id: docs_only_runtime_fix\nPolarity: bad\nTraining usage: assumption_check\nSeverity: high\nRepo: suksomsri7/siamdive\nThread: suksomsri7/siamdive#4\nGraph gold label: weak_supervision_needs_review\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: suksomsri7/siamdive#4\nRepo: suksomsri7/siamdive\nIssue/PR number: 4\nGraph consistency label: weak_supervision_needs_review\nNodes: 21\nEdges: 32\nNode types: {'link_quality': 5, 'commit': 4, 'comment': 2, 'pr_file': 2, 'comment_chain': 2, 'thread': 1, 'repo': 1, 'issue_chain': 1, 'fix_outcome': 1, 'alignment': 1, 'blueprint_finding': 1}\nEdge types: {'chain_has_link_quality': 5, 'comment_chain_links_commit': 4, 'comment_chain_touches_file': 4, 'thread_has_comment': 2, 'thread_touches_file': 2, 'thread_has_comment_chain': 2, 'comment_has_chain': 2, 'issue_chain_has_comment_chain': 2, 'issue_chain_touches_file': 2, 'repo_has_thread': 1, 'thread_has_issue_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1, 'alignment_uses_comment': 1, 'alignment_uses_finding': 1, 'comment_aligns_finding': 1}\nLabels: {'bug_fix': 4, 'claimed_resolved_unverified': 3, 'thread_has_human_issue_and_fix_context': 2, 'issue_or_pull_request_thread': 1, 'ui_workflow_gap': 1, 'deployment_env_gap': 1, 'docs_or_claims': 1, 'ui_or_frontend': 1, 'human_reported_issue_then_fix_attempt': 1, 'human_reported_issue_no_linked_fix': 1, 'not_resolved_or_not_observed': 1, 'blueprint_human_gap_disagreement': 1, 'mostly follows blueprint': 1}\nOutcomes: {'claimed_resolved_unverified': 6, 'not_resolved_or_not_observed': 2}\nQuality tiers: {'weak_supervision': 3, 'unresolved': 1, 'assumption_check': 1}\nCI labels: {}\nCurriculum targets:\n- 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/suksomsri7/siamdive", "source_id": "graph-query-motif_query-4b7f2308a6b93aad", "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": "suksomsri7/siamdive", "source_dataset": "graph_queries/docs_only_runtime_fix", "training_usage": "assumption_check"}}}, {"ruleId": "foundry_schema_ui_api_gap", "level": "error", "message": {"text": "Foundry mined schema ui api mismatch: suksomsri7/siamdive"}, "properties": {"repobilityId": 331003, "scanner": "foundry_dataset", "fingerprint": "49223f9f479d54c1c174e602a91199d81b93a06a82a9ddd9b78cba8395701693", "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": 5, "api_or_backend": 2, "docs_or_claims": 1, "schema_or_data": 1, "deployment_env_gap": 1, "data_schema_persistence": 1, "mostly follows blueprint": 1, "claimed_resolved_unverified": 3, "issue_or_pull_request_thread": 1, "not_resolved_or_not_observed": 1, "blueprint_human_gap_disagreement": 1, "human_reported_issue_no_linked_fix": 1, "human_reported_issue_then_fix_attempt": 1, "thread_has_human_issue_and_fix_context": 2}, "source": "graph_query_export", "motif_id": "schema_ui_api_mismatch", "outcomes": {"claimed_resolved_unverified": 6, "not_resolved_or_not_observed": 2}, "polarity": "bad", "query_id": "schema_ui_api_mismatch", "severity": "high", "ci_labels": {}, "synthetic": false, "edge_count": 41, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 2, "thread_has_comment": 2, "thread_touches_file": 4, "alignment_uses_comment": 1, "alignment_uses_finding": 1, "chain_has_link_quality": 5, "comment_aligns_finding": 1, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "issue_chain_touches_file": 4, "thread_has_comment_chain": 2, "comment_chain_links_commit": 5, "comment_chain_touches_file": 8, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 2}, "node_count": 24, "node_types": {"repo": 1, "commit": 5, "thread": 1, "comment": 2, "pr_file": 4, "alignment": 1, "fix_outcome": 1, "issue_chain": 1, "link_quality": 5, "comment_chain": 2, "blueprint_finding": 1}, "query_type": "motif_query", "thread_key": "suksomsri7/siamdive#7", "issue_number": "7", "quality_tiers": {"unresolved": 1, "assumption_check": 1, "weak_supervision": 3}, "repo_full_name": "suksomsri7/siamdive", "training_usage": "assumption_check", "source_motif_id": "graph-pattern-motif-thread-3053806f7b89cc1b", "graph_gold_label": "weak_supervision_needs_review", "changed_file_labels": {"api_or_backend": 10, "docs_or_claims": 5, "schema_or_data": 5}}, "text": "Graph query export: Schema, UI, and API mismatch\nQuery id: schema_ui_api_mismatch\nQuery type: motif_query\nIntent: Assumption-check examples for data-path consistency across layers.\nMotif: schema_ui_api_mismatch\nTraining usage: assumption_check\nGraph gold label: weak_supervision_needs_review\nRepo: suksomsri7/siamdive\nThread: suksomsri7/siamdive#7\nEvidence:\nGraph motif: Schema, UI, and API evidence do not line up\nMotif id: schema_ui_api_mismatch\nPolarity: bad\nTraining usage: assumption_check\nSeverity: high\nRepo: suksomsri7/siamdive\nThread: suksomsri7/siamdive#7\nGraph gold label: weak_supervision_needs_review\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: suksomsri7/siamdive#7\nRepo: suksomsri7/siamdive\nIssue/PR number: 7\nGraph consistency label: weak_supervision_needs_review\nNodes: 24\nEdges: 41\nNode types: {'commit': 5, 'link_quality': 5, 'pr_file': 4, 'comment': 2, 'comment_chain': 2, 'thread': 1, 'repo': 1, 'issue_chain': 1, 'fix_outcome': 1, 'alignment': 1, 'blueprint_finding': 1}\nEdge types: {'comment_chain_touches_file': 8, 'comment_chain_links_commit': 5, 'chain_has_link_quality': 5, 'thread_touches_file': 4, 'issue_chain_touches_file': 4, 'thread_has_comment': 2, 'thread_has_comment_chain': 2, 'comment_has_chain': 2, 'issue_chain_has_comment_chain': 2, 'repo_has_thread': 1, 'thread_has_issue_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1, 'alignment_uses_comment': 1, 'alignment_uses_finding': 1, 'comment_aligns_finding': 1}\nLabels: {'bug_fix': 5, 'claimed_resolved_unverified': 3, 'api_or_backend': 2, 'thread_has_human_issue_and_fix_context': 2, 'issue_or_pull_request_thread': 1, 'data_schema_persistence': 1, 'deployment_env_gap': 1, 'docs_or_claims': 1, 'schema_or_data': 1, 'human_reported_issue_then_fix_attempt': 1, 'human_reported_issue_no_linked_fix': 1, 'not_resolved_or_not_observed': 1, 'blueprint_human_gap_disagreement': 1, 'mostly follows blueprint': 1}\nOutcomes: {'claimed_resolved_unverified': 6, 'not_resolved_or_not_observed': 2}\nQuality tiers: {'weak_supervision': 3, 'unresolved': 1, 'assumption_check': 1}\nCI labels: {}\nCurriculum targets:\n- Create schema-to-API-to-UI consistency tasks with migrations and tests.\n- Teach models to verify persistence, route contracts, and UI state together.\nAssumption checks:\n- Do schema changes have matching API and UI handling?\n- Are migrations and tests present for the data path?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/suksomsri7/siamdive", "source_id": "graph-query-motif_query-2f338f6bd838963e", "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": "suksomsri7/siamdive", "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: suksomsri7/siamdive"}, "properties": {"repobilityId": 331002, "scanner": "foundry_dataset", "fingerprint": "b5fff35dd016aeb8edefd6a151fae515e45dc024133a547bea14096b6f3be9ea", "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, "docs_or_claims": 1, "ui_or_frontend": 1, "deployment_env_gap": 1, "data_schema_persistence": 1, "mostly follows blueprint": 1, "claimed_resolved_unverified": 3, "issue_or_pull_request_thread": 1, "not_resolved_or_not_observed": 1, "blueprint_human_gap_disagreement": 1, "human_reported_issue_no_linked_fix": 1, "human_reported_issue_then_fix_attempt": 1, "thread_has_human_issue_and_fix_context": 2}, "source": "graph_query_export", "motif_id": "schema_ui_api_mismatch", "outcomes": {"claimed_resolved_unverified": 6, "not_resolved_or_not_observed": 2}, "polarity": "bad", "query_id": "schema_ui_api_mismatch", "severity": "high", "ci_labels": {}, "synthetic": false, "edge_count": 30, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 2, "thread_has_comment": 2, "thread_touches_file": 2, "alignment_uses_comment": 1, "alignment_uses_finding": 1, "chain_has_link_quality": 5, "comment_aligns_finding": 1, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "issue_chain_touches_file": 2, "thread_has_comment_chain": 2, "comment_chain_links_commit": 2, "comment_chain_touches_file": 4, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 2}, "node_count": 19, "node_types": {"repo": 1, "commit": 2, "thread": 1, "comment": 2, "pr_file": 2, "alignment": 1, "fix_outcome": 1, "issue_chain": 1, "link_quality": 5, "comment_chain": 2, "blueprint_finding": 1}, "query_type": "motif_query", "thread_key": "suksomsri7/siamdive#5", "issue_number": "5", "quality_tiers": {"unresolved": 1, "assumption_check": 1, "weak_supervision": 3}, "repo_full_name": "suksomsri7/siamdive", "training_usage": "assumption_check", "source_motif_id": "graph-pattern-motif-thread-d1f2449c318ff0da", "graph_gold_label": "weak_supervision_needs_review", "changed_file_labels": {"docs_or_claims": 5, "ui_or_frontend": 5}}, "text": "Graph query export: Schema, UI, and API mismatch\nQuery id: schema_ui_api_mismatch\nQuery type: motif_query\nIntent: Assumption-check examples for data-path consistency across layers.\nMotif: schema_ui_api_mismatch\nTraining usage: assumption_check\nGraph gold label: weak_supervision_needs_review\nRepo: suksomsri7/siamdive\nThread: suksomsri7/siamdive#5\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: suksomsri7/siamdive\nThread: suksomsri7/siamdive#5\nGraph gold label: weak_supervision_needs_review\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: suksomsri7/siamdive#5\nRepo: suksomsri7/siamdive\nIssue/PR number: 5\nGraph consistency label: weak_supervision_needs_review\nNodes: 19\nEdges: 30\nNode types: {'link_quality': 5, 'comment': 2, 'pr_file': 2, 'comment_chain': 2, 'commit': 2, 'thread': 1, 'repo': 1, 'issue_chain': 1, 'fix_outcome': 1, 'alignment': 1, 'blueprint_finding': 1}\nEdge types: {'chain_has_link_quality': 5, 'comment_chain_touches_file': 4, 'thread_has_comment': 2, 'thread_touches_file': 2, 'thread_has_comment_chain': 2, 'comment_has_chain': 2, 'comment_chain_links_commit': 2, 'issue_chain_has_comment_chain': 2, 'issue_chain_touches_file': 2, 'repo_has_thread': 1, 'thread_has_issue_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1, 'alignment_uses_comment': 1, 'alignment_uses_finding': 1, 'comment_aligns_finding': 1}\nLabels: {'claimed_resolved_unverified': 3, 'bug_fix': 2, 'thread_has_human_issue_and_fix_context': 2, 'issue_or_pull_request_thread': 1, 'data_schema_persistence': 1, 'deployment_env_gap': 1, 'docs_or_claims': 1, 'ui_or_frontend': 1, 'human_reported_issue_then_fix_attempt': 1, 'human_reported_issue_no_linked_fix': 1, 'not_resolved_or_not_observed': 1, 'blueprint_human_gap_disagreement': 1, 'mostly follows blueprint': 1}\nOutcomes: {'claimed_resolved_unverified': 6, 'not_resolved_or_not_observed': 2}\nQuality tiers: {'weak_supervision': 3, 'unresolved': 1, 'assumption_check': 1}\nCI labels: {}\nCurriculum targets:\n- Create schema-to-API-to-UI consistency tasks with migrations and tests.\n- Teach models to verify persistence, route contracts, and UI state together.\nAssumption checks:\n- Do schema changes have matching API and UI handling?\n- Are migrations and tests present for the data path?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/suksomsri7/siamdive", "source_id": "graph-query-motif_query-1992cdcaf70277a1", "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": "suksomsri7/siamdive", "source_dataset": "graph_queries/schema_ui_api_mismatch", "training_usage": "assumption_check"}}}, {"ruleId": "foundry_auth_guardrail_gap", "level": "error", "message": {"text": "Foundry mined security auth guardrail gaps: suksomsri7/siamdive"}, "properties": {"repobilityId": 334979, "scanner": "foundry_dataset", "fingerprint": "30f88f55ef2338f03a7b95d7a2a8dae5252ac7405c7dad88129b103ccb292669", "category": "auth", "severity": "critical", "confidence": 0.78, "triageState": "open", "verdict": "needs_review", "isResolved": false, "reason": "Imported from mined Foundry/Fable5 evidence with real GitHub/source provenance. Review source_id before acting.", "evidence": {"meta": {"kind": "graph_query_record", "title": "Security/auth changes without enough guardrails", "intent": "Assumption-check security/auth examples requiring stronger tests or CI.", "labels": {"bug_fix": 3, "api_or_backend": 1, "docs_or_claims": 1, "ui_or_frontend": 1, "deployment_env_gap": 1, "dependency_or_build": 1, "security_auth_secret": 1, "claimed_resolved_unverified": 3, "issue_or_pull_request_thread": 1, "not_resolved_or_not_observed": 1, "human_reported_issue_no_linked_fix": 1, "human_reported_issue_then_fix_attempt": 1, "thread_has_human_issue_and_fix_context": 2}, "source": "graph_query_export", "motif_id": "security_auth_without_guardrails", "outcomes": {"claimed_resolved_unverified": 6, "not_resolved_or_not_observed": 2}, "polarity": "bad", "query_id": "security_auth_guardrail_gaps", "severity": "critical", "ci_labels": {}, "synthetic": false, "edge_count": 32, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 2, "thread_has_comment": 2, "thread_touches_file": 3, "chain_has_link_quality": 4, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "issue_chain_touches_file": 3, "thread_has_comment_chain": 2, "comment_chain_links_commit": 4, "comment_chain_touches_file": 6, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 2}, "node_count": 19, "node_types": {"repo": 1, "commit": 4, "thread": 1, "comment": 2, "pr_file": 3, "fix_outcome": 1, "issue_chain": 1, "link_quality": 4, "comment_chain": 2}, "query_type": "motif_query", "thread_key": "suksomsri7/siamdive#6", "issue_number": "6", "quality_tiers": {"unresolved": 1, "weak_supervision": 3}, "repo_full_name": "suksomsri7/siamdive", "training_usage": "assumption_check", "source_motif_id": "graph-pattern-motif-thread-018fcda12cebe381", "graph_gold_label": "weak_supervision_needs_review", "changed_file_labels": {"api_or_backend": 5, "docs_or_claims": 5, "ui_or_frontend": 5}}, "text": "Graph query export: Security/auth changes without enough guardrails\nQuery id: security_auth_guardrail_gaps\nQuery type: motif_query\nIntent: Assumption-check security/auth examples requiring stronger tests or CI.\nMotif: security_auth_without_guardrails\nTraining usage: assumption_check\nGraph gold label: weak_supervision_needs_review\nRepo: suksomsri7/siamdive\nThread: suksomsri7/siamdive#6\nEvidence:\nGraph motif: Security/auth change without enough guardrails\nMotif id: security_auth_without_guardrails\nPolarity: bad\nTraining usage: assumption_check\nSeverity: critical\nRepo: suksomsri7/siamdive\nThread: suksomsri7/siamdive#6\nGraph gold label: weak_supervision_needs_review\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: suksomsri7/siamdive#6\nRepo: suksomsri7/siamdive\nIssue/PR number: 6\nGraph consistency label: weak_supervision_needs_review\nNodes: 19\nEdges: 32\nNode types: {'commit': 4, 'link_quality': 4, 'pr_file': 3, 'comment': 2, 'comment_chain': 2, 'thread': 1, 'repo': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'comment_chain_touches_file': 6, 'comment_chain_links_commit': 4, 'chain_has_link_quality': 4, 'thread_touches_file': 3, 'issue_chain_touches_file': 3, 'thread_has_comment': 2, 'thread_has_comment_chain': 2, 'comment_has_chain': 2, 'issue_chain_has_comment_chain': 2, 'repo_has_thread': 1, 'thread_has_issue_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'bug_fix': 3, 'claimed_resolved_unverified': 3, 'thread_has_human_issue_and_fix_context': 2, 'issue_or_pull_request_thread': 1, 'security_auth_secret': 1, 'deployment_env_gap': 1, 'docs_or_claims': 1, 'ui_or_frontend': 1, 'api_or_backend': 1, 'human_reported_issue_then_fix_attempt': 1, 'dependency_or_build': 1, 'human_reported_issue_no_linked_fix': 1, 'not_resolved_or_not_observed': 1}\nOutcomes: {'claimed_resolved_unverified': 6, 'not_resolved_or_not_observed': 2}\nQuality tiers: {'weak_supervision': 3, 'unresolved': 1}\nCI labels: {}\nCurriculum targets:\n- Train auth boundary repair with tests, permission matrices, and secret-handling checks.\n- Keep risky auth changes separate from ordinary bug-fix examples.\nAssumption checks:\n- Are auth/permission paths covered by tests?\n- Are secrets, CORS, or access rules verified rather than summarized?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/suksomsri7/siamdive", "source_id": "graph-query-motif_query-572b8ed419c9df34", "synthetic": false, "gold_label": "", "graph_label": "", "source_path": "/data/distillate/foundry_data/graph_queries/security_auth_guardrail_gaps/shard-0.jsonl", "bundle_label": "", "priority_band": "", "priority_score": 0, "repo_full_name": "suksomsri7/siamdive", "source_dataset": "graph_queries/security_auth_guardrail_gaps", "training_usage": "assumption_check"}}}, {"ruleId": "scanner-bead75b0f9233e05", "level": "none", "message": {"text": "No API endpoints detected"}, "properties": {"repobilityId": "0f8bb852027c38f8", "scanner": "scanner-primary", "fingerprint": "bead75b0f9233e05", "layer": "api", "severity": "info", "confidence": 1.0, "tags": ["coverage"]}}, {"ruleId": "scanner-c0353d255e08f5cf", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/set-og-from-covers.ts:44"}, "properties": {"repobilityId": "8bdcbc931ec9c3d6", "scanner": "scanner-primary", "fingerprint": "c0353d255e08f5cf", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-9d558e7dd8760e0a", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/seed-blog-topics.ts:148"}, "properties": {"repobilityId": "8cb19817ac083db8", "scanner": "scanner-primary", "fingerprint": "9d558e7dd8760e0a", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-3f8ba4c5b0d0f436", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/seed-countries.ts:72"}, "properties": {"repobilityId": "a12c623bbd5f51d2", "scanner": "scanner-primary", "fingerprint": "3f8ba4c5b0d0f436", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-558430798707b53c", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/batch-publish.ts:46"}, "properties": {"repobilityId": "8034881ea05ec326", "scanner": "scanner-primary", "fingerprint": "558430798707b53c", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b362dcd1b77f662f", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/fix-schedule-dates.ts:139"}, "properties": {"repobilityId": "aee3694fb7bbe58a", "scanner": "scanner-primary", "fingerprint": "b362dcd1b77f662f", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-bce0768e4b82adf9", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/regenerate-draft-prompts.ts:17"}, "properties": {"repobilityId": "131067583a401731", "scanner": "scanner-primary", "fingerprint": "bce0768e4b82adf9", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-9f4f0a775b4e0d39", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/migrate-service-areas-to-thailand.ts:20"}, "properties": {"repobilityId": "ffdcd43407586271", "scanner": "scanner-primary", "fingerprint": "9f4f0a775b4e0d39", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-4607d5c2957a5883", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 prisma/seed-issara-translations.ts:3827"}, "properties": {"repobilityId": "1e268a7acd4e5914", "scanner": "scanner-primary", "fingerprint": "4607d5c2957a5883", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-5abdc60d25744e57", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 prisma/seed-issara-sample-content.ts:578"}, "properties": {"repobilityId": "e97d73f19bec8ffa", "scanner": "scanner-primary", "fingerprint": "5abdc60d25744e57", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-c3d14421b5c1e5b5", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 prisma/seed-fix-thai-dates.ts:50"}, "properties": {"repobilityId": "7b0d45b975e45e5b", "scanner": "scanner-primary", "fingerprint": "c3d14421b5c1e5b5", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-0ae325e5287cd813", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 prisma/seed-aquarian-schedules.ts:166"}, "properties": {"repobilityId": "70840d405b74a7d3", "scanner": "scanner-primary", "fingerprint": "0ae325e5287cd813", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b20d7dac7691c49f", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 prisma/seed.ts:8"}, "properties": {"repobilityId": "f77d7e0fb34b08e2", "scanner": "scanner-primary", "fingerprint": "b20d7dac7691c49f", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-62aef64c72e60b9e", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 prisma/seed-aquarian-north-south-content.ts:104"}, "properties": {"repobilityId": "bb88c9f357a03565", "scanner": "scanner-primary", "fingerprint": "62aef64c72e60b9e", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-ce1e02db5a92458e", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 prisma/seed-fix-and-dates.ts:361"}, "properties": {"repobilityId": "2b9579647476dc91", "scanner": "scanner-primary", "fingerprint": "ce1e02db5a92458e", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-1f7ea05a099056dc", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 prisma/seed-issara-apply-all.ts:68"}, "properties": {"repobilityId": "ac39e208d22ba844", "scanner": "scanner-primary", "fingerprint": "1f7ea05a099056dc", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-3f8f2e4bb4c7500a", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 prisma/seed-translate-all.ts:526"}, "properties": {"repobilityId": "2ae200afe3f90dec", "scanner": "scanner-primary", "fingerprint": "3f8f2e4bb4c7500a", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-ed04f715ff1b698a", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 prisma/seed-issara-schedules.ts:124"}, "properties": {"repobilityId": "a8d8effc352042fb", "scanner": "scanner-primary", "fingerprint": "ed04f715ff1b698a", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-e0c57038d14857ff", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 prisma/seed-clean-dates.ts:143"}, "properties": {"repobilityId": "9a688bb420c5daa8", "scanner": "scanner-primary", "fingerprint": "e0c57038d14857ff", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-6548bf27981d07df", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 prisma/seed-final-fix.ts:68"}, "properties": {"repobilityId": "00e1e9472c9e3a78", "scanner": "scanner-primary", "fingerprint": "6548bf27981d07df", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-fe1bce754faf7ce2", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 prisma/fix-issara-itinerary-dates.ts:37"}, "properties": {"repobilityId": "b79d7157defe3ccd", "scanner": "scanner-primary", "fingerprint": "fe1bce754faf7ce2", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-5b95b8f5276c3f86", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 prisma/seed-add-checkout.ts:207"}, "properties": {"repobilityId": "c282cc7b8ab26e1c", "scanner": "scanner-primary", "fingerprint": "5b95b8f5276c3f86", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-36f652905654f81d", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 prisma/seed-aquarian-3samples.ts:81"}, "properties": {"repobilityId": "1a9b9ec9b383a85c", "scanner": "scanner-primary", "fingerprint": "36f652905654f81d", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-128290574c2245d8", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 public/tools/siamdive-mj-bridge.user.js:196"}, "properties": {"repobilityId": "8453d9707173e482", "scanner": "scanner-primary", "fingerprint": "128290574c2245d8", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-0feda4cf5f7ac894", "level": "note", "message": {"text": "Icon-only button without accessible name \u2014 src/components/TripPullUp.tsx:131"}, "properties": {"repobilityId": "451bfb0e6eb5e03f", "scanner": "scanner-primary", "fingerprint": "0feda4cf5f7ac894", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.button.no-label"]}}, {"ruleId": "scanner-de4f34f77eea5aa6", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/components/TripPullUp.tsx:907"}, "properties": {"repobilityId": "21327b76beddba1b", "scanner": "scanner-primary", "fingerprint": "de4f34f77eea5aa6", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-d36563864f1f69e9", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/components/ScheduleFullDetails.tsx:70"}, "properties": {"repobilityId": "87c65a21e627c124", "scanner": "scanner-primary", "fingerprint": "d36563864f1f69e9", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-f9a4677961ef9ad2", "level": "note", "message": {"text": "Icon-only button without accessible name \u2014 src/components/PhotoEditor/PhotoEditor.tsx:416"}, "properties": {"repobilityId": "5a923e675b70887c", "scanner": "scanner-primary", "fingerprint": "f9a4677961ef9ad2", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.button.no-label"]}}, {"ruleId": "scanner-53993f4eec587df7", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 src/components/PhotoEditor/PhotoEditor.tsx:351"}, "properties": {"repobilityId": "bc335d54a899514f", "scanner": "scanner-primary", "fingerprint": "53993f4eec587df7", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-f0f0fd690e38e033", "level": "note", "message": {"text": "Icon-only button without accessible name \u2014 src/components/social/ShareDrawer.tsx:213"}, "properties": {"repobilityId": "dd5f88879c37c47b", "scanner": "scanner-primary", "fingerprint": "f0f0fd690e38e033", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.button.no-label"]}}, {"ruleId": "scanner-1bf249f0447e4183", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/components/backoffice/TripForm.tsx:237"}, "properties": {"repobilityId": "091c57361537f452", "scanner": "scanner-primary", "fingerprint": "1bf249f0447e4183", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-c184618333a53c86", "level": "note", "message": {"text": "Icon-only button without accessible name \u2014 src/components/backoffice/OptionsPanel.tsx:87"}, "properties": {"repobilityId": "f53c22e98607297c", "scanner": "scanner-primary", "fingerprint": "c184618333a53c86", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.button.no-label"]}}, {"ruleId": "scanner-00eb7ebe6311a3df", "level": "note", "message": {"text": "Icon-only button without accessible name \u2014 src/components/backoffice/PackagePanel.tsx:205"}, "properties": {"repobilityId": "bd37ab767680491f", "scanner": "scanner-primary", "fingerprint": "00eb7ebe6311a3df", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.button.no-label"]}}, {"ruleId": "scanner-06a8291772d23c54", "level": "note", "message": {"text": "Icon-only button without accessible name \u2014 src/components/backoffice/LiveaboardManager.tsx:373"}, "properties": {"repobilityId": "81a01f10260faf02", "scanner": "scanner-primary", "fingerprint": "06a8291772d23c54", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.button.no-label"]}}, {"ruleId": "scanner-4c926a3e60a90455", "level": "note", "message": {"text": "Icon-only button without accessible name \u2014 src/components/backoffice/PackageOptionsPicker.tsx:46"}, "properties": {"repobilityId": "25c649ec9cff139d", "scanner": "scanner-primary", "fingerprint": "4c926a3e60a90455", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.button.no-label"]}}, {"ruleId": "scanner-7eaf53609031adec", "level": "note", "message": {"text": "Icon-only button without accessible name \u2014 src/components/ark-ai/TripSchedulePicker.tsx:213"}, "properties": {"repobilityId": "dcaad663a58ad46e", "scanner": "scanner-primary", "fingerprint": "7eaf53609031adec", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.button.no-label"]}}, {"ruleId": "scanner-744a8ce1c3bf3e13", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/components/ark-ai/ChatMessage.tsx:131"}, "properties": {"repobilityId": "d36b3990a0aa0e55", "scanner": "scanner-primary", "fingerprint": "744a8ce1c3bf3e13", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-a74c81dc1f44485c", "level": "note", "message": {"text": "Icon-only button without accessible name \u2014 src/components/ark-ai/plan/PlanTimeline.tsx:467"}, "properties": {"repobilityId": "5e9afc1613fca4ce", "scanner": "scanner-primary", "fingerprint": "a74c81dc1f44485c", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.button.no-label"]}}, {"ruleId": "scanner-33abbc02112c838b", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/components/ark-ai/plan/PlanTimeline.tsx:701"}, "properties": {"repobilityId": "c966221dfdbb6cdf", "scanner": "scanner-primary", "fingerprint": "33abbc02112c838b", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-63e1abbaab0269fd", "level": "note", "message": {"text": "Icon-only button without accessible name \u2014 src/components/ark-ai/plan/ContactChannelSheet.tsx:90"}, "properties": {"repobilityId": "84242f7fc3106422", "scanner": "scanner-primary", "fingerprint": "63e1abbaab0269fd", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.button.no-label"]}}, {"ruleId": "scanner-83e16b538a5a72bb", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/[lang]/(frontend)/layout.tsx:172"}, "properties": {"repobilityId": "21004c0520e6027f", "scanner": "scanner-primary", "fingerprint": "83e16b538a5a72bb", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-7b83ace01559feeb", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/[lang]/(frontend)/blogs/[slug]/page.tsx:216"}, "properties": {"repobilityId": "a91fbba48b77614a", "scanner": "scanner-primary", "fingerprint": "7b83ace01559feeb", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-7690130a69207efa", "level": "note", "message": {"text": "Icon-only button without accessible name \u2014 src/app/backoffice/settings/page.tsx:622"}, "properties": {"repobilityId": "90a4ddc5390cdc15", "scanner": "scanner-primary", "fingerprint": "7690130a69207efa", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.button.no-label"]}}, {"ruleId": "scanner-3d12728e353e6b7b", "level": "note", "message": {"text": "Icon-only button without accessible name \u2014 src/app/backoffice/fleet/page.tsx:226"}, "properties": {"repobilityId": "b0fdcf19d5ab27a2", "scanner": "scanner-primary", "fingerprint": "3d12728e353e6b7b", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.button.no-label"]}}, {"ruleId": "scanner-18caac09e7f7c64e", "level": "note", "message": {"text": "Icon-only button without accessible name \u2014 src/app/backoffice/display/page.tsx:420"}, "properties": {"repobilityId": "23b17790d60583c6", "scanner": "scanner-primary", "fingerprint": "18caac09e7f7c64e", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.button.no-label"]}}, {"ruleId": "scanner-3258c3a0331c0951", "level": "note", "message": {"text": "Icon-only button without accessible name \u2014 src/app/backoffice/freedive-instructor/page.tsx:218"}, "properties": {"repobilityId": "99af7234413e1226", "scanner": "scanner-primary", "fingerprint": "3258c3a0331c0951", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.button.no-label"]}}, {"ruleId": "scanner-382b5a42b7361192", "level": "note", "message": {"text": "Icon-only button without accessible name \u2014 src/app/backoffice/trips/freedive/page.tsx:262"}, "properties": {"repobilityId": "3f29ff0995a4b47f", "scanner": "scanner-primary", "fingerprint": "382b5a42b7361192", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.button.no-label"]}}, {"ruleId": "scanner-ef07da85a4ea1028", "level": "note", "message": {"text": "Icon-only button without accessible name \u2014 src/app/backoffice/trips/dive-resort/page.tsx:233"}, "properties": {"repobilityId": "91d03421cc2d2acd", "scanner": "scanner-primary", "fingerprint": "ef07da85a4ea1028", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.button.no-label"]}}, {"ruleId": "scanner-4916ece4c10c7626", "level": "note", "message": {"text": "Icon-only button without accessible name \u2014 src/app/backoffice/trips/land-tour/page.tsx:299"}, "properties": {"repobilityId": "491827bd709c62d5", "scanner": "scanner-primary", "fingerprint": "4916ece4c10c7626", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.button.no-label"]}}, {"ruleId": "scanner-08f565d3c0f4964c", "level": "note", "message": {"text": "Icon-only button without accessible name \u2014 src/app/backoffice/trips/dive-center/page.tsx:213"}, "properties": {"repobilityId": "0da9217e0e9ba106", "scanner": "scanner-primary", "fingerprint": "08f565d3c0f4964c", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.button.no-label"]}}, {"ruleId": "scanner-f084b589a7df7150", "level": "note", "message": {"text": "Icon-only button without accessible name \u2014 src/app/backoffice/trips/daytrip/page.tsx:299"}, "properties": {"repobilityId": "9b0241292246c037", "scanner": "scanner-primary", "fingerprint": "f084b589a7df7150", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.button.no-label"]}}, {"ruleId": "scanner-2a37da4f0f8d01f6", "level": "note", "message": {"text": "Icon-only button without accessible name \u2014 src/app/backoffice/trips/snorkeling/page.tsx:299"}, "properties": {"repobilityId": "e7e2dff8690297a6", "scanner": "scanner-primary", "fingerprint": "2a37da4f0f8d01f6", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.button.no-label"]}}, {"ruleId": "scanner-ea1a7faebf0ec119", "level": "note", "message": {"text": "Icon-only button without accessible name \u2014 src/app/backoffice/freedive-courses/page.tsx:218"}, "properties": {"repobilityId": "56b4b1cfc959647c", "scanner": "scanner-primary", "fingerprint": "ea1a7faebf0ec119", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.button.no-label"]}}, {"ruleId": "scanner-41836c8c0438d3ee", "level": "note", "message": {"text": "Icon-only button without accessible name \u2014 src/app/backoffice/admins/page.tsx:200"}, "properties": {"repobilityId": "b0d82467574a323b", "scanner": "scanner-primary", "fingerprint": "41836c8c0438d3ee", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.button.no-label"]}}, {"ruleId": "scanner-fa7185708a55f20b", "level": "note", "message": {"text": "Icon-only button without accessible name \u2014 src/app/backoffice/api-keys/page.tsx:297"}, "properties": {"repobilityId": "601b701520aa1982", "scanner": "scanner-primary", "fingerprint": "fa7185708a55f20b", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.button.no-label"]}}, {"ruleId": "scanner-661f332c5448dd52", "level": "note", "message": {"text": "Icon-only button without accessible name \u2014 src/app/backoffice/scuba-instructor/page.tsx:218"}, "properties": {"repobilityId": "2bcfefd3775e98cf", "scanner": "scanner-primary", "fingerprint": "661f332c5448dd52", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.button.no-label"]}}, {"ruleId": "scanner-75d09ef1cc26b50a", "level": "note", "message": {"text": "Icon-only button without accessible name \u2014 src/app/backoffice/schedules/page.tsx:217"}, "properties": {"repobilityId": "785f45c65f5e06a8", "scanner": "scanner-primary", "fingerprint": "75d09ef1cc26b50a", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.button.no-label"]}}, {"ruleId": "scanner-272791da920449a6", "level": "note", "message": {"text": "Icon-only button without accessible name \u2014 src/app/backoffice/courses/page.tsx:218"}, "properties": {"repobilityId": "b9a59f227c43392c", "scanner": "scanner-primary", "fingerprint": "272791da920449a6", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.button.no-label"]}}, {"ruleId": "scanner-71f4c4226b2fbdd5", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/backoffice/blogs/BlogPreviewDrawer.tsx:274"}, "properties": {"repobilityId": "02729201a1a1167e", "scanner": "scanner-primary", "fingerprint": "71f4c4226b2fbdd5", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-b10e69ffba1a8907", "level": "note", "message": {"text": "Icon-only button without accessible name \u2014 src/app/backoffice/companies/page.tsx:200"}, "properties": {"repobilityId": "7049e1f60549fa8f", "scanner": "scanner-primary", "fingerprint": "b10e69ffba1a8907", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.button.no-label"]}}, {"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-2cfbea448ccd366d", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in src/components/TripPullUp.tsx:907"}, "properties": {"repobilityId": "7f0d1d301f50b2d9", "scanner": "scanner-primary", "fingerprint": "2cfbea448ccd366d", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/components/TripPullUp.tsx"}, "region": {"startLine": 907}}}]}, {"ruleId": "scanner-6b8b5c7af62a3472", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in src/components/ScheduleFullDetails.tsx:70"}, "properties": {"repobilityId": "047a2f517a3fd2b9", "scanner": "scanner-primary", "fingerprint": "6b8b5c7af62a3472", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/components/ScheduleFullDetails.tsx"}, "region": {"startLine": 70}}}]}, {"ruleId": "scanner-b10c4d7a3e4d0a18", "level": "error", "message": {"text": "Insecure pattern 'exec_used' in src/components/backoffice/TripForm.tsx:204"}, "properties": {"repobilityId": "9fe1719643aa0440", "scanner": "scanner-primary", "fingerprint": "b10c4d7a3e4d0a18", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["owasp", "exec_used"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/components/backoffice/TripForm.tsx"}, "region": {"startLine": 204}}}]}, {"ruleId": "scanner-3f23a8593258db4c", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in src/components/backoffice/TripForm.tsx:182"}, "properties": {"repobilityId": "fe00958326dadb7c", "scanner": "scanner-primary", "fingerprint": "3f23a8593258db4c", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/components/backoffice/TripForm.tsx"}, "region": {"startLine": 182}}}]}, {"ruleId": "scanner-ef2da6888b36dbb6", "level": "warning", "message": {"text": "Insecure pattern 'local_storage_auth_token' in src/components/ark-ai/ArkAIChatPanel.tsx:536"}, "properties": {"repobilityId": "b5fd8470c83fda22", "scanner": "scanner-primary", "fingerprint": "ef2da6888b36dbb6", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "local_storage_auth_token"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/components/ark-ai/ArkAIChatPanel.tsx"}, "region": {"startLine": 536}}}]}, {"ruleId": "scanner-367305af2d203f1e", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in src/components/ark-ai/ChatMessage.tsx:131"}, "properties": {"repobilityId": "da9576740b08812a", "scanner": "scanner-primary", "fingerprint": "367305af2d203f1e", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/components/ark-ai/ChatMessage.tsx"}, "region": {"startLine": 131}}}]}, {"ruleId": "scanner-8056c9a9937ed521", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in src/components/ark-ai/plan/PlanTimeline.tsx:701"}, "properties": {"repobilityId": "4cf9a773cf8b29b0", "scanner": "scanner-primary", "fingerprint": "8056c9a9937ed521", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/components/ark-ai/plan/PlanTimeline.tsx"}, "region": {"startLine": 701}}}]}, {"ruleId": "scanner-2838c1220e145fe1", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/[lang]/(frontend)/layout.tsx:172"}, "properties": {"repobilityId": "d859293cc43a0bbc", "scanner": "scanner-primary", "fingerprint": "2838c1220e145fe1", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/[lang]/(frontend)/layout.tsx"}, "region": {"startLine": 172}}}]}, {"ruleId": "scanner-ec97c4a29fe0514e", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/[lang]/(frontend)/blogs/[slug]/page.tsx:216"}, "properties": {"repobilityId": "847d7322d2975f30", "scanner": "scanner-primary", "fingerprint": "ec97c4a29fe0514e", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/[lang]/(frontend)/blogs/[slug]/page.tsx"}, "region": {"startLine": 216}}}]}, {"ruleId": "scanner-bbbdfaeb7928230d", "level": "error", "message": {"text": "Insecure pattern 'exec_used' in src/app/backoffice/blogs/page.tsx:423"}, "properties": {"repobilityId": "a42e04f8819a3418", "scanner": "scanner-primary", "fingerprint": "bbbdfaeb7928230d", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["owasp", "exec_used"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/backoffice/blogs/page.tsx"}, "region": {"startLine": 423}}}]}, {"ruleId": "scanner-05fa43b470152270", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in src/app/backoffice/blogs/page.tsx:388"}, "properties": {"repobilityId": "4df2c034846276dd", "scanner": "scanner-primary", "fingerprint": "05fa43b470152270", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/backoffice/blogs/page.tsx"}, "region": {"startLine": 388}}}]}, {"ruleId": "scanner-d8f48ede608e1d2e", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/backoffice/blogs/BlogPreviewDrawer.tsx:274"}, "properties": {"repobilityId": "a5ed7aa301f2db02", "scanner": "scanner-primary", "fingerprint": "d8f48ede608e1d2e", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/backoffice/blogs/BlogPreviewDrawer.tsx"}, "region": {"startLine": 274}}}]}, {"ruleId": "scanner-4601e3ad3bb28677", "level": "warning", "message": {"text": "No CI/CD pipelines detected"}, "properties": {"repobilityId": "c3ee439bce2bc51e", "scanner": "scanner-primary", "fingerprint": "4601e3ad3bb28677", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["coverage"]}}, {"ruleId": "scanner-dedf63356c9c769c", "level": "note", "message": {"text": "Very large file: prisma/seed-issara-translations.ts (3853 lines)"}, "properties": {"repobilityId": "e7dacc706c58fcef", "scanner": "scanner-primary", "fingerprint": "dedf63356c9c769c", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-951bb83781c460de", "level": "note", "message": {"text": "Very large file: src/components/TripPullUp.tsx (1741 lines)"}, "properties": {"repobilityId": "a922d95382754427", "scanner": "scanner-primary", "fingerprint": "951bb83781c460de", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-12f149d3de1f0bc3", "level": "note", "message": {"text": "Very large file: src/components/ark-ai/ArkAIChatPanel.tsx (1609 lines)"}, "properties": {"repobilityId": "452f29ac6d6b9ba6", "scanner": "scanner-primary", "fingerprint": "12f149d3de1f0bc3", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-9fc945b25ea9ce1d", "level": "note", "message": {"text": "Very large file: src/components/ark-ai/plan/PlanTimeline.tsx (1111 lines)"}, "properties": {"repobilityId": "ddc991254d5a08f2", "scanner": "scanner-primary", "fingerprint": "9fc945b25ea9ce1d", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-74811a9ae518d87f", "level": "note", "message": {"text": "Very large file: src/app/backoffice/settings/page.tsx (1374 lines)"}, "properties": {"repobilityId": "0aa7a7ba9e0aa638", "scanner": "scanner-primary", "fingerprint": "74811a9ae518d87f", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-f8876dcd4a10e9f9", "level": "note", "message": {"text": "Very large file: src/app/backoffice/blogs/page.tsx (931 lines)"}, "properties": {"repobilityId": "356e4d7e33a968e3", "scanner": "scanner-primary", "fingerprint": "f8876dcd4a10e9f9", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-6893a6c8b0861585", "level": "warning", "message": {"text": "Very low test-to-source ratio"}, "properties": {"repobilityId": "54a7de3f06314bf0", "scanner": "scanner-primary", "fingerprint": "6893a6c8b0861585", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["tests", "coverage"]}}, {"ruleId": "scanner-141b30a41e03817b", "level": "note", "message": {"text": "No license file detected"}, "properties": {"repobilityId": "0de1af6d39df930c", "scanner": "scanner-primary", "fingerprint": "141b30a41e03817b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["license", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-3ab5d313dda8e5f9", "level": "note", "message": {"text": "Debug logging residue appears in source files"}, "properties": {"repobilityId": "74c8838f734f7196", "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": "c3c93333b123b429", "scanner": "scanner-primary", "fingerprint": "72b2a6250083a784", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["placeholder", "mock-data", "incomplete", "generated-repo-pattern"]}}, {"ruleId": "scanner-9d79c4077342a7d0", "level": "warning", "message": {"text": "Runtime service client appears to use placeholder configuration"}, "properties": {"repobilityId": "3230d648e1dc3739", "scanner": "scanner-primary", "fingerprint": "9d79c4077342a7d0", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["placeholder", "runtime-config", "service-client", "generated-repo-pattern"]}}, {"ruleId": "scanner-2d0c7b7ab8f8aacf", "level": "warning", "message": {"text": "Critical user flow still appears backed by mock or placeholder data"}, "properties": {"repobilityId": "82c63ae39f72cb46", "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": "b7f5a566e0c1d1b4", "scanner": "scanner-primary", "fingerprint": "b9088664ace7f748", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["production-readiness", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-ea8f3013f588db25", "level": "note", "message": {"text": "Shallow git history limits provenance confidence"}, "properties": {"repobilityId": "45849711a3ad76ed", "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": "e4ea234bd3f884b4", "scanner": "scanner-primary", "fingerprint": "8424db9c75e04ba4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["provenance", "git-history", "generated-repo-pattern"]}}, {"ruleId": "scanner-9f2d64dbf2c6ea24", "level": "none", "message": {"text": "Commented-code block (17 lines) in public/tools/siamdive-mj-bridge.user.js:1"}, "properties": {"repobilityId": "714a8343465acabc", "scanner": "scanner-primary", "fingerprint": "9f2d64dbf2c6ea24", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ad1a338de63a0a45", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/RecentlyViewedRow.tsx:57"}, "properties": {"repobilityId": "765dc9ef3bd60044", "scanner": "scanner-primary", "fingerprint": "ad1a338de63a0a45", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-153727abdab10043", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/components/CurrencyProvider.tsx:3"}, "properties": {"repobilityId": "fbdcdf9543198467", "scanner": "scanner-primary", "fingerprint": "153727abdab10043", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-32d32fa05e4940b8", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/LiffMyPlanGate.tsx:97"}, "properties": {"repobilityId": "aafff024979c2795", "scanner": "scanner-primary", "fingerprint": "32d32fa05e4940b8", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-892364a5d1439334", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/components/HomeContent.tsx:172"}, "properties": {"repobilityId": "7295f39eebd8da6e", "scanner": "scanner-primary", "fingerprint": "892364a5d1439334", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-872e62ef4ccbb6f1", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/components/PlanToast.tsx:7"}, "properties": {"repobilityId": "5315a0d87515bb2e", "scanner": "scanner-primary", "fingerprint": "872e62ef4ccbb6f1", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-17a3e0bd5f905208", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/components/ResortConfigurator.tsx:5"}, "properties": {"repobilityId": "bc5c5f8d6a2267e4", "scanner": "scanner-primary", "fingerprint": "17a3e0bd5f905208", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1485df17a2561a58", "level": "none", "message": {"text": "Commented-code block (7 lines) in src/components/Navbar.tsx:86"}, "properties": {"repobilityId": "8305cc2761737ff7", "scanner": "scanner-primary", "fingerprint": "1485df17a2561a58", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-11d6bfd28aa78597", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/PhotoEditor/ImageEditorField.tsx:95"}, "properties": {"repobilityId": "b68b5d84d1705bd6", "scanner": "scanner-primary", "fingerprint": "11d6bfd28aa78597", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-fd4fad2279a29c83", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/PhotoEditor/PhotoEditor.tsx:149"}, "properties": {"repobilityId": "e62918250fc03dce", "scanner": "scanner-primary", "fingerprint": "fd4fad2279a29c83", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-1daf7e3df09dd957", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/social/ShareImageEditor.tsx:467"}, "properties": {"repobilityId": "25abb7d5f6b0e0bd", "scanner": "scanner-primary", "fingerprint": "1daf7e3df09dd957", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-d720ea85cc65eb01", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/social/ShareDrawer.tsx:66"}, "properties": {"repobilityId": "7f3cdf170cdf679a", "scanner": "scanner-primary", "fingerprint": "d720ea85cc65eb01", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-c93e0f949c5feb65", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/backoffice/TripForm.tsx:100"}, "properties": {"repobilityId": "c6cbfac035f21e2f", "scanner": "scanner-primary", "fingerprint": "c93e0f949c5feb65", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-911676369fb3eff8", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/backoffice/OptionsPanel.tsx:63"}, "properties": {"repobilityId": "36e49d56d94b7835", "scanner": "scanner-primary", "fingerprint": "911676369fb3eff8", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-f15a41eae4396033", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/backoffice/PackagePanel.tsx:171"}, "properties": {"repobilityId": "1d69ce4d1643461d", "scanner": "scanner-primary", "fingerprint": "f15a41eae4396033", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-b8cd51fb2ca007b2", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/backoffice/LiveaboardManager.tsx:155"}, "properties": {"repobilityId": "e7a9eb9c933086af", "scanner": "scanner-primary", "fingerprint": "b8cd51fb2ca007b2", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-50c085928301d045", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/components/ark-ai/ArkAIChatPanel.tsx:263"}, "properties": {"repobilityId": "992ccb244f3b0dff", "scanner": "scanner-primary", "fingerprint": "50c085928301d045", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2095a0db4d0f0dd7", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/ark-ai/ArkAIChatPanel.tsx:1011"}, "properties": {"repobilityId": "58b26a645212dd04", "scanner": "scanner-primary", "fingerprint": "2095a0db4d0f0dd7", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-6556af71295beb5f", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/components/ark-ai/CompareSheet.tsx:6"}, "properties": {"repobilityId": "8641e435523d72e5", "scanner": "scanner-primary", "fingerprint": "6556af71295beb5f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6c7979def8e0c6c8", "level": "none", "message": {"text": "Commented-code block (8 lines) in src/components/ark-ai/plan/PlanTimeline.tsx:134"}, "properties": {"repobilityId": "b2d18d6aca5e01aa", "scanner": "scanner-primary", "fingerprint": "6c7979def8e0c6c8", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-11ee9c331c4441df", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/components/ark-ai/plan/SharePlanSheet.tsx:3"}, "properties": {"repobilityId": "132228941778575d", "scanner": "scanner-primary", "fingerprint": "11ee9c331c4441df", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6dfd3a69fff0d0e2", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/components/ark-ai/plan/PlanNotificationsBanner.tsx:33"}, "properties": {"repobilityId": "51297715da291da2", "scanner": "scanner-primary", "fingerprint": "6dfd3a69fff0d0e2", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-be146e4b2f4263b1", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/ark-ai/plan/SearchResultModal.tsx:313"}, "properties": {"repobilityId": "93a4f55311c8859d", "scanner": "scanner-primary", "fingerprint": "be146e4b2f4263b1", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-b5b3bb1092822c78", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/components/ark-ai/plan/PlanDetail.tsx:154"}, "properties": {"repobilityId": "4e0b73b3559749e7", "scanner": "scanner-primary", "fingerprint": "b5b3bb1092822c78", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a3c30501bfd79b9a", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/ark-ai/plan/PlanDetail.tsx:214"}, "properties": {"repobilityId": "99c96c0da2c60247", "scanner": "scanner-primary", "fingerprint": "a3c30501bfd79b9a", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-568ff62e8a41f036", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/components/ark-ai/plan/BuildTargetSheet.tsx:3"}, "properties": {"repobilityId": "0060bc953123d625", "scanner": "scanner-primary", "fingerprint": "568ff62e8a41f036", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b759251b8c2ef02b", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/api/upload/route.ts:28"}, "properties": {"repobilityId": "2446d0bf8e49227a", "scanner": "scanner-primary", "fingerprint": "b759251b8c2ef02b", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-19a1d99dab9e161c", "level": "none", "message": {"text": "Commented-code block (11 lines) in src/app/api/analytics/[metric]/route.ts:5"}, "properties": {"repobilityId": "a1db37ce82ad7067", "scanner": "scanner-primary", "fingerprint": "19a1d99dab9e161c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ac0996f540606528", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/api/watermarks/route.ts:16"}, "properties": {"repobilityId": "ab549bff78a89725", "scanner": "scanner-primary", "fingerprint": "ac0996f540606528", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-ca1f0cdd5b33514a", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/app/api/cron/sync-social-metrics/route.ts:10"}, "properties": {"repobilityId": "d19920c614fc31e7", "scanner": "scanner-primary", "fingerprint": "ca1f0cdd5b33514a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-527373a181f2c956", "level": "none", "message": {"text": "Commented-code block (7 lines) in src/app/api/cron/cleanup-ai-data/route.ts:5"}, "properties": {"repobilityId": "fa3d006a9bcb40b1", "scanner": "scanner-primary", "fingerprint": "527373a181f2c956", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4c6a66f1a8cbec1d", "level": "none", "message": {"text": "Commented-code block (7 lines) in src/app/api/cron/plan-improve/route.ts:5"}, "properties": {"repobilityId": "43c705bcf90e1ffc", "scanner": "scanner-primary", "fingerprint": "4c6a66f1a8cbec1d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-caa789718c428bb7", "level": "none", "message": {"text": "Commented-code block (7 lines) in src/app/api/cron/analytics-rollup/route.ts:8"}, "properties": {"repobilityId": "33f41cd9b18ac80d", "scanner": "scanner-primary", "fingerprint": "caa789718c428bb7", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8cc0decdb77aa74b", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/api/cron/fx-rates/route.ts:41"}, "properties": {"repobilityId": "0b1a791ceda677eb", "scanner": "scanner-primary", "fingerprint": "8cc0decdb77aa74b", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-90ded6b9e40f4fbf", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/app/api/blog-images/route.ts:55"}, "properties": {"repobilityId": "e191259362555371", "scanner": "scanner-primary", "fingerprint": "90ded6b9e40f4fbf", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7479d998cbef0603", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/api/blog-images/route.ts:17"}, "properties": {"repobilityId": "024aa43c49613538", "scanner": "scanner-primary", "fingerprint": "7479d998cbef0603", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-787a394b2cfa0941", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/api/plans/upload/route.ts:50"}, "properties": {"repobilityId": "30fecc6dcc791cc6", "scanner": "scanner-primary", "fingerprint": "787a394b2cfa0941", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-852409b53f731273", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/app/api/plans/email/route.ts:24"}, "properties": {"repobilityId": "3fe4d8104b567696", "scanner": "scanner-primary", "fingerprint": "852409b53f731273", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-10ef51b513d5f50e", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/app/api/plans/[id]/route.ts:142"}, "properties": {"repobilityId": "af8eb875b2fd8db7", "scanner": "scanner-primary", "fingerprint": "10ef51b513d5f50e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-13ea272f30a3dc91", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/app/api/plans/[id]/items/search/route.ts:37"}, "properties": {"repobilityId": "02934b56f56f48ca", "scanner": "scanner-primary", "fingerprint": "13ea272f30a3dc91", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-eb7a067685aba979", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/app/api/plans/share/[token]/copy/route.ts:24"}, "properties": {"repobilityId": "e5d71f20f9ed73bc", "scanner": "scanner-primary", "fingerprint": "eb7a067685aba979", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-53844815922a5a8b", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/app/api/blogs/route.ts:9"}, "properties": {"repobilityId": "5888a1eaff8748ec", "scanner": "scanner-primary", "fingerprint": "53844815922a5a8b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1b6f89dc9c07aa72", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/app/api/ark-ai/chat/route.ts:165"}, "properties": {"repobilityId": "8e6d6250536907ab", "scanner": "scanner-primary", "fingerprint": "1b6f89dc9c07aa72", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-72936320c6f81269", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/api/ark-ai/chat/route.ts:390"}, "properties": {"repobilityId": "2c72fb9e3ce4ecdd", "scanner": "scanner-primary", "fingerprint": "72936320c6f81269", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-07c0bbd2ef585acd", "level": "none", "message": {"text": "Commented-code block (10 lines) in src/app/api/ark-ai/check-pending-picks/route.ts:6"}, "properties": {"repobilityId": "30087264bcf1d1ea", "scanner": "scanner-primary", "fingerprint": "07c0bbd2ef585acd", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-afd0bad284dbcec6", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/app/api/ark-ai/build-plan/route.ts:33"}, "properties": {"repobilityId": "1f08dd7074659de0", "scanner": "scanner-primary", "fingerprint": "afd0bad284dbcec6", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-9190b5f64fe3b1ba", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/app/[lang]/plan/[shortId]/join/JoinPlanClient.tsx:107"}, "properties": {"repobilityId": "bed231bead3a8bd1", "scanner": "scanner-primary", "fingerprint": "9190b5f64fe3b1ba", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-78a095837a346147", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/app/[lang]/(frontend)/trips/[segment]/page.tsx:29"}, "properties": {"repobilityId": "a8ee7247827eba2b", "scanner": "scanner-primary", "fingerprint": "78a095837a346147", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-acc5cc11e7ab9d9b", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/backoffice/settings/page.tsx:100"}, "properties": {"repobilityId": "816e530d4673e162", "scanner": "scanner-primary", "fingerprint": "acc5cc11e7ab9d9b", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-14a3a400b19cdab0", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/backoffice/settings/ai/page.tsx:83"}, "properties": {"repobilityId": "c8ad7bb2e5e9daa2", "scanner": "scanner-primary", "fingerprint": "14a3a400b19cdab0", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-20733f20b8312885", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/backoffice/fleet/page.tsx:62"}, "properties": {"repobilityId": "73422d0585ae9550", "scanner": "scanner-primary", "fingerprint": "20733f20b8312885", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-7248b2cea20d1b3c", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/backoffice/display/page.tsx:311"}, "properties": {"repobilityId": "b193e6dadd0e7b9f", "scanner": "scanner-primary", "fingerprint": "7248b2cea20d1b3c", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-92bad3a1a86b2bd2", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/backoffice/freedive-instructor/page.tsx:95"}, "properties": {"repobilityId": "aa411495046877bc", "scanner": "scanner-primary", "fingerprint": "92bad3a1a86b2bd2", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-cb7e7d416ab73900", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/backoffice/trips/freedive/page.tsx:116"}, "properties": {"repobilityId": "c06c0f69d93ff61c", "scanner": "scanner-primary", "fingerprint": "cb7e7d416ab73900", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-31284021abe20dcb", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/backoffice/trips/dive-resort/page.tsx:110"}, "properties": {"repobilityId": "ea15a785c98c3d05", "scanner": "scanner-primary", "fingerprint": "31284021abe20dcb", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-fec1b24d0ea06b62", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/backoffice/trips/land-tour/page.tsx:129"}, "properties": {"repobilityId": "997165120e52f723", "scanner": "scanner-primary", "fingerprint": "fec1b24d0ea06b62", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-28472aae8b895fa4", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/backoffice/trips/dive-center/page.tsx:104"}, "properties": {"repobilityId": "c74c945163f35071", "scanner": "scanner-primary", "fingerprint": "28472aae8b895fa4", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-41a736fec8a1b9a2", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/backoffice/trips/daytrip/page.tsx:129"}, "properties": {"repobilityId": "a43f9033686b9750", "scanner": "scanner-primary", "fingerprint": "41a736fec8a1b9a2", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-83a5ea9c114dcaad", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/backoffice/trips/snorkeling/page.tsx:129"}, "properties": {"repobilityId": "5871c9dda1d2e3ff", "scanner": "scanner-primary", "fingerprint": "83a5ea9c114dcaad", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-f82c9a3524e5ed54", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/backoffice/freedive-courses/page.tsx:95"}, "properties": {"repobilityId": "a648cf70458213e4", "scanner": "scanner-primary", "fingerprint": "f82c9a3524e5ed54", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-e431c3ad7f041053", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/backoffice/admins/page.tsx:103"}, "properties": {"repobilityId": "7d701fe835836cd4", "scanner": "scanner-primary", "fingerprint": "e431c3ad7f041053", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-e85947622c9333fa", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/backoffice/social/templates/page.tsx:38"}, "properties": {"repobilityId": "d6ccfc29ad5b3c9e", "scanner": "scanner-primary", "fingerprint": "e85947622c9333fa", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-e77f385b0c223122", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/backoffice/social/accounts/page.tsx:67"}, "properties": {"repobilityId": "662e36bdd0a6b1ed", "scanner": "scanner-primary", "fingerprint": "e77f385b0c223122", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-5074e6b55fa43140", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/backoffice/social/queue/page.tsx:57"}, "properties": {"repobilityId": "bde368bfe941d5df", "scanner": "scanner-primary", "fingerprint": "5074e6b55fa43140", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-4b61473c8c4d574a", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/backoffice/api-keys/page.tsx:148"}, "properties": {"repobilityId": "6de1d24de9031801", "scanner": "scanner-primary", "fingerprint": "4b61473c8c4d574a", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-e7b8f71505abc16f", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/backoffice/scuba-instructor/page.tsx:95"}, "properties": {"repobilityId": "13f1b64b863dbbd5", "scanner": "scanner-primary", "fingerprint": "e7b8f71505abc16f", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-0d2de444443a4717", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/backoffice/schedules/page.tsx:93"}, "properties": {"repobilityId": "291e8a800b7b0ec9", "scanner": "scanner-primary", "fingerprint": "0d2de444443a4717", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-078e28a8b0b3d689", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/backoffice/courses/page.tsx:95"}, "properties": {"repobilityId": "6c549afb65b388b1", "scanner": "scanner-primary", "fingerprint": "078e28a8b0b3d689", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-edbb35b852e5a8d3", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/backoffice/blogs/page.tsx:322"}, "properties": {"repobilityId": "848047f8b640a589", "scanner": "scanner-primary", "fingerprint": "edbb35b852e5a8d3", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-59a6ad0c1a49b82b", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/backoffice/companies/page.tsx:101"}, "properties": {"repobilityId": "2e7c68f244327217", "scanner": "scanner-primary", "fingerprint": "59a6ad0c1a49b82b", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-a90fa169181f3250", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/lib/pending-picks.ts:1"}, "properties": {"repobilityId": "00d39fe0375fe5ba", "scanner": "scanner-primary", "fingerprint": "a90fa169181f3250", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0b396360ecc7bf97", "level": "none", "message": {"text": "Commented-code block (16 lines) in src/lib/mjPrompt.ts:7"}, "properties": {"repobilityId": "b51dc88c2c91f03c", "scanner": "scanner-primary", "fingerprint": "0b396360ecc7bf97", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1ae6f2768e4f32b4", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/lib/currency.ts:3"}, "properties": {"repobilityId": "91e1caec5a7932c1", "scanner": "scanner-primary", "fingerprint": "1ae6f2768e4f32b4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ce4fe712c9c1d00d", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/lib/blogParity.ts:1"}, "properties": {"repobilityId": "ce47c88ff0290af1", "scanner": "scanner-primary", "fingerprint": "ce4fe712c9c1d00d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-3335686c2dae0007", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/lib/blogCoverGen.ts:35"}, "properties": {"repobilityId": "11bb1e16402e40fd", "scanner": "scanner-primary", "fingerprint": "3335686c2dae0007", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-2c2ff7db269175a4", "level": "none", "message": {"text": "Commented-code block (8 lines) in src/lib/plan-store.ts:83"}, "properties": {"repobilityId": "d4286ff840800304", "scanner": "scanner-primary", "fingerprint": "2c2ff7db269175a4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b35579e31c1a5952", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/lib/plan-store.ts:196"}, "properties": {"repobilityId": "e38219a302c5fab0", "scanner": "scanner-primary", "fingerprint": "b35579e31c1a5952", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-30b8997b41e70bae", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/lib/social/compose.ts:62"}, "properties": {"repobilityId": "a0cf55a3c2be00f6", "scanner": "scanner-primary", "fingerprint": "30b8997b41e70bae", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-ea29f1e6167e7a98", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/lib/ark-ai/deleted-sigs.ts:7"}, "properties": {"repobilityId": "ebc61eb356acb1e0", "scanner": "scanner-primary", "fingerprint": "ea29f1e6167e7a98", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-100a3882e016c5ee", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/lib/ark-ai/trip-prep-templates.ts:1"}, "properties": {"repobilityId": "9bdb7419b198ed1c", "scanner": "scanner-primary", "fingerprint": "100a3882e016c5ee", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4ed290877bb32596", "level": "none", "message": {"text": "Commented-code block (8 lines) in src/lib/ark-ai/day-grouping.ts:6"}, "properties": {"repobilityId": "63c254b1073b22cf", "scanner": "scanner-primary", "fingerprint": "4ed290877bb32596", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e35ccc940ff801bc", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/lib/ark-ai/plan-signature.ts:4"}, "properties": {"repobilityId": "0de85b06409253af", "scanner": "scanner-primary", "fingerprint": "e35ccc940ff801bc", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-694e45bf8065b9e1", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/lib/ark-ai/rag.ts:302"}, "properties": {"repobilityId": "ccbea6b4c9578083", "scanner": "scanner-primary", "fingerprint": "694e45bf8065b9e1", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-103ec6d63d70416e", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/lib/ark-ai/date-hint.ts:69"}, "properties": {"repobilityId": "486a6709ae1b0b4e", "scanner": "scanner-primary", "fingerprint": "103ec6d63d70416e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e8689b92fb362f57", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/lib/ark-ai/itinerary-parser.ts:14"}, "properties": {"repobilityId": "1f7c061a39f6e680", "scanner": "scanner-primary", "fingerprint": "e8689b92fb362f57", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8ce531beb89fc54a", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/lib/ark-ai/slot-hints.ts:1"}, "properties": {"repobilityId": "1c5f63ba8300f15f", "scanner": "scanner-primary", "fingerprint": "8ce531beb89fc54a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d962ec3fbb9a809d", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/lib/ark-ai/i18n.ts:345"}, "properties": {"repobilityId": "fe512c6b5b91b279", "scanner": "scanner-primary", "fingerprint": "d962ec3fbb9a809d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7041e858e173c142", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/lib/ark-ai/cost.ts:4"}, "properties": {"repobilityId": "00449e157ea57dcd", "scanner": "scanner-primary", "fingerprint": "7041e858e173c142", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e8fbc5d9f6e50b33", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/lib/ark-ai/build-plan.ts:63"}, "properties": {"repobilityId": "a499ac5eab386be8", "scanner": "scanner-primary", "fingerprint": "e8fbc5d9f6e50b33", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-fe27dfa3fb0bc016", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/lib/ark-ai/slots.ts:1"}, "properties": {"repobilityId": "05a349541ee060d2", "scanner": "scanner-primary", "fingerprint": "fe27dfa3fb0bc016", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-bc65c442d5c7e0ee", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/lib/ark-ai/plan-templates.ts:1"}, "properties": {"repobilityId": "be7e07db4044c9e5", "scanner": "scanner-primary", "fingerprint": "bc65c442d5c7e0ee", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}]}]}