{"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: Teino-92/merci-murphy", "shortDescription": {"text": "Foundry mined unresolved feedback: Teino-92/merci-murphy"}, "fullDescription": {"text": "Graph query export: Human feedback without linked fix evidence\nQuery id: unresolved_feedback\nQuery type: motif_query\nIntent: Negative/unresolved examples that should not be hallucinated into fixes.\nMotif: unlinked_feedback_needs_evidence\nTraining usage: negative_or_unresolved\nGraph gold label: assumption_check\nRepo: Teino-92/merci-murphy\nThread: Teino-92/merci-murphy#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: Teino-92/merci-murphy\nThread: Teino-92/merci-murphy#2\nGraph gold label: assumption_check\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: Teino-92/merci-murphy#2\nRepo: Teino-92/merci-murphy\nIssue/PR number: 2\nGraph consistency label: assumption_check\nNodes: 23\nEdges: 44\nNode types: {'link_quality': 6, 'pr_file': 5, 'comment': 2, 'comment_chain': 2, 'alignment': 2, 'blueprint_finding': 2, 'thread': 1, 'repo': 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: Teino-92/merci-murphy", "shortDescription": {"text": "Foundry mined blueprint gap alignment: Teino-92/merci-murphy"}, "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: Teino-92/merci-murphy\nThread: Teino-92/merci-murphy#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: Teino-92/merci-murphy\nThread: Teino-92/merci-murphy#4\nGraph gold label: weak_supervision_needs_review\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: Teino-92/merci-murphy#4\nRepo: Teino-92/merci-murphy\nIssue/PR number: 4\nGraph consistency label: weak_supervision_needs_review\nNodes: 22\nEdges: 32\nNode types: {'link_quality': 6, 'commit': 3, 'comment': 2, 'comment_chain': 2, 'alignment': 2, 'blueprint_finding"}, "properties": {"scanner": "foundry_dataset", "category": "tech_debt", "severity": "medium", "confidence": 0.7, "cwe": "", "owasp": ""}}, {"id": "foundry_assumption_check", "name": "Foundry mined assumption checks: Teino-92/merci-murphy", "shortDescription": {"text": "Foundry mined assumption checks: Teino-92/merci-murphy"}, "fullDescription": {"text": "Comment chain pattern product: assumption_checks\nRepo: Teino-92/merci-murphy\nThread: Teino-92/merci-murphy#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: Teino-92/merci-murphy#4\nRepo: Teino-92/merci-murphy\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: {'data_schema_persistence': 1, 'deployment_env_gap': 1}\nPolarities: {'bad': 2}\nChanged file labels: {'ui_or_frontend': 1}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-aa8a64eb7e1ccf78\",\n    \"kind\": \"pull_request_body\",\n    \"label\": \"data_schema_persistence\",\n  "}, "properties": {"scanner": "foundry_dataset", "category": "practices", "severity": "medium", "confidence": 0.62, "cwe": "", "owasp": ""}}, {"id": "foundry_schema_ui_api_gap", "name": "Foundry mined schema ui api mismatch: Teino-92/merci-murphy", "shortDescription": {"text": "Foundry mined schema ui api mismatch: Teino-92/merci-murphy"}, "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: Teino-92/merci-murphy\nThread: Teino-92/merci-murphy#4\nEvidence:\nGraph motif: Schema, UI, and API evidence do not line up\nMotif id: schema_ui_api_mismatch\nPolarity: bad\nTraining usage: assumption_check\nSeverity: high\nRepo: Teino-92/merci-murphy\nThread: Teino-92/merci-murphy#4\nGraph gold label: weak_supervision_needs_review\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: Teino-92/merci-murphy#4\nRepo: Teino-92/merci-murphy\nIssue/PR number: 4\nGraph consistency label: weak_supervision_needs_review\nNodes: 22\nEdges: 32\nNode types: {'link_quality': 6, 'commit': 3, 'comment': 2, 'comment_chain': 2, 'alignment': 2, 'blueprint_finding': 2, 'thread': 1, 'repo': 1, 'pr_file': 1, 'issue_cha"}, "properties": {"scanner": "foundry_dataset", "category": "quality", "severity": "high", "confidence": 0.76, "cwe": "", "owasp": ""}}, {"id": "foundry_bad_chain", "name": "Foundry mined bad chains: Teino-92/merci-murphy", "shortDescription": {"text": "Foundry mined bad chains: Teino-92/merci-murphy"}, "fullDescription": {"text": "Comment chain pattern product: bad_chains\nRepo: Teino-92/merci-murphy\nThread: Teino-92/merci-murphy#2\nOutcome: not_resolved_or_not_observed\nThread label: thread_has_human_issue_without_fix_context\nSource graph label: source_backed_multi_signal_graph\nReasons: source_graph_has_real_artifacts, source_graph_has_verification_artifacts, repo_has_isolated_helicopter_views, link_quality_unresolved, high_risk_human_feedback_label\nChain evidence:\nIssue/PR evidence chain: Teino-92/merci-murphy#2\nRepo: Teino-92/merci-murphy\nThread label: thread_has_human_issue_without_fix_context\nOutcome: not_resolved_or_not_observed\nComment count: 2\nLinked commit count: 0\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 5\nLabels: {'data_schema_persistence': 1, 'deployment_env_gap': 1}\nPolarities: {'bad': 2}\nChanged file labels: {'ui_or_frontend': 4, 'schema_or_data': 1}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-55e7c91169046171\",\n    \"kind\": \"pull_request_body\",\n    \"label\": \"data_schem"}, "properties": {"scanner": "foundry_dataset", "category": "practices", "severity": "high", "confidence": 0.84, "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-d5aa62298b917fec", "name": "Stray `console.log` in TS/JS \u2014 scripts/send-complete-profile-reminder.ts:56", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/send-complete-profile-reminder.ts:56"}, "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-b262151d76c50abf", "name": "Stray `console.log` in TS/JS \u2014 scripts/backfill-resend-audience.ts:32", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/backfill-resend-audience.ts:32"}, "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-7a37c59c10b3b4ab", "name": "Stray `console.log` in TS/JS \u2014 scripts/seo/05-monitor.ts:77", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/seo/05-monitor.ts:77"}, "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-d6e2dcedae4a8dc0", "name": "Stray `console.log` in TS/JS \u2014 scripts/seo/06-bootstrap-state.ts:72", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/seo/06-bootstrap-state.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-7dacd80ea43bb547", "name": "Stray `console.log` in TS/JS \u2014 scripts/seo/03-generate-content.ts:204", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/seo/03-generate-content.ts:204"}, "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-0f3b302f82cfe578", "name": "Stray `console.log` in TS/JS \u2014 scripts/seo/02-competitor-analysis.ts:139", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/seo/02-competitor-analysis.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-f73df5c5da8f1960", "name": "Stray `console.log` in TS/JS \u2014 scripts/seo/01-keyword-research.ts:62", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/seo/01-keyword-research.ts:62"}, "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-810ec56f185fd2e5", "name": "Stray `console.log` in TS/JS \u2014 scripts/seo/07-rewrite-human.ts:104", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/seo/07-rewrite-human.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-20663c937b016991", "name": "Stray `console.log` in TS/JS \u2014 scripts/seo/04-publish-scheduler.ts:106", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/seo/04-publish-scheduler.ts:106"}, "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-ea6f72d4c4c833da", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/dashboard/calendar-view.tsx:328", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/dashboard/calendar-view.tsx:328"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-f4c0a47d0203bcb0", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/dashboard/revenue-chart.tsx:50", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/dashboard/revenue-chart.tsx:50"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-ed1f680ef01b0ba1", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/dashboard/nav.tsx:161", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/dashboard/nav.tsx:161"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-5aa9e5dd0c9979e6", "name": "\"active\" state uses light bg in a dark theme \u2014 src/components/dashboard/nav.tsx:106", "shortDescription": {"text": "\"active\" state uses light bg in a dark theme \u2014 src/components/dashboard/nav.tsx:106"}, "fullDescription": {"text": "A ternary like `active ? 'bg-white' : '...'` (or bg-gray-100/200) on a dark theme produces jarring white pills. Use a dark-emphasized active state instead \u2014 border + ring or slightly brighter dark bg. Example: `active ? 'bg-gray-800 border-gray-500 ring-1 ring-blue-500/30' : '\u2026'`.\n\nWhy: P-E in CHECKLIST.md \u2014 light bg in a dark theme is a class of regression.\nRule id: fq.active-light-bg"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-10a9acdf6b85f489", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 src/components/seo/organization-schema.tsx:34", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/components/seo/organization-schema.tsx:34"}, "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-472777c6f4ba6183", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 src/components/seo/local-business-schema.tsx:80", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/components/seo/local-business-schema.tsx:80"}, "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-783e5e1e2fd21865", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/(marketing)/page.tsx:276", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/(marketing)/page.tsx:276"}, "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-d56906daf3a4c43b", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/(marketing)/contact/page.tsx:55", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/(marketing)/contact/page.tsx:55"}, "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-2c852ebbb0148e44", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/(marketing)/(shop)/shop/[handle]/page.tsx:127", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/(marketing)/(shop)/shop/[handle]/page.tsx:127"}, "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-df4dbe4cbd5e11c4", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/(marketing)/toilettage/page.tsx:66", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/(marketing)/toilettage/page.tsx:66"}, "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-98812a414aea5c55", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/(marketing)/toilettage/[race]/page.tsx:112", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/(marketing)/toilettage/[race]/page.tsx:112"}, "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-5b1b859ecd0d0f6f", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/(marketing)/toilettage-chien-paris/page.tsx:219", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/(marketing)/toilettage-chien-paris/page.tsx:219"}, "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-26ba48dc4ac385a9", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/(marketing)/services/page.tsx:46", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/(marketing)/services/page.tsx:46"}, "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-2464c8b9e31bb246", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/(marketing)/services/[slug]/page.tsx:191", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/(marketing)/services/[slug]/page.tsx:191"}, "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-ea732eab1191064c", "name": "Insecure pattern 'dangerous_innerhtml' in src/components/seo/organization-schema.tsx:34", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in src/components/seo/organization-schema.tsx:34"}, "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-81c8ac5b326f5343", "name": "Insecure pattern 'dangerous_innerhtml' in src/components/seo/local-business-schema.tsx:80", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in src/components/seo/local-business-schema.tsx:80"}, "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-2c01e3dd53f9af46", "name": "Insecure pattern 'dangerous_innerhtml' in src/app/(marketing)/page.tsx:276", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/(marketing)/page.tsx:276"}, "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-1c9eff882a276e22", "name": "Insecure pattern 'dangerous_innerhtml' in src/app/(marketing)/contact/page.tsx:55", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/(marketing)/contact/page.tsx:55"}, "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-e3db7b5940dd277e", "name": "Insecure pattern 'dangerous_innerhtml' in src/app/(marketing)/(shop)/shop/[handle]/page.tsx:127", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/(marketing)/(shop)/shop/[handle]/page.tsx:127"}, "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-5824a9429db95cf9", "name": "Insecure pattern 'dangerous_innerhtml' in src/app/(marketing)/toilettage/page.tsx:66", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/(marketing)/toilettage/page.tsx:66"}, "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-61544b54a0bd46cd", "name": "Insecure pattern 'dangerous_innerhtml' in src/app/(marketing)/toilettage/[race]/page.tsx:112", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/(marketing)/toilettage/[race]/page.tsx:112"}, "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-ac184efae2ab6e30", "name": "Insecure pattern 'dangerous_innerhtml' in src/app/(marketing)/toilettage-chien-paris/page.tsx:219", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/(marketing)/toilettage-chien-paris/page.tsx:219"}, "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-895acf8d783b13e1", "name": "Insecure pattern 'dangerous_innerhtml' in src/app/(marketing)/services/page.tsx:46", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/(marketing)/services/page.tsx:46"}, "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-9b985c9634894919", "name": "Insecure pattern 'dangerous_innerhtml' in src/app/(marketing)/services/[slug]/page.tsx:191", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/(marketing)/services/[slug]/page.tsx:191"}, "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-cb639d9a10a47b23", "name": "package.json defines install-time lifecycle scripts", "shortDescription": {"text": "package.json defines install-time lifecycle scripts"}, "fullDescription": {"text": "preinstall/install/postinstall/prepare scripts execute during dependency installation. Review them carefully for network calls, obfuscation, shell execution, or credential access."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "low", "confidence": 1.0}}, {"id": "scanner-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-1cd596e9229c2557", "name": "Very large file: src/components/dashboard/customer-detail.tsx (1237 lines)", "shortDescription": {"text": "Very large file: src/components/dashboard/customer-detail.tsx (1237 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 250 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-01f96f71d9907a8c", "name": "README lacks setup or run instructions", "shortDescription": {"text": "README lacks setup or run instructions"}, "fullDescription": {"text": "A README exists, but it does not contain common install/setup/run markers. This matches a frequent generated-code pattern: UI is present, operational handoff is thin."}, "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 27 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 180 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, tests, operator-readme. 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": "medium", "confidence": 1.0}}, {"id": "scanner-749d4bc1bd66df5f", "name": "Agent instructions exist but release-hardening basics are missing", "shortDescription": {"text": "Agent instructions exist but release-hardening basics are missing"}, "fullDescription": {"text": "AI-coder instruction files were found, but the repo is missing license, ci, tests, operator-readme. Treat this as a contract gap: the agent is guided, but the generated output is not yet guarded by the controls that make it repeatable."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-ea8f3013f588db25", "name": "Shallow git history limits provenance confidence", "shortDescription": {"text": "Shallow git history limits provenance confidence"}, "fullDescription": {"text": "The repository is a shallow clone. Origin/evolution analysis cannot distinguish fresh generation, imported legacy code, or long-lived human code with high confidence."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-8424db9c75e04ba4", "name": "Very short observed git history", "shortDescription": {"text": "Very short observed git history"}, "fullDescription": {"text": "The repo has multiple source files but two or fewer visible commits. This is not a failure by itself, but it lowers confidence in evolution-based diagnosis."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-17d866d91a7c451e", "name": "Agent instruction/config may expose a secret: CLAUDE.md", "shortDescription": {"text": "Agent instruction/config may expose a secret: CLAUDE.md"}, "fullDescription": {"text": "Agent-facing files are routinely pasted into LLM/tool contexts. Move literal tokens, keys, and passwords into a secret manager or document them as placeholders only."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-050a73de0cc9583c", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/seo/lib/serpapi.ts:31", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/seo/lib/serpapi.ts:31"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-53c6e03fa920ff0b", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/seo/lib/anthropic.ts:27", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/seo/lib/anthropic.ts:27"}, "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-9d234a25b8d62abb", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/dashboard/calendar-view.tsx:93", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/dashboard/calendar-view.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-855b18d57160e21f", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/dashboard/leads-table.tsx:59", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/dashboard/leads-table.tsx:59"}, "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-b53339925dd13515", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/dashboard/staff-schedule-editor.tsx:87", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/dashboard/staff-schedule-editor.tsx:87"}, "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-731ed9ed964fbdf6", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/dashboard/customer-detail.tsx:87", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/dashboard/customer-detail.tsx:87"}, "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-3e776c00dd4ca3dc", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/dashboard/staff-manager.tsx:34", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/dashboard/staff-manager.tsx:34"}, "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-3d96859d2320a149", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/dashboard/notification-bell.tsx:96", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/dashboard/notification-bell.tsx:96"}, "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-b539b1840c78c9ef", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/dashboard/newsletter-table.tsx:20", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/dashboard/newsletter-table.tsx:20"}, "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-64a91e4ebc2b7c89", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/dashboard/new-reservation-form.tsx:101", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/dashboard/new-reservation-form.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-bb74976841486e22", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/forms/slot-picker.tsx:325", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/forms/slot-picker.tsx:325"}, "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-d2f9b929f4d97ace", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/dashboard/reservations/new/page.tsx:13", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/dashboard/reservations/new/page.tsx:13"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-03a4a506ef007c1e", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(marketing)/booking/respond/decline/page.tsx:15", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(marketing)/booking/respond/decline/page.tsx:15"}, "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-99203aec00494d7d", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/lib/shopify.ts:6", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/lib/shopify.ts:6"}, "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-84e7afcea25a5692", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/lib/shopify-server.ts:28", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/lib/shopify-server.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-e804c028ef1c6c86", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/lib/shopify-admin.ts:6", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/lib/shopify-admin.ts:6"}, "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-fb7d91919764197d", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/lib/seo-pipeline.ts:152", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/lib/seo-pipeline.ts:152"}, "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-c267f9a8f7d8b582", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/lib/supabase-admin.ts:11", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/lib/supabase-admin.ts:11"}, "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-030eb00775ff6226", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/lib/sumup.ts:19", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/lib/sumup.ts:19"}, "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-4bc85a7c744ab8ba", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/sanity/queries/team.ts:13", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/sanity/queries/team.ts:13"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-2b773e1009b02734", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/sanity/queries/site-settings.ts:50", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/sanity/queries/site-settings.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-f0a01bebe1ed6752", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/sanity/queries/testimonials.ts:13", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/sanity/queries/testimonials.ts:13"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-9e1a8b225ea5447c", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/sanity/queries/services.ts:46", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/sanity/queries/services.ts:46"}, "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-97c690bc0aba4f85", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/sanity/queries/seo-pages.ts:38", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/sanity/queries/seo-pages.ts: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-47fa79085523d72d", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/sanity/queries/posts.ts:32", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/sanity/queries/posts.ts:32"}, "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}}]}}, "automationDetails": {"id": "repobility/20951"}, "properties": {"repository": "Teino-92/merci-murphy", "repoUrl": "https://github.com/Teino-92/merci-murphy", "branch": "main"}, "results": [{"ruleId": "foundry_unresolved_feedback", "level": "warning", "message": {"text": "Foundry mined unresolved feedback: Teino-92/merci-murphy"}, "properties": {"repobilityId": 423450, "scanner": "foundry_dataset", "fingerprint": "7142a13d053225097f00fc2d4cd5cc72fef6bbd9b1b69cf075b8987b2748109c", "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": {"schema_or_data": 1, "ui_or_frontend": 4, "deployment_env_gap": 1, "data_schema_persistence": 1, "mostly follows blueprint": 2, "issue_or_pull_request_thread": 1, "not_resolved_or_not_observed": 4, "blueprint_human_gap_disagreement": 2, "human_reported_issue_no_linked_fix": 2, "thread_has_human_issue_without_fix_context": 2}, "source": "graph_query_export", "motif_id": "unlinked_feedback_needs_evidence", "outcomes": {"not_resolved_or_not_observed": 8}, "polarity": "bad", "query_id": "unresolved_feedback", "severity": "medium", "ci_labels": {}, "synthetic": false, "edge_count": 44, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 2, "thread_has_comment": 2, "thread_touches_file": 5, "alignment_uses_comment": 2, "alignment_uses_finding": 2, "chain_has_link_quality": 6, "comment_aligns_finding": 2, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "issue_chain_touches_file": 5, "thread_has_comment_chain": 2, "comment_chain_touches_file": 10, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 2}, "node_count": 23, "node_types": {"repo": 1, "thread": 1, "comment": 2, "pr_file": 5, "alignment": 2, "fix_outcome": 1, "issue_chain": 1, "link_quality": 6, "comment_chain": 2, "blueprint_finding": 2}, "query_type": "motif_query", "thread_key": "Teino-92/merci-murphy#2", "issue_number": "2", "quality_tiers": {"unresolved": 4, "assumption_check": 2}, "repo_full_name": "Teino-92/merci-murphy", "training_usage": "negative_or_unresolved", "source_motif_id": "graph-pattern-motif-thread-82a865c2c0fa32aa", "graph_gold_label": "assumption_check", "changed_file_labels": {"schema_or_data": 5, "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: assumption_check\nRepo: Teino-92/merci-murphy\nThread: Teino-92/merci-murphy#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: Teino-92/merci-murphy\nThread: Teino-92/merci-murphy#2\nGraph gold label: assumption_check\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: Teino-92/merci-murphy#2\nRepo: Teino-92/merci-murphy\nIssue/PR number: 2\nGraph consistency label: assumption_check\nNodes: 23\nEdges: 44\nNode types: {'link_quality': 6, 'pr_file': 5, 'comment': 2, 'comment_chain': 2, 'alignment': 2, 'blueprint_finding': 2, 'thread': 1, 'repo': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'comment_chain_touches_file': 10, 'chain_has_link_quality': 6, 'thread_touches_file': 5, 'issue_chain_touches_file': 5, 'thread_has_comment': 2, 'thread_has_comment_chain': 2, 'comment_has_chain': 2, 'issue_chain_has_comment_chain': 2, 'alignment_uses_comment': 2, 'alignment_uses_finding': 2, 'comment_aligns_finding': 2, 'repo_has_thread': 1, 'thread_has_issue_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'ui_or_frontend': 4, 'not_resolved_or_not_observed': 4, 'human_reported_issue_no_linked_fix': 2, 'thread_has_human_issue_without_fix_context': 2, 'blueprint_human_gap_disagreement': 2, 'mostly follows blueprint': 2, 'issue_or_pull_request_thread': 1, 'data_schema_persistence': 1, 'deployment_env_gap': 1, 'schema_or_data': 1}\nOutcomes: {'not_resolved_or_not_observed': 8}\nQuality tiers: {'unresolved': 4, 'assumption_check': 2}\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/Teino-92/merci-murphy", "source_id": "graph-query-motif_query-a31d96e7e92de19c", "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": "Teino-92/merci-murphy", "source_dataset": "graph_queries/unresolved_feedback", "training_usage": "negative_or_unresolved"}}}, {"ruleId": "foundry_unresolved_feedback", "level": "warning", "message": {"text": "Foundry mined unresolved feedback: Teino-92/merci-murphy"}, "properties": {"repobilityId": 423449, "scanner": "foundry_dataset", "fingerprint": "95fa8b21c5722f8ec26ee3104edd316f759a9fcb978d0f93798be3bdffdedbee", "category": "practices", "severity": "medium", "confidence": 0.7, "triageState": "open", "verdict": "needs_review", "isResolved": false, "reason": "Imported from mined Foundry/Fable5 evidence with real GitHub/source provenance. Review source_id before acting.", "evidence": {"meta": {"kind": "graph_query_record", "title": "Human feedback without linked fix evidence", "intent": "Negative/unresolved examples that should not be hallucinated into fixes.", "labels": {"api_or_backend": 8, "docs_or_claims": 3, "schema_or_data": 3, "ui_or_frontend": 11, "deployment_env_gap": 1, "data_schema_persistence": 1, "mostly follows blueprint": 2, "issue_or_pull_request_thread": 1, "not_resolved_or_not_observed": 4, "blueprint_human_gap_disagreement": 2, "human_reported_issue_no_linked_fix": 2, "thread_has_human_issue_without_fix_context": 2}, "source": "graph_query_export", "motif_id": "unlinked_feedback_needs_evidence", "outcomes": {"not_resolved_or_not_observed": 8}, "polarity": "bad", "query_id": "unresolved_feedback", "severity": "medium", "ci_labels": {}, "synthetic": false, "edge_count": 85, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 2, "thread_has_comment": 2, "thread_touches_file": 25, "alignment_uses_comment": 2, "alignment_uses_finding": 2, "chain_has_link_quality": 6, "comment_aligns_finding": 2, "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": 43, "node_types": {"repo": 1, "thread": 1, "comment": 2, "pr_file": 25, "alignment": 2, "fix_outcome": 1, "issue_chain": 1, "link_quality": 6, "comment_chain": 2, "blueprint_finding": 2}, "query_type": "motif_query", "thread_key": "Teino-92/merci-murphy#1", "issue_number": "1", "quality_tiers": {"unresolved": 4, "assumption_check": 2}, "repo_full_name": "Teino-92/merci-murphy", "training_usage": "negative_or_unresolved", "source_motif_id": "graph-pattern-motif-thread-5979149822b6fd13", "graph_gold_label": "assumption_check", "changed_file_labels": {"api_or_backend": 40, "docs_or_claims": 15, "schema_or_data": 15, "ui_or_frontend": 55}}, "text": "Graph query export: Human feedback without linked fix evidence\nQuery id: unresolved_feedback\nQuery type: motif_query\nIntent: Negative/unresolved examples that should not be hallucinated into fixes.\nMotif: unlinked_feedback_needs_evidence\nTraining usage: negative_or_unresolved\nGraph gold label: assumption_check\nRepo: Teino-92/merci-murphy\nThread: Teino-92/merci-murphy#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: Teino-92/merci-murphy\nThread: Teino-92/merci-murphy#1\nGraph gold label: assumption_check\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: Teino-92/merci-murphy#1\nRepo: Teino-92/merci-murphy\nIssue/PR number: 1\nGraph consistency label: assumption_check\nNodes: 43\nEdges: 85\nNode types: {'pr_file': 25, 'link_quality': 6, 'comment': 2, 'comment_chain': 2, 'alignment': 2, 'blueprint_finding': 2, 'thread': 1, 'repo': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'thread_touches_file': 25, 'comment_chain_touches_file': 24, 'issue_chain_touches_file': 12, 'chain_has_link_quality': 6, 'thread_has_comment': 2, 'thread_has_comment_chain': 2, 'comment_has_chain': 2, 'issue_chain_has_comment_chain': 2, 'alignment_uses_comment': 2, 'alignment_uses_finding': 2, 'comment_aligns_finding': 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': 11, 'api_or_backend': 8, 'not_resolved_or_not_observed': 4, 'docs_or_claims': 3, 'schema_or_data': 3, 'human_reported_issue_no_linked_fix': 2, 'thread_has_human_issue_without_fix_context': 2, 'blueprint_human_gap_disagreement': 2, 'mostly follows blueprint': 2, 'issue_or_pull_request_thread': 1, 'data_schema_persistence': 1, 'deployment_env_gap': 1}\nOutcomes: {'not_resolved_or_not_observed': 8}\nQuality tiers: {'unresolved': 4, 'assumption_check': 2}\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/Teino-92/merci-murphy", "source_id": "graph-query-motif_query-8d642726028c08b1", "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": "Teino-92/merci-murphy", "source_dataset": "graph_queries/unresolved_feedback", "training_usage": "negative_or_unresolved"}}}, {"ruleId": "foundry_blueprint_gap", "level": "warning", "message": {"text": "Foundry mined blueprint gap alignment: Teino-92/merci-murphy"}, "properties": {"repobilityId": 395282, "scanner": "foundry_dataset", "fingerprint": "4fd14d6541ac567c07e9f7083cdd8c4857ad6616d1869d0c18690a292748534f", "category": "tech_debt", "severity": "medium", "confidence": 0.7, "triageState": "open", "verdict": "needs_review", "isResolved": false, "reason": "Imported from mined Foundry/Fable5 evidence with real GitHub/source provenance. Review source_id before acting.", "evidence": {"meta": {"kind": "graph_query_record", "title": "Human feedback aligned with blueprint or architecture gaps", "intent": "Curriculum-gap examples connecting issue threads to helicopter-view gaps.", "labels": {"bug_fix": 1, "data_schema": 1, "commit_general": 1, "ui_or_frontend": 1, "deployment_env_gap": 1, "data_schema_persistence": 1, "mostly follows blueprint": 2, "claimed_resolved_unverified": 3, "issue_or_pull_request_thread": 1, "ambiguous_needs_more_evidence": 1, "blueprint_human_gap_disagreement": 2, "comment_has_related_commit_context": 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, "ambiguous_needs_more_evidence": 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": 1, "alignment_uses_comment": 2, "alignment_uses_finding": 2, "chain_has_link_quality": 6, "comment_aligns_finding": 2, "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": 22, "node_types": {"repo": 1, "commit": 3, "thread": 1, "comment": 2, "pr_file": 1, "alignment": 2, "fix_outcome": 1, "issue_chain": 1, "link_quality": 6, "comment_chain": 2, "blueprint_finding": 2}, "query_type": "motif_query", "thread_key": "Teino-92/merci-murphy#4", "issue_number": "4", "quality_tiers": {"assumption_check": 2, "weak_supervision": 4}, "repo_full_name": "Teino-92/merci-murphy", "training_usage": "curriculum_gap", "source_motif_id": "graph-pattern-motif-thread-56e3152bb11daa40", "graph_gold_label": "weak_supervision_needs_review", "changed_file_labels": {"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: Teino-92/merci-murphy\nThread: Teino-92/merci-murphy#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: Teino-92/merci-murphy\nThread: Teino-92/merci-murphy#4\nGraph gold label: weak_supervision_needs_review\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: Teino-92/merci-murphy#4\nRepo: Teino-92/merci-murphy\nIssue/PR number: 4\nGraph consistency label: weak_supervision_needs_review\nNodes: 22\nEdges: 32\nNode types: {'link_quality': 6, 'commit': 3, 'comment': 2, 'comment_chain': 2, 'alignment': 2, 'blueprint_finding': 2, 'thread': 1, 'repo': 1, 'pr_file': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'chain_has_link_quality': 6, 'comment_chain_links_commit': 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, 'alignment_uses_comment': 2, 'alignment_uses_finding': 2, 'comment_aligns_finding': 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, 'thread_has_human_issue_and_fix_context': 2, 'blueprint_human_gap_disagreement': 2, 'mostly follows blueprint': 2, 'issue_or_pull_request_thread': 1, 'data_schema_persistence': 1, 'deployment_env_gap': 1, 'ui_or_frontend': 1, 'human_reported_issue_then_fix_attempt': 1, 'commit_general': 1, 'data_schema': 1, 'bug_fix': 1, 'comment_has_related_commit_context': 1, 'ambiguous_needs_more_evidence': 1}\nOutcomes: {'claimed_resolved_unverified': 6, 'ambiguous_needs_more_evidence': 2}\nQuality tiers: {'weak_supervision': 4, 'assumption_check': 2}\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/Teino-92/merci-murphy", "source_id": "graph-query-motif_query-9664fcde6753c434", "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": "Teino-92/merci-murphy", "source_dataset": "graph_queries/blueprint_gap_alignment", "training_usage": "curriculum_gap"}}}, {"ruleId": "foundry_blueprint_gap", "level": "warning", "message": {"text": "Foundry mined blueprint gap alignment: Teino-92/merci-murphy"}, "properties": {"repobilityId": 395281, "scanner": "foundry_dataset", "fingerprint": "17f37e00b72e27967a033c463e65e93bc2411920f9cc32506527e9434ab07dc9", "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": {"schema_or_data": 1, "ui_or_frontend": 4, "deployment_env_gap": 1, "data_schema_persistence": 1, "mostly follows blueprint": 2, "issue_or_pull_request_thread": 1, "not_resolved_or_not_observed": 4, "blueprint_human_gap_disagreement": 2, "human_reported_issue_no_linked_fix": 2, "thread_has_human_issue_without_fix_context": 2}, "source": "graph_query_export", "motif_id": "blueprint_gap_alignment", "outcomes": {"not_resolved_or_not_observed": 8}, "polarity": "mixed", "query_id": "blueprint_gap_alignment", "severity": "medium", "ci_labels": {}, "synthetic": false, "edge_count": 44, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 2, "thread_has_comment": 2, "thread_touches_file": 5, "alignment_uses_comment": 2, "alignment_uses_finding": 2, "chain_has_link_quality": 6, "comment_aligns_finding": 2, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "issue_chain_touches_file": 5, "thread_has_comment_chain": 2, "comment_chain_touches_file": 10, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 2}, "node_count": 23, "node_types": {"repo": 1, "thread": 1, "comment": 2, "pr_file": 5, "alignment": 2, "fix_outcome": 1, "issue_chain": 1, "link_quality": 6, "comment_chain": 2, "blueprint_finding": 2}, "query_type": "motif_query", "thread_key": "Teino-92/merci-murphy#2", "issue_number": "2", "quality_tiers": {"unresolved": 4, "assumption_check": 2}, "repo_full_name": "Teino-92/merci-murphy", "training_usage": "curriculum_gap", "source_motif_id": "graph-pattern-motif-thread-332a1273dd7cb3e8", "graph_gold_label": "assumption_check", "changed_file_labels": {"schema_or_data": 5, "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: assumption_check\nRepo: Teino-92/merci-murphy\nThread: Teino-92/merci-murphy#2\nEvidence:\nGraph motif: Human feedback aligns with blueprint or architecture gaps\nMotif id: blueprint_gap_alignment\nPolarity: mixed\nTraining usage: curriculum_gap\nSeverity: medium\nRepo: Teino-92/merci-murphy\nThread: Teino-92/merci-murphy#2\nGraph gold label: assumption_check\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: Teino-92/merci-murphy#2\nRepo: Teino-92/merci-murphy\nIssue/PR number: 2\nGraph consistency label: assumption_check\nNodes: 23\nEdges: 44\nNode types: {'link_quality': 6, 'pr_file': 5, 'comment': 2, 'comment_chain': 2, 'alignment': 2, 'blueprint_finding': 2, 'thread': 1, 'repo': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'comment_chain_touches_file': 10, 'chain_has_link_quality': 6, 'thread_touches_file': 5, 'issue_chain_touches_file': 5, 'thread_has_comment': 2, 'thread_has_comment_chain': 2, 'comment_has_chain': 2, 'issue_chain_has_comment_chain': 2, 'alignment_uses_comment': 2, 'alignment_uses_finding': 2, 'comment_aligns_finding': 2, 'repo_has_thread': 1, 'thread_has_issue_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'ui_or_frontend': 4, 'not_resolved_or_not_observed': 4, 'human_reported_issue_no_linked_fix': 2, 'thread_has_human_issue_without_fix_context': 2, 'blueprint_human_gap_disagreement': 2, 'mostly follows blueprint': 2, 'issue_or_pull_request_thread': 1, 'data_schema_persistence': 1, 'deployment_env_gap': 1, 'schema_or_data': 1}\nOutcomes: {'not_resolved_or_not_observed': 8}\nQuality tiers: {'unresolved': 4, 'assumption_check': 2}\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/Teino-92/merci-murphy", "source_id": "graph-query-motif_query-52634390983be337", "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": "Teino-92/merci-murphy", "source_dataset": "graph_queries/blueprint_gap_alignment", "training_usage": "curriculum_gap"}}}, {"ruleId": "foundry_blueprint_gap", "level": "warning", "message": {"text": "Foundry mined blueprint gap alignment: Teino-92/merci-murphy"}, "properties": {"repobilityId": 395280, "scanner": "foundry_dataset", "fingerprint": "ed13d356bcb663dbfb7c776e84448fad08f306282e512d7b3ff638101ddf727b", "category": "tech_debt", "severity": "medium", "confidence": 0.7, "triageState": "open", "verdict": "needs_review", "isResolved": false, "reason": "Imported from mined Foundry/Fable5 evidence with real GitHub/source provenance. Review source_id before acting.", "evidence": {"meta": {"kind": "graph_query_record", "title": "Human feedback aligned with blueprint or architecture gaps", "intent": "Curriculum-gap examples connecting issue threads to helicopter-view gaps.", "labels": {"api_or_backend": 8, "docs_or_claims": 3, "schema_or_data": 3, "ui_or_frontend": 11, "deployment_env_gap": 1, "data_schema_persistence": 1, "mostly follows blueprint": 2, "issue_or_pull_request_thread": 1, "not_resolved_or_not_observed": 4, "blueprint_human_gap_disagreement": 2, "human_reported_issue_no_linked_fix": 2, "thread_has_human_issue_without_fix_context": 2}, "source": "graph_query_export", "motif_id": "blueprint_gap_alignment", "outcomes": {"not_resolved_or_not_observed": 8}, "polarity": "mixed", "query_id": "blueprint_gap_alignment", "severity": "medium", "ci_labels": {}, "synthetic": false, "edge_count": 85, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 2, "thread_has_comment": 2, "thread_touches_file": 25, "alignment_uses_comment": 2, "alignment_uses_finding": 2, "chain_has_link_quality": 6, "comment_aligns_finding": 2, "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": 43, "node_types": {"repo": 1, "thread": 1, "comment": 2, "pr_file": 25, "alignment": 2, "fix_outcome": 1, "issue_chain": 1, "link_quality": 6, "comment_chain": 2, "blueprint_finding": 2}, "query_type": "motif_query", "thread_key": "Teino-92/merci-murphy#1", "issue_number": "1", "quality_tiers": {"unresolved": 4, "assumption_check": 2}, "repo_full_name": "Teino-92/merci-murphy", "training_usage": "curriculum_gap", "source_motif_id": "graph-pattern-motif-thread-da4c3ec95dca3cd1", "graph_gold_label": "assumption_check", "changed_file_labels": {"api_or_backend": 40, "docs_or_claims": 15, "schema_or_data": 15, "ui_or_frontend": 55}}, "text": "Graph query export: Human feedback aligned with blueprint or architecture gaps\nQuery id: blueprint_gap_alignment\nQuery type: motif_query\nIntent: Curriculum-gap examples connecting issue threads to helicopter-view gaps.\nMotif: blueprint_gap_alignment\nTraining usage: curriculum_gap\nGraph gold label: assumption_check\nRepo: Teino-92/merci-murphy\nThread: Teino-92/merci-murphy#1\nEvidence:\nGraph motif: Human feedback aligns with blueprint or architecture gaps\nMotif id: blueprint_gap_alignment\nPolarity: mixed\nTraining usage: curriculum_gap\nSeverity: medium\nRepo: Teino-92/merci-murphy\nThread: Teino-92/merci-murphy#1\nGraph gold label: assumption_check\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: Teino-92/merci-murphy#1\nRepo: Teino-92/merci-murphy\nIssue/PR number: 1\nGraph consistency label: assumption_check\nNodes: 43\nEdges: 85\nNode types: {'pr_file': 25, 'link_quality': 6, 'comment': 2, 'comment_chain': 2, 'alignment': 2, 'blueprint_finding': 2, 'thread': 1, 'repo': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'thread_touches_file': 25, 'comment_chain_touches_file': 24, 'issue_chain_touches_file': 12, 'chain_has_link_quality': 6, 'thread_has_comment': 2, 'thread_has_comment_chain': 2, 'comment_has_chain': 2, 'issue_chain_has_comment_chain': 2, 'alignment_uses_comment': 2, 'alignment_uses_finding': 2, 'comment_aligns_finding': 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': 11, 'api_or_backend': 8, 'not_resolved_or_not_observed': 4, 'docs_or_claims': 3, 'schema_or_data': 3, 'human_reported_issue_no_linked_fix': 2, 'thread_has_human_issue_without_fix_context': 2, 'blueprint_human_gap_disagreement': 2, 'mostly follows blueprint': 2, 'issue_or_pull_request_thread': 1, 'data_schema_persistence': 1, 'deployment_env_gap': 1}\nOutcomes: {'not_resolved_or_not_observed': 8}\nQuality tiers: {'unresolved': 4, 'assumption_check': 2}\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/Teino-92/merci-murphy", "source_id": "graph-query-motif_query-476a66fa1a98692d", "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": "Teino-92/merci-murphy", "source_dataset": "graph_queries/blueprint_gap_alignment", "training_usage": "curriculum_gap"}}}, {"ruleId": "foundry_assumption_check", "level": "warning", "message": {"text": "Foundry mined assumption checks: Teino-92/merci-murphy"}, "properties": {"repobilityId": 374385, "scanner": "foundry_dataset", "fingerprint": "20e5806b5a1ea8012b6aca30d8c1df3f6517aa1e2e79075cb8e93df4cce30a5c", "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": "Teino-92/merci-murphy#4", "human_labels": ["data_schema_persistence", "deployment_env_gap", "ui_or_frontend"], "issue_number": "4", "thread_label": "thread_has_human_issue_and_fix_context", "outcome_label": "claimed_resolved_unverified", "source_backed": true, "max_confidence": 0.742, "repo_full_name": "Teino-92/merci-murphy", "training_usage": "weak_supervision", "confidence_tier": "weak_supervision", "source_chain_id": "evidence-chain-issue_chain-48a42eafd7efc71f", "helicopter_views": {"schemas": 2}, "artifact_families": {"ci": 1, "docs": 4, "schemas": 2, "architecture": 1}, "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": 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": 3, "design_schema_api_artifact_count": 3}, "text": "Comment chain pattern product: assumption_checks\nRepo: Teino-92/merci-murphy\nThread: Teino-92/merci-murphy#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: Teino-92/merci-murphy#4\nRepo: Teino-92/merci-murphy\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: {'data_schema_persistence': 1, 'deployment_env_gap': 1}\nPolarities: {'bad': 2}\nChanged file labels: {'ui_or_frontend': 1}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-aa8a64eb7e1ccf78\",\n    \"kind\": \"pull_request_body\",\n    \"label\": \"data_schema_persistence\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/Teino-92/merci-murphy/pull/4\",\n    \"text\": \"GitHub feedback: data_schema_persistence\\nPolarity: bad\\nKind: pull_request_body\\nRepo: Teino-92/merci-murphy\\nAuthor: Teino-92 (User)\\nURL: https://github.com/Teino-92/merci-murphy/pull/4\\nTitle: feat: web push notifications for dashboard staff\\nBody:\\n## Summary\\n\\n- Web push notifications pour le staff dashboard (iOS Safari PWA, Android Chrome, desktop Chrome/Firefox)\\n- Nouveaux fichiers : `public/sw.js` (Service Worker), `src/lib/push.ts` (helper VAPID), `/api/push/subscribe` (POST upsert + DELETE), `PushToggle` (7 \u00e9tats), `/dashboard/settings`, migration SQL `push_subscriptions`\\n- Push sur 4 \u00e9v\u00e9nements : `new-lead`, `new-visit`, `pending-deposit`, `deposit-paid`\\n\\n## Env vars Vercel (Preview + Production)\\n\\n```\\nVAPID_PUBLIC_KEY=\\nVAPID_PRIVATE_KEY=\\nVAPID_SUBJECT=mailto:bonjour@mercimurphy.com\\nNEXT_PUBLIC_VAPID_PUBLIC_KEY=\\n```\\n\\n\u2705 Migration Supabase appliqu\u00e9e\\n\u2705 Env vars Vercel configur\u00e9es\\n\\n## Test plan\\n\\n- [ ] iOS Safari PWA : Activer push \u2192 soumettre lead \u2192 notif re\u00e7ue PWA ferm\u00e9e \u2192 tap \u2192 `/dashboard/leads`\\n- [ ] Android Chrome : m\u00eame flow\\n- [ ] Desktop Chrome : m\u00eame flow\\n- [ ] D\u00e9sactiver \u2192 cr\u00e9er lead \u2192 pas de push \u2192 row supprim\u00e9e DB\\n- [ ] 4 event types : `new-lead`, `new-visit`, `pending-dep\"\n  },\n  {\n    \"id\": \"github-feedback-comment-aed62a1df1e7ee0c\",\n    \"kind\": \"issue_comment\",\n    \"label\": \"deployment_env_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/Teino-92/merci-murphy/pull/4#issuecomment-4303841002\",\n    \"text\": \"GitHub feedback: deployment_env_gap\\nPolarity: bad\\nKind: issue_comment\\nRepo: Teino-92/merci-murphy\\nAuthor: vercel[bot] (Bot)\\nURL: https://github.com/Teino-92/merci-murphy/pull/4#issuecomment-4303841002\\nTitle: \\nBody:\\n[vc]: #vg8NZObCl35GAYP0PkPUwemG8CmoqE+o+izjD4EwNG0=:eyJpc01vbm9yZXBvIjp0cnVlLCJ0eXBlIjoiZ2l0aHViIiwicHJvamVjdHMiOlt7Im5hbWUiOiJtZXJjaS1tdXJwaHkiLCJwcm9qZWN0SWQiOiJwcm\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/Teino-92/merci-murphy", "source_id": "comment-chain-pattern-assumption_checks-14605727be5da389", "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": "Teino-92/merci-murphy", "source_dataset": "comment_chain_patterns/assumption_checks", "training_usage": "weak_supervision"}}}, {"ruleId": "foundry_assumption_check", "level": "warning", "message": {"text": "Foundry mined assumption checks: Teino-92/merci-murphy"}, "properties": {"repobilityId": 374384, "scanner": "foundry_dataset", "fingerprint": "d0895b91ae41f32092b162108c95525faaa53174c97a875cb27370b1572c5b0e", "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": "Teino-92/merci-murphy#3", "human_labels": ["api_or_backend", "dependency_or_build", "deployment_env_gap", "docs_or_claims", "human_feedback_general", "schema_or_data", "source_or_other", "ui_or_frontend"], "issue_number": "3", "thread_label": "thread_has_human_issue_and_fix_context", "outcome_label": "ambiguous_needs_more_evidence", "source_backed": true, "max_confidence": 0.779, "repo_full_name": "Teino-92/merci-murphy", "training_usage": "weak_supervision", "confidence_tier": "weak_supervision", "source_chain_id": "evidence-chain-issue_chain-82b7d4f571f41ad2", "helicopter_views": {"schemas": 2}, "artifact_families": {"ci": 1, "docs": 4, "schemas": 2, "architecture": 1}, "source_chain_kind": "issue_chain", "changed_file_count": 17, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {"api_or_backend": 4, "docs_or_claims": 1, "schema_or_data": 1, "ui_or_frontend": 7, "source_or_other": 2, "dependency_or_build": 2}, "linked_commit_count": 2, "helicopter_view_count": 2, "source_artifact_count": 8, "classification_reasons": ["source_graph_has_real_artifacts", "source_graph_has_verification_artifacts", "repo_has_isolated_helicopter_views", "link_quality_weak_supervision", "high_risk_human_feedback_label"], "linked_ci_commit_count": 0, "verification_artifact_count": 3, "design_schema_api_artifact_count": 3}, "text": "Comment chain pattern product: assumption_checks\nRepo: Teino-92/merci-murphy\nThread: Teino-92/merci-murphy#3\nOutcome: ambiguous_needs_more_evidence\nThread label: thread_has_human_issue_and_fix_context\nSource graph label: source_backed_multi_signal_graph\nReasons: source_graph_has_real_artifacts, source_graph_has_verification_artifacts, repo_has_isolated_helicopter_views, link_quality_weak_supervision, high_risk_human_feedback_label\nChain evidence:\nIssue/PR evidence chain: Teino-92/merci-murphy#3\nRepo: Teino-92/merci-murphy\nThread label: thread_has_human_issue_and_fix_context\nOutcome: ambiguous_needs_more_evidence\nComment count: 2\nLinked commit count: 2\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 17\nLabels: {'human_feedback_general': 1, 'deployment_env_gap': 1}\nPolarities: {'neutral': 1, 'bad': 1}\nChanged file labels: {'source_or_other': 2, 'docs_or_claims': 1, 'dependency_or_build': 2, 'ui_or_frontend': 7, 'api_or_backend': 4, 'schema_or_data': 1}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-70c8b4ef5bc93b58\",\n    \"kind\": \"pull_request_body\",\n    \"label\": \"human_feedback_general\",\n    \"polarity\": \"neutral\",\n    \"url\": \"https://github.com/Teino-92/merci-murphy/pull/3\",\n    \"text\": \"GitHub feedback: human_feedback_general\\nPolarity: neutral\\nKind: pull_request_body\\nRepo: Teino-92/merci-murphy\\nAuthor: Teino-92 (User)\\nURL: https://github.com/Teino-92/merci-murphy/pull/3\\nTitle: Feat/web push notifications\\nBody:\\n\"\n  },\n  {\n    \"id\": \"github-feedback-comment-844e8a591118d5b2\",\n    \"kind\": \"issue_comment\",\n    \"label\": \"deployment_env_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/Teino-92/merci-murphy/pull/3#issuecomment-4303775534\",\n    \"text\": \"GitHub feedback: deployment_env_gap\\nPolarity: bad\\nKind: issue_comment\\nRepo: Teino-92/merci-murphy\\nAuthor: vercel[bot] (Bot)\\nURL: https://github.com/Teino-92/merci-murphy/pull/3#issuecomment-4303775534\\nTitle: \\nBody:\\n[vc]: #QZ6qeK0rWryPcvdbGjKzYCi3bIRPglm7b+Ib98/StY8=:eyJpc01vbm9yZXBvIjp0cnVlLCJ0eXBlIjoiZ2l0aHViIiwicHJvamVjdHMiOlt7Im5hbWUiOiJtZXJjaS1tdXJwaHkiLCJwcm9qZWN0SWQiOiJwcmpfT3RnVHlnZGdBd21MVlJvMFdhNEprcnNaWUo3TyIsImluc3BlY3RvclVybCI6Imh0dHBzOi8vdmVyY2VsLmNvbS9tYXR0ZW8tZ2FyYnVnbGlzLXByb2plY3RzL21lcmNpLW11cnBoeS81MkE2eFBieWNuMkVmUnZpUnlEc3RBa2Z2OXZjIiwicHJldmlld1VybCI6Im1lcmNpLW11cnBoeS1naXQtZmVhdC13ZWItcHVzaC1mZGYzNmQtbWF0dGVvLWdhcmJ1Z2xpcy1wcm9qZWN0cy52ZXJjZWwuYXBwIiwibmV4dENvbW1pdFN0YXR1cyI6IlBFTkRJTkciLCJsaXZlRmVlZGJhY2siOnsicmVzb2x2ZWQiOjAsInVucmVzb2x2ZWQiOjAsInRvdGFsIjowLCJsaW5rIjoibWVyY2ktbXVycGh5LWdpdC1mZWF0LXdlYi1wdXNoLWZkZjM2ZC1tYXR0ZW8tZ2FyYnVnbGlzLXByb2plY3RzLnZlcmNlbC5hcHAifX1dfQ==\\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| [merci-murphy](https://vercel.com/matteo-garbuglis-projects/merci-murphy) | ![Buil\"\n  }\n]\nChanged files:\n[\n  {\n    \"id\": \"\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/Teino-92/merci-murphy", "source_id": "comment-chain-pattern-assumption_checks-fbf7140e7ce75c29", "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": "Teino-92/merci-murphy", "source_dataset": "comment_chain_patterns/assumption_checks", "training_usage": "weak_supervision"}}}, {"ruleId": "foundry_schema_ui_api_gap", "level": "error", "message": {"text": "Foundry mined schema ui api mismatch: Teino-92/merci-murphy"}, "properties": {"repobilityId": 409273, "scanner": "foundry_dataset", "fingerprint": "ea97d006ab5783cc969dc50d8d0a92c73be3f581cff42a0475befb6b404a0be0", "category": "quality", "severity": "high", "confidence": 0.76, "triageState": "open", "verdict": "needs_review", "isResolved": false, "reason": "Imported from mined Foundry/Fable5 evidence with real GitHub/source provenance. Review source_id before acting.", "evidence": {"meta": {"kind": "graph_query_record", "title": "Schema, UI, and API mismatch", "intent": "Assumption-check examples for data-path consistency across layers.", "labels": {"bug_fix": 1, "data_schema": 1, "commit_general": 1, "ui_or_frontend": 1, "deployment_env_gap": 1, "data_schema_persistence": 1, "mostly follows blueprint": 2, "claimed_resolved_unverified": 3, "issue_or_pull_request_thread": 1, "ambiguous_needs_more_evidence": 1, "blueprint_human_gap_disagreement": 2, "comment_has_related_commit_context": 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, "ambiguous_needs_more_evidence": 2}, "polarity": "bad", "query_id": "schema_ui_api_mismatch", "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": 1, "alignment_uses_comment": 2, "alignment_uses_finding": 2, "chain_has_link_quality": 6, "comment_aligns_finding": 2, "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": 22, "node_types": {"repo": 1, "commit": 3, "thread": 1, "comment": 2, "pr_file": 1, "alignment": 2, "fix_outcome": 1, "issue_chain": 1, "link_quality": 6, "comment_chain": 2, "blueprint_finding": 2}, "query_type": "motif_query", "thread_key": "Teino-92/merci-murphy#4", "issue_number": "4", "quality_tiers": {"assumption_check": 2, "weak_supervision": 4}, "repo_full_name": "Teino-92/merci-murphy", "training_usage": "assumption_check", "source_motif_id": "graph-pattern-motif-thread-8cad26728e3991b7", "graph_gold_label": "weak_supervision_needs_review", "changed_file_labels": {"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: Teino-92/merci-murphy\nThread: Teino-92/merci-murphy#4\nEvidence:\nGraph motif: Schema, UI, and API evidence do not line up\nMotif id: schema_ui_api_mismatch\nPolarity: bad\nTraining usage: assumption_check\nSeverity: high\nRepo: Teino-92/merci-murphy\nThread: Teino-92/merci-murphy#4\nGraph gold label: weak_supervision_needs_review\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: Teino-92/merci-murphy#4\nRepo: Teino-92/merci-murphy\nIssue/PR number: 4\nGraph consistency label: weak_supervision_needs_review\nNodes: 22\nEdges: 32\nNode types: {'link_quality': 6, 'commit': 3, 'comment': 2, 'comment_chain': 2, 'alignment': 2, 'blueprint_finding': 2, 'thread': 1, 'repo': 1, 'pr_file': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'chain_has_link_quality': 6, 'comment_chain_links_commit': 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, 'alignment_uses_comment': 2, 'alignment_uses_finding': 2, 'comment_aligns_finding': 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, 'thread_has_human_issue_and_fix_context': 2, 'blueprint_human_gap_disagreement': 2, 'mostly follows blueprint': 2, 'issue_or_pull_request_thread': 1, 'data_schema_persistence': 1, 'deployment_env_gap': 1, 'ui_or_frontend': 1, 'human_reported_issue_then_fix_attempt': 1, 'commit_general': 1, 'data_schema': 1, 'bug_fix': 1, 'comment_has_related_commit_context': 1, 'ambiguous_needs_more_evidence': 1}\nOutcomes: {'claimed_resolved_unverified': 6, 'ambiguous_needs_more_evidence': 2}\nQuality tiers: {'weak_supervision': 4, 'assumption_check': 2}\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/Teino-92/merci-murphy", "source_id": "graph-query-motif_query-71c09289622e265c", "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": "Teino-92/merci-murphy", "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: Teino-92/merci-murphy"}, "properties": {"repobilityId": 409272, "scanner": "foundry_dataset", "fingerprint": "d1db689ec611c722d8284673c005d3e525e4c7cccd6de753437ffb6f18b1ff03", "category": "quality", "severity": "high", "confidence": 0.76, "triageState": "open", "verdict": "needs_review", "isResolved": false, "reason": "Imported from mined Foundry/Fable5 evidence with real GitHub/source provenance. Review source_id before acting.", "evidence": {"meta": {"kind": "graph_query_record", "title": "Schema, UI, and API mismatch", "intent": "Assumption-check examples for data-path consistency across layers.", "labels": {"api_or_backend": 4, "commit_general": 1, "docs_or_claims": 1, "schema_or_data": 1, "ui_or_frontend": 7, "source_or_other": 2, "deployment_env_gap": 1, "dependency_or_build": 2, "human_feedback_general": 1, "issue_or_pull_request_thread": 1, "ambiguous_needs_more_evidence": 4, "comment_has_related_commit_context": 2, "thread_has_human_issue_and_fix_context": 2}, "source": "graph_query_export", "motif_id": "schema_ui_api_mismatch", "outcomes": {"ambiguous_needs_more_evidence": 8}, "polarity": "bad", "query_id": "schema_ui_api_mismatch", "severity": "high", "ci_labels": {}, "synthetic": false, "edge_count": 71, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 2, "thread_has_comment": 2, "thread_touches_file": 17, "chain_has_link_quality": 4, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "issue_chain_touches_file": 12, "thread_has_comment_chain": 2, "comment_chain_links_commit": 2, "comment_chain_touches_file": 24, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 2}, "node_count": 30, "node_types": {"repo": 1, "commit": 1, "thread": 1, "comment": 2, "pr_file": 17, "fix_outcome": 1, "issue_chain": 1, "link_quality": 4, "comment_chain": 2}, "query_type": "motif_query", "thread_key": "Teino-92/merci-murphy#3", "issue_number": "3", "quality_tiers": {"weak_supervision": 4}, "repo_full_name": "Teino-92/merci-murphy", "training_usage": "assumption_check", "source_motif_id": "graph-pattern-motif-thread-878a84a0a290ccef", "graph_gold_label": "weak_supervision_needs_review", "changed_file_labels": {"api_or_backend": 20, "docs_or_claims": 5, "schema_or_data": 5, "ui_or_frontend": 35, "source_or_other": 10, "dependency_or_build": 10}}, "text": "Graph query export: Schema, UI, and API mismatch\nQuery id: schema_ui_api_mismatch\nQuery type: motif_query\nIntent: Assumption-check examples for data-path consistency across layers.\nMotif: schema_ui_api_mismatch\nTraining usage: assumption_check\nGraph gold label: weak_supervision_needs_review\nRepo: Teino-92/merci-murphy\nThread: Teino-92/merci-murphy#3\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: Teino-92/merci-murphy\nThread: Teino-92/merci-murphy#3\nGraph gold label: weak_supervision_needs_review\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: Teino-92/merci-murphy#3\nRepo: Teino-92/merci-murphy\nIssue/PR number: 3\nGraph consistency label: weak_supervision_needs_review\nNodes: 30\nEdges: 71\nNode types: {'pr_file': 17, 'link_quality': 4, 'comment': 2, 'comment_chain': 2, 'thread': 1, 'repo': 1, 'commit': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'comment_chain_touches_file': 24, 'thread_touches_file': 17, 'issue_chain_touches_file': 12, 'chain_has_link_quality': 4, 'thread_has_comment': 2, 'thread_has_comment_chain': 2, 'comment_has_chain': 2, 'comment_chain_links_commit': 2, 'issue_chain_has_comment_chain': 2, 'repo_has_thread': 1, 'thread_has_issue_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'ui_or_frontend': 7, 'api_or_backend': 4, 'ambiguous_needs_more_evidence': 4, 'source_or_other': 2, 'dependency_or_build': 2, 'comment_has_related_commit_context': 2, 'thread_has_human_issue_and_fix_context': 2, 'issue_or_pull_request_thread': 1, 'human_feedback_general': 1, 'deployment_env_gap': 1, 'docs_or_claims': 1, 'schema_or_data': 1, 'commit_general': 1}\nOutcomes: {'ambiguous_needs_more_evidence': 8}\nQuality tiers: {'weak_supervision': 4}\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/Teino-92/merci-murphy", "source_id": "graph-query-motif_query-d7402cc12347e0d8", "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": "Teino-92/merci-murphy", "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: Teino-92/merci-murphy"}, "properties": {"repobilityId": 409271, "scanner": "foundry_dataset", "fingerprint": "cac22c7e50abfcabf52653ef6fc87b13ffdaaf1ed1c4d64e02c15a195a1f01c2", "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": {"schema_or_data": 1, "ui_or_frontend": 4, "deployment_env_gap": 1, "data_schema_persistence": 1, "mostly follows blueprint": 2, "issue_or_pull_request_thread": 1, "not_resolved_or_not_observed": 4, "blueprint_human_gap_disagreement": 2, "human_reported_issue_no_linked_fix": 2, "thread_has_human_issue_without_fix_context": 2}, "source": "graph_query_export", "motif_id": "schema_ui_api_mismatch", "outcomes": {"not_resolved_or_not_observed": 8}, "polarity": "bad", "query_id": "schema_ui_api_mismatch", "severity": "high", "ci_labels": {}, "synthetic": false, "edge_count": 44, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 2, "thread_has_comment": 2, "thread_touches_file": 5, "alignment_uses_comment": 2, "alignment_uses_finding": 2, "chain_has_link_quality": 6, "comment_aligns_finding": 2, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "issue_chain_touches_file": 5, "thread_has_comment_chain": 2, "comment_chain_touches_file": 10, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 2}, "node_count": 23, "node_types": {"repo": 1, "thread": 1, "comment": 2, "pr_file": 5, "alignment": 2, "fix_outcome": 1, "issue_chain": 1, "link_quality": 6, "comment_chain": 2, "blueprint_finding": 2}, "query_type": "motif_query", "thread_key": "Teino-92/merci-murphy#2", "issue_number": "2", "quality_tiers": {"unresolved": 4, "assumption_check": 2}, "repo_full_name": "Teino-92/merci-murphy", "training_usage": "assumption_check", "source_motif_id": "graph-pattern-motif-thread-89dde678da00a964", "graph_gold_label": "assumption_check", "changed_file_labels": {"schema_or_data": 5, "ui_or_frontend": 20}}, "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: assumption_check\nRepo: Teino-92/merci-murphy\nThread: Teino-92/merci-murphy#2\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: Teino-92/merci-murphy\nThread: Teino-92/merci-murphy#2\nGraph gold label: assumption_check\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: Teino-92/merci-murphy#2\nRepo: Teino-92/merci-murphy\nIssue/PR number: 2\nGraph consistency label: assumption_check\nNodes: 23\nEdges: 44\nNode types: {'link_quality': 6, 'pr_file': 5, 'comment': 2, 'comment_chain': 2, 'alignment': 2, 'blueprint_finding': 2, 'thread': 1, 'repo': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'comment_chain_touches_file': 10, 'chain_has_link_quality': 6, 'thread_touches_file': 5, 'issue_chain_touches_file': 5, 'thread_has_comment': 2, 'thread_has_comment_chain': 2, 'comment_has_chain': 2, 'issue_chain_has_comment_chain': 2, 'alignment_uses_comment': 2, 'alignment_uses_finding': 2, 'comment_aligns_finding': 2, 'repo_has_thread': 1, 'thread_has_issue_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'ui_or_frontend': 4, 'not_resolved_or_not_observed': 4, 'human_reported_issue_no_linked_fix': 2, 'thread_has_human_issue_without_fix_context': 2, 'blueprint_human_gap_disagreement': 2, 'mostly follows blueprint': 2, 'issue_or_pull_request_thread': 1, 'data_schema_persistence': 1, 'deployment_env_gap': 1, 'schema_or_data': 1}\nOutcomes: {'not_resolved_or_not_observed': 8}\nQuality tiers: {'unresolved': 4, 'assumption_check': 2}\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/Teino-92/merci-murphy", "source_id": "graph-query-motif_query-9930c5509060ca0d", "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": "Teino-92/merci-murphy", "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: Teino-92/merci-murphy"}, "properties": {"repobilityId": 409270, "scanner": "foundry_dataset", "fingerprint": "6b835c303c95a64aff47a32431a63131490deac77d1c42bbafaf19994b53d835", "category": "quality", "severity": "high", "confidence": 0.76, "triageState": "open", "verdict": "needs_review", "isResolved": false, "reason": "Imported from mined Foundry/Fable5 evidence with real GitHub/source provenance. Review source_id before acting.", "evidence": {"meta": {"kind": "graph_query_record", "title": "Schema, UI, and API mismatch", "intent": "Assumption-check examples for data-path consistency across layers.", "labels": {"api_or_backend": 8, "docs_or_claims": 3, "schema_or_data": 3, "ui_or_frontend": 11, "deployment_env_gap": 1, "data_schema_persistence": 1, "mostly follows blueprint": 2, "issue_or_pull_request_thread": 1, "not_resolved_or_not_observed": 4, "blueprint_human_gap_disagreement": 2, "human_reported_issue_no_linked_fix": 2, "thread_has_human_issue_without_fix_context": 2}, "source": "graph_query_export", "motif_id": "schema_ui_api_mismatch", "outcomes": {"not_resolved_or_not_observed": 8}, "polarity": "bad", "query_id": "schema_ui_api_mismatch", "severity": "high", "ci_labels": {}, "synthetic": false, "edge_count": 85, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 2, "thread_has_comment": 2, "thread_touches_file": 25, "alignment_uses_comment": 2, "alignment_uses_finding": 2, "chain_has_link_quality": 6, "comment_aligns_finding": 2, "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": 43, "node_types": {"repo": 1, "thread": 1, "comment": 2, "pr_file": 25, "alignment": 2, "fix_outcome": 1, "issue_chain": 1, "link_quality": 6, "comment_chain": 2, "blueprint_finding": 2}, "query_type": "motif_query", "thread_key": "Teino-92/merci-murphy#1", "issue_number": "1", "quality_tiers": {"unresolved": 4, "assumption_check": 2}, "repo_full_name": "Teino-92/merci-murphy", "training_usage": "assumption_check", "source_motif_id": "graph-pattern-motif-thread-b4850a318e81eaa8", "graph_gold_label": "assumption_check", "changed_file_labels": {"api_or_backend": 40, "docs_or_claims": 15, "schema_or_data": 15, "ui_or_frontend": 55}}, "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: assumption_check\nRepo: Teino-92/merci-murphy\nThread: Teino-92/merci-murphy#1\nEvidence:\nGraph motif: Schema, UI, and API evidence do not line up\nMotif id: schema_ui_api_mismatch\nPolarity: bad\nTraining usage: assumption_check\nSeverity: high\nRepo: Teino-92/merci-murphy\nThread: Teino-92/merci-murphy#1\nGraph gold label: assumption_check\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: Teino-92/merci-murphy#1\nRepo: Teino-92/merci-murphy\nIssue/PR number: 1\nGraph consistency label: assumption_check\nNodes: 43\nEdges: 85\nNode types: {'pr_file': 25, 'link_quality': 6, 'comment': 2, 'comment_chain': 2, 'alignment': 2, 'blueprint_finding': 2, 'thread': 1, 'repo': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'thread_touches_file': 25, 'comment_chain_touches_file': 24, 'issue_chain_touches_file': 12, 'chain_has_link_quality': 6, 'thread_has_comment': 2, 'thread_has_comment_chain': 2, 'comment_has_chain': 2, 'issue_chain_has_comment_chain': 2, 'alignment_uses_comment': 2, 'alignment_uses_finding': 2, 'comment_aligns_finding': 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': 11, 'api_or_backend': 8, 'not_resolved_or_not_observed': 4, 'docs_or_claims': 3, 'schema_or_data': 3, 'human_reported_issue_no_linked_fix': 2, 'thread_has_human_issue_without_fix_context': 2, 'blueprint_human_gap_disagreement': 2, 'mostly follows blueprint': 2, 'issue_or_pull_request_thread': 1, 'data_schema_persistence': 1, 'deployment_env_gap': 1}\nOutcomes: {'not_resolved_or_not_observed': 8}\nQuality tiers: {'unresolved': 4, 'assumption_check': 2}\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/Teino-92/merci-murphy", "source_id": "graph-query-motif_query-c37a69731aa5eeb9", "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": "Teino-92/merci-murphy", "source_dataset": "graph_queries/schema_ui_api_mismatch", "training_usage": "assumption_check"}}}, {"ruleId": "foundry_bad_chain", "level": "error", "message": {"text": "Foundry mined bad chains: Teino-92/merci-murphy"}, "properties": {"repobilityId": 386364, "scanner": "foundry_dataset", "fingerprint": "a398439ff645d12ffd4df2f91c50fb9b349cf7b2622cda107a12bf1431b05241", "category": "practices", "severity": "high", "confidence": 0.84, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Imported from mined Foundry/Fable5 evidence with real GitHub/source provenance. Review source_id before acting.", "evidence": {"meta": {"kind": "comment_chain_pattern_product", "source": "comment_chain_pattern_miner", "product": "bad_chains", "synthetic": false, "thread_key": "Teino-92/merci-murphy#2", "human_labels": ["data_schema_persistence", "deployment_env_gap", "schema_or_data", "ui_or_frontend"], "issue_number": "2", "thread_label": "thread_has_human_issue_without_fix_context", "outcome_label": "not_resolved_or_not_observed", "source_backed": true, "max_confidence": 0.0, "repo_full_name": "Teino-92/merci-murphy", "training_usage": "negative_or_unresolved", "confidence_tier": "unresolved", "source_chain_id": "evidence-chain-issue_chain-3b2efd1bd36c4cf3", "helicopter_views": {"schemas": 2}, "artifact_families": {"ci": 1, "docs": 4, "schemas": 2, "architecture": 1}, "source_chain_kind": "issue_chain", "changed_file_count": 5, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {"schema_or_data": 1, "ui_or_frontend": 4}, "linked_commit_count": 0, "helicopter_view_count": 2, "source_artifact_count": 8, "classification_reasons": ["source_graph_has_real_artifacts", "source_graph_has_verification_artifacts", "repo_has_isolated_helicopter_views", "link_quality_unresolved", "high_risk_human_feedback_label"], "linked_ci_commit_count": 0, "verification_artifact_count": 3, "design_schema_api_artifact_count": 3}, "text": "Comment chain pattern product: bad_chains\nRepo: Teino-92/merci-murphy\nThread: Teino-92/merci-murphy#2\nOutcome: not_resolved_or_not_observed\nThread label: thread_has_human_issue_without_fix_context\nSource graph label: source_backed_multi_signal_graph\nReasons: source_graph_has_real_artifacts, source_graph_has_verification_artifacts, repo_has_isolated_helicopter_views, link_quality_unresolved, high_risk_human_feedback_label\nChain evidence:\nIssue/PR evidence chain: Teino-92/merci-murphy#2\nRepo: Teino-92/merci-murphy\nThread label: thread_has_human_issue_without_fix_context\nOutcome: not_resolved_or_not_observed\nComment count: 2\nLinked commit count: 0\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 5\nLabels: {'data_schema_persistence': 1, 'deployment_env_gap': 1}\nPolarities: {'bad': 2}\nChanged file labels: {'ui_or_frontend': 4, 'schema_or_data': 1}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-55e7c91169046171\",\n    \"kind\": \"pull_request_body\",\n    \"label\": \"data_schema_persistence\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/Teino-92/merci-murphy/pull/2\",\n    \"text\": \"GitHub feedback: data_schema_persistence\\nPolarity: bad\\nKind: pull_request_body\\nRepo: Teino-92/merci-murphy\\nAuthor: Teino-92 (User)\\nURL: https://github.com/Teino-92/merci-murphy/pull/2\\nTitle: Feat/dog schema cleanup\\nBody:\\n\"\n  },\n  {\n    \"id\": \"github-feedback-comment-c85eebc8c9f3a6cf\",\n    \"kind\": \"issue_comment\",\n    \"label\": \"deployment_env_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/Teino-92/merci-murphy/pull/2#issuecomment-4242360697\",\n    \"text\": \"GitHub feedback: deployment_env_gap\\nPolarity: bad\\nKind: issue_comment\\nRepo: Teino-92/merci-murphy\\nAuthor: vercel[bot] (Bot)\\nURL: https://github.com/Teino-92/merci-murphy/pull/2#issuecomment-4242360697\\nTitle: \\nBody:\\n[vc]: #JSYZJXQV12IRlcSn7bCk73yWcIJVgL16KncND2uM3Ac=:eyJpc01vbm9yZXBvIjp0cnVlLCJ0eXBlIjoiZ2l0aHViIiwicHJvamVjdHMiOlt7Im5hbWUiOiJtZXJjaS1tdXJwaHkiLCJwcm9qZWN0SWQiOiJwcmpfT3RnVHlnZGdBd21MVlJvMFdhNEprcnNaWUo3TyIsImxpdmVGZWVkYmFjayI6eyJyZXNvbHZlZCI6MCwidW5yZXNvbHZlZCI6MCwidG90YWwiOjAsImxpbmsiOiJtZXJjaS1tdXJwaHktZ2l0LWZlYXQtZG9nLXNjaGUtYzI3ODRmLW1hdHRlby1nYXJidWdsaXMtcHJvamVjdHMudmVyY2VsLmFwcCJ9LCJpbnNwZWN0b3JVcmwiOiJodHRwczovL3ZlcmNlbC5jb20vbWF0dGVvLWdhcmJ1Z2xpcy1wcm9qZWN0cy9tZXJjaS1tdXJwaHkvQkc0WTNrRlo1a1NWa0w0c2ZHaWlwRU5yNWttaSIsInByZXZpZXdVcmwiOiJtZXJjaS1tdXJwaHktZ2l0LWZlYXQtZG9nLXNjaGUtYzI3ODRmLW1hdHRlby1nYXJidWdsaXMtcHJvamVjdHMudmVyY2VsLmFwcCIsIm5leHRDb21taXRTdGF0dXMiOiJERVBMT1lFRCJ9XX0=\\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| [merci-murphy](https://vercel.com/matteo-garbuglis-projects/merci-murphy) | ![Read\"\n  }\n]\nChanged files:\n[\n  {\n    \"id\": \"github-pr-file-file-b1ca4680fb2204da\",\n    \"filename\": \"src/app/(dashboard)/dashboard/customers/[id]/page.tsx\",\n    \"labe\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/Teino-92/merci-murphy", "source_id": "comment-chain-pattern-bad_chains-81339f33614968d9", "synthetic": false, "gold_label": "", "graph_label": "source_backed_multi_signal_graph", "source_path": "/data/distillate/foundry_data/comment_chain_patterns/bad_chains/shard-0.jsonl", "bundle_label": "", "priority_band": "", "priority_score": 0, "repo_full_name": "Teino-92/merci-murphy", "source_dataset": "comment_chain_patterns/bad_chains", "training_usage": "negative_or_unresolved"}}}, {"ruleId": "foundry_bad_chain", "level": "error", "message": {"text": "Foundry mined bad chains: Teino-92/merci-murphy"}, "properties": {"repobilityId": 386363, "scanner": "foundry_dataset", "fingerprint": "514ff50c335a70bdb2322cfcb530455c1bd724eec3be4ec5d034405018a3cdc3", "category": "practices", "severity": "high", "confidence": 0.84, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Imported from mined Foundry/Fable5 evidence with real GitHub/source provenance. Review source_id before acting.", "evidence": {"meta": {"kind": "comment_chain_pattern_product", "source": "comment_chain_pattern_miner", "product": "bad_chains", "synthetic": false, "thread_key": "Teino-92/merci-murphy#1", "human_labels": ["api_or_backend", "data_schema_persistence", "deployment_env_gap", "docs_or_claims", "schema_or_data", "ui_or_frontend"], "issue_number": "1", "thread_label": "thread_has_human_issue_without_fix_context", "outcome_label": "not_resolved_or_not_observed", "source_backed": true, "max_confidence": 0.0, "repo_full_name": "Teino-92/merci-murphy", "training_usage": "negative_or_unresolved", "confidence_tier": "unresolved", "source_chain_id": "evidence-chain-issue_chain-b31e6c6d9dd6f423", "helicopter_views": {"schemas": 2}, "artifact_families": {"ci": 1, "docs": 4, "schemas": 2, "architecture": 1}, "source_chain_kind": "issue_chain", "changed_file_count": 25, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {"api_or_backend": 8, "docs_or_claims": 3, "schema_or_data": 3, "ui_or_frontend": 11}, "linked_commit_count": 0, "helicopter_view_count": 2, "source_artifact_count": 8, "classification_reasons": ["source_graph_has_real_artifacts", "source_graph_has_verification_artifacts", "repo_has_isolated_helicopter_views", "link_quality_unresolved", "high_risk_human_feedback_label"], "linked_ci_commit_count": 0, "verification_artifact_count": 3, "design_schema_api_artifact_count": 3}, "text": "Comment chain pattern product: bad_chains\nRepo: Teino-92/merci-murphy\nThread: Teino-92/merci-murphy#1\nOutcome: not_resolved_or_not_observed\nThread label: thread_has_human_issue_without_fix_context\nSource graph label: source_backed_multi_signal_graph\nReasons: source_graph_has_real_artifacts, source_graph_has_verification_artifacts, repo_has_isolated_helicopter_views, link_quality_unresolved, high_risk_human_feedback_label\nChain evidence:\nIssue/PR evidence chain: Teino-92/merci-murphy#1\nRepo: Teino-92/merci-murphy\nThread label: thread_has_human_issue_without_fix_context\nOutcome: not_resolved_or_not_observed\nComment count: 2\nLinked commit count: 0\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 25\nLabels: {'data_schema_persistence': 1, 'deployment_env_gap': 1}\nPolarities: {'bad': 2}\nChanged file labels: {'docs_or_claims': 3, 'schema_or_data': 3, 'ui_or_frontend': 11, 'api_or_backend': 8}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-c7f513ab9d77efbd\",\n    \"kind\": \"pull_request_body\",\n    \"label\": \"data_schema_persistence\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/Teino-92/merci-murphy/pull/1\",\n    \"text\": \"GitHub feedback: data_schema_persistence\\nPolarity: bad\\nKind: pull_request_body\\nRepo: Teino-92/merci-murphy\\nAuthor: Teino-92 (User)\\nURL: https://github.com/Teino-92/merci-murphy/pull/1\\nTitle: Feat/dog schema cleanup\\nBody:\\n\"\n  },\n  {\n    \"id\": \"github-feedback-comment-df49526336f932af\",\n    \"kind\": \"issue_comment\",\n    \"label\": \"deployment_env_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/Teino-92/merci-murphy/pull/1#issuecomment-4242091102\",\n    \"text\": \"GitHub feedback: deployment_env_gap\\nPolarity: bad\\nKind: issue_comment\\nRepo: Teino-92/merci-murphy\\nAuthor: vercel[bot] (Bot)\\nURL: https://github.com/Teino-92/merci-murphy/pull/1#issuecomment-4242091102\\nTitle: \\nBody:\\n[vc]: #jTvtbp56fvc9KGxAxVvRThKWai5f8a0OPDKZh127uwI=:eyJpc01vbm9yZXBvIjp0cnVlLCJ0eXBlIjoiZ2l0aHViIiwicHJvamVjdHMiOlt7Im5hbWUiOiJtZXJjaS1tdXJwaHkiLCJwcm9qZWN0SWQiOiJwcmpfT3RnVHlnZGdBd21MVlJvMFdhNEprcnNaWUo3TyIsImluc3BlY3RvclVybCI6Imh0dHBzOi8vdmVyY2VsLmNvbS9tYXR0ZW8tZ2FyYnVnbGlzLXByb2plY3RzL21lcmNpLW11cnBoeS82eTdiOUJoa0RHQjNKeHJuMTc3NEdHMTlkN1RvIiwicHJldmlld1VybCI6Im1lcmNpLW11cnBoeS1naXQtZmVhdC1kb2ctc2NoZS1jMjc4NGYtbWF0dGVvLWdhcmJ1Z2xpcy1wcm9qZWN0cy52ZXJjZWwuYXBwIiwibmV4dENvbW1pdFN0YXR1cyI6IlBFTkRJTkciLCJsaXZlRmVlZGJhY2siOnsicmVzb2x2ZWQiOjAsInVucmVzb2x2ZWQiOjAsInRvdGFsIjowLCJsaW5rIjoibWVyY2ktbXVycGh5LWdpdC1mZWF0LWRvZy1zY2hlLWMyNzg0Zi1tYXR0ZW8tZ2FyYnVnbGlzLXByb2plY3RzLnZlcmNlbC5hcHAifX1dfQ==\\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| [merci-murphy](https://vercel.com/matteo-garbuglis-projects/merci-murphy) | ![Buil\"\n  }\n]\nChanged files:\n[\n  {\n    \"id\": \"github-pr-file-file-927065d208448d5f\",\n    \"filename\": \"docs/superpowers/chec\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/Teino-92/merci-murphy", "source_id": "comment-chain-pattern-bad_chains-1251fc6ce6964557", "synthetic": false, "gold_label": "", "graph_label": "source_backed_multi_signal_graph", "source_path": "/data/distillate/foundry_data/comment_chain_patterns/bad_chains/shard-0.jsonl", "bundle_label": "", "priority_band": "", "priority_score": 0, "repo_full_name": "Teino-92/merci-murphy", "source_dataset": "comment_chain_patterns/bad_chains", "training_usage": "negative_or_unresolved"}}}, {"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-d5aa62298b917fec", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/send-complete-profile-reminder.ts:56"}, "properties": {"repobilityId": "d693bba3125a3ab8", "scanner": "scanner-primary", "fingerprint": "d5aa62298b917fec", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b262151d76c50abf", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/backfill-resend-audience.ts:32"}, "properties": {"repobilityId": "c21212fccc18e24c", "scanner": "scanner-primary", "fingerprint": "b262151d76c50abf", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-7a37c59c10b3b4ab", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/seo/05-monitor.ts:77"}, "properties": {"repobilityId": "a5c0e859aca485e8", "scanner": "scanner-primary", "fingerprint": "7a37c59c10b3b4ab", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-d6e2dcedae4a8dc0", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/seo/06-bootstrap-state.ts:72"}, "properties": {"repobilityId": "738cfdae47bc9137", "scanner": "scanner-primary", "fingerprint": "d6e2dcedae4a8dc0", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-7dacd80ea43bb547", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/seo/03-generate-content.ts:204"}, "properties": {"repobilityId": "2478dd395c2f7c14", "scanner": "scanner-primary", "fingerprint": "7dacd80ea43bb547", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-0f3b302f82cfe578", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/seo/02-competitor-analysis.ts:139"}, "properties": {"repobilityId": "0a942c108ff6a2d0", "scanner": "scanner-primary", "fingerprint": "0f3b302f82cfe578", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-f73df5c5da8f1960", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/seo/01-keyword-research.ts:62"}, "properties": {"repobilityId": "0d9f35e4a0c09440", "scanner": "scanner-primary", "fingerprint": "f73df5c5da8f1960", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-810ec56f185fd2e5", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/seo/07-rewrite-human.ts:104"}, "properties": {"repobilityId": "239041e8aa6827b8", "scanner": "scanner-primary", "fingerprint": "810ec56f185fd2e5", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-20663c937b016991", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/seo/04-publish-scheduler.ts:106"}, "properties": {"repobilityId": "1ae9cd875c34cf0d", "scanner": "scanner-primary", "fingerprint": "20663c937b016991", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-ea6f72d4c4c833da", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/dashboard/calendar-view.tsx:328"}, "properties": {"repobilityId": "97c2f17955fa85c1", "scanner": "scanner-primary", "fingerprint": "ea6f72d4c4c833da", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-f4c0a47d0203bcb0", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/dashboard/revenue-chart.tsx:50"}, "properties": {"repobilityId": "3d2daa41e7d372f0", "scanner": "scanner-primary", "fingerprint": "f4c0a47d0203bcb0", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-ed1f680ef01b0ba1", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/dashboard/nav.tsx:161"}, "properties": {"repobilityId": "c3a0d7c347f2d5bc", "scanner": "scanner-primary", "fingerprint": "ed1f680ef01b0ba1", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-5aa9e5dd0c9979e6", "level": "note", "message": {"text": "\"active\" state uses light bg in a dark theme \u2014 src/components/dashboard/nav.tsx:106"}, "properties": {"repobilityId": "dbdca6c2b22b1a56", "scanner": "scanner-primary", "fingerprint": "5aa9e5dd0c9979e6", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.active-light-bg"]}}, {"ruleId": "scanner-10a9acdf6b85f489", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/components/seo/organization-schema.tsx:34"}, "properties": {"repobilityId": "4c8d91358f2aa44b", "scanner": "scanner-primary", "fingerprint": "10a9acdf6b85f489", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-472777c6f4ba6183", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/components/seo/local-business-schema.tsx:80"}, "properties": {"repobilityId": "60a01ac6e023def3", "scanner": "scanner-primary", "fingerprint": "472777c6f4ba6183", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-783e5e1e2fd21865", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/(marketing)/page.tsx:276"}, "properties": {"repobilityId": "3b9b79c882298b6e", "scanner": "scanner-primary", "fingerprint": "783e5e1e2fd21865", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-d56906daf3a4c43b", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/(marketing)/contact/page.tsx:55"}, "properties": {"repobilityId": "a1556b56a7fbad46", "scanner": "scanner-primary", "fingerprint": "d56906daf3a4c43b", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-2c852ebbb0148e44", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/(marketing)/(shop)/shop/[handle]/page.tsx:127"}, "properties": {"repobilityId": "d8499518a012cc26", "scanner": "scanner-primary", "fingerprint": "2c852ebbb0148e44", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-df4dbe4cbd5e11c4", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/(marketing)/toilettage/page.tsx:66"}, "properties": {"repobilityId": "9c826b301e508746", "scanner": "scanner-primary", "fingerprint": "df4dbe4cbd5e11c4", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-98812a414aea5c55", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/(marketing)/toilettage/[race]/page.tsx:112"}, "properties": {"repobilityId": "060d92030e0a0712", "scanner": "scanner-primary", "fingerprint": "98812a414aea5c55", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-5b1b859ecd0d0f6f", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/(marketing)/toilettage-chien-paris/page.tsx:219"}, "properties": {"repobilityId": "876e4f330f9e7a4f", "scanner": "scanner-primary", "fingerprint": "5b1b859ecd0d0f6f", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-26ba48dc4ac385a9", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/(marketing)/services/page.tsx:46"}, "properties": {"repobilityId": "6b8c986edc7e52ad", "scanner": "scanner-primary", "fingerprint": "26ba48dc4ac385a9", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-2464c8b9e31bb246", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/(marketing)/services/[slug]/page.tsx:191"}, "properties": {"repobilityId": "76b9f4831fd93c88", "scanner": "scanner-primary", "fingerprint": "2464c8b9e31bb246", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-ea732eab1191064c", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in src/components/seo/organization-schema.tsx:34"}, "properties": {"repobilityId": "befae15a694bcaed", "scanner": "scanner-primary", "fingerprint": "ea732eab1191064c", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/components/seo/organization-schema.tsx"}, "region": {"startLine": 34}}}]}, {"ruleId": "scanner-81c8ac5b326f5343", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in src/components/seo/local-business-schema.tsx:80"}, "properties": {"repobilityId": "e0aced699e5c00f5", "scanner": "scanner-primary", "fingerprint": "81c8ac5b326f5343", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/components/seo/local-business-schema.tsx"}, "region": {"startLine": 80}}}]}, {"ruleId": "scanner-2c01e3dd53f9af46", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/(marketing)/page.tsx:276"}, "properties": {"repobilityId": "02614b81e7b9928d", "scanner": "scanner-primary", "fingerprint": "2c01e3dd53f9af46", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/(marketing)/page.tsx"}, "region": {"startLine": 276}}}]}, {"ruleId": "scanner-1c9eff882a276e22", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/(marketing)/contact/page.tsx:55"}, "properties": {"repobilityId": "9b338d88163d7e5d", "scanner": "scanner-primary", "fingerprint": "1c9eff882a276e22", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/(marketing)/contact/page.tsx"}, "region": {"startLine": 55}}}]}, {"ruleId": "scanner-e3db7b5940dd277e", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/(marketing)/(shop)/shop/[handle]/page.tsx:127"}, "properties": {"repobilityId": "272a6a9a71ea66ef", "scanner": "scanner-primary", "fingerprint": "e3db7b5940dd277e", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/(marketing)/(shop)/shop/[handle]/page.tsx"}, "region": {"startLine": 127}}}]}, {"ruleId": "scanner-5824a9429db95cf9", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/(marketing)/toilettage/page.tsx:66"}, "properties": {"repobilityId": "4aa12f661092cbbc", "scanner": "scanner-primary", "fingerprint": "5824a9429db95cf9", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/(marketing)/toilettage/page.tsx"}, "region": {"startLine": 66}}}]}, {"ruleId": "scanner-61544b54a0bd46cd", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/(marketing)/toilettage/[race]/page.tsx:112"}, "properties": {"repobilityId": "2aa4d33ac3647610", "scanner": "scanner-primary", "fingerprint": "61544b54a0bd46cd", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/(marketing)/toilettage/[race]/page.tsx"}, "region": {"startLine": 112}}}]}, {"ruleId": "scanner-ac184efae2ab6e30", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/(marketing)/toilettage-chien-paris/page.tsx:219"}, "properties": {"repobilityId": "0dc09772c5bd5977", "scanner": "scanner-primary", "fingerprint": "ac184efae2ab6e30", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/(marketing)/toilettage-chien-paris/page.tsx"}, "region": {"startLine": 219}}}]}, {"ruleId": "scanner-895acf8d783b13e1", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/(marketing)/services/page.tsx:46"}, "properties": {"repobilityId": "6dec0fcf3d628c8c", "scanner": "scanner-primary", "fingerprint": "895acf8d783b13e1", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/(marketing)/services/page.tsx"}, "region": {"startLine": 46}}}]}, {"ruleId": "scanner-9b985c9634894919", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/(marketing)/services/[slug]/page.tsx:191"}, "properties": {"repobilityId": "c989b840d70d9822", "scanner": "scanner-primary", "fingerprint": "9b985c9634894919", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/(marketing)/services/[slug]/page.tsx"}, "region": {"startLine": 191}}}]}, {"ruleId": "scanner-cb639d9a10a47b23", "level": "note", "message": {"text": "package.json defines install-time lifecycle scripts"}, "properties": {"repobilityId": "b86179956da3a4a8", "scanner": "scanner-primary", "fingerprint": "cb639d9a10a47b23", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "npm", "install-scripts"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-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-1cd596e9229c2557", "level": "note", "message": {"text": "Very large file: src/components/dashboard/customer-detail.tsx (1237 lines)"}, "properties": {"repobilityId": "44e75befa11a3bae", "scanner": "scanner-primary", "fingerprint": "1cd596e9229c2557", "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": "7b95a666d955ef1b", "scanner": "scanner-primary", "fingerprint": "141b30a41e03817b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["license", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-01f96f71d9907a8c", "level": "note", "message": {"text": "README lacks setup or run instructions"}, "properties": {"repobilityId": "9e6be5565f6c4fb5", "scanner": "scanner-primary", "fingerprint": "01f96f71d9907a8c", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["docs", "readme", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-3ab5d313dda8e5f9", "level": "note", "message": {"text": "Debug logging residue appears in source files"}, "properties": {"repobilityId": "de9426258dbf911c", "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": "7443a6622c7bca26", "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": "875c914ea0ce5d1a", "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": "1f2687c323c5b552", "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": "warning", "message": {"text": "Composite production-readiness gap"}, "properties": {"repobilityId": "999f60755a3591d8", "scanner": "scanner-primary", "fingerprint": "b9088664ace7f748", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["production-readiness", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-749d4bc1bd66df5f", "level": "warning", "message": {"text": "Agent instructions exist but release-hardening basics are missing"}, "properties": {"repobilityId": "edf36a9a0eb4acc6", "scanner": "scanner-primary", "fingerprint": "749d4bc1bd66df5f", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-ea8f3013f588db25", "level": "note", "message": {"text": "Shallow git history limits provenance confidence"}, "properties": {"repobilityId": "0504376ee5ca464c", "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": "4260aecafa7cbc5f", "scanner": "scanner-primary", "fingerprint": "8424db9c75e04ba4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["provenance", "git-history", "generated-repo-pattern"]}}, {"ruleId": "scanner-17d866d91a7c451e", "level": "error", "message": {"text": "Agent instruction/config may expose a secret: CLAUDE.md"}, "properties": {"repobilityId": "ccce5984e58a48f0", "scanner": "scanner-primary", "fingerprint": "17d866d91a7c451e", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["agent-instructions", "secrets", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "CLAUDE.md"}, "region": {"startLine": 111}}}]}, {"ruleId": "scanner-050a73de0cc9583c", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/seo/lib/serpapi.ts:31"}, "properties": {"repobilityId": "34412b5aa7189085", "scanner": "scanner-primary", "fingerprint": "050a73de0cc9583c", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-53c6e03fa920ff0b", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/seo/lib/anthropic.ts:27"}, "properties": {"repobilityId": "cb6fddf5d9a96916", "scanner": "scanner-primary", "fingerprint": "53c6e03fa920ff0b", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-9d234a25b8d62abb", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/dashboard/calendar-view.tsx:93"}, "properties": {"repobilityId": "9b2e13049f19b130", "scanner": "scanner-primary", "fingerprint": "9d234a25b8d62abb", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-855b18d57160e21f", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/dashboard/leads-table.tsx:59"}, "properties": {"repobilityId": "dabfbf3f5583e3c3", "scanner": "scanner-primary", "fingerprint": "855b18d57160e21f", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-b53339925dd13515", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/dashboard/staff-schedule-editor.tsx:87"}, "properties": {"repobilityId": "c6e826c0e466cef3", "scanner": "scanner-primary", "fingerprint": "b53339925dd13515", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-731ed9ed964fbdf6", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/dashboard/customer-detail.tsx:87"}, "properties": {"repobilityId": "c2e78aeb146313ea", "scanner": "scanner-primary", "fingerprint": "731ed9ed964fbdf6", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-3e776c00dd4ca3dc", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/dashboard/staff-manager.tsx:34"}, "properties": {"repobilityId": "7c8bc7459515c542", "scanner": "scanner-primary", "fingerprint": "3e776c00dd4ca3dc", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-3d96859d2320a149", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/dashboard/notification-bell.tsx:96"}, "properties": {"repobilityId": "589b43ce0cfb74bd", "scanner": "scanner-primary", "fingerprint": "3d96859d2320a149", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-b539b1840c78c9ef", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/dashboard/newsletter-table.tsx:20"}, "properties": {"repobilityId": "6a6118405ed8bf4c", "scanner": "scanner-primary", "fingerprint": "b539b1840c78c9ef", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-64a91e4ebc2b7c89", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/dashboard/new-reservation-form.tsx:101"}, "properties": {"repobilityId": "f5e91b9cacab43d8", "scanner": "scanner-primary", "fingerprint": "64a91e4ebc2b7c89", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-bb74976841486e22", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/forms/slot-picker.tsx:325"}, "properties": {"repobilityId": "d37d7593c7e11c55", "scanner": "scanner-primary", "fingerprint": "bb74976841486e22", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-d2f9b929f4d97ace", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/dashboard/reservations/new/page.tsx:13"}, "properties": {"repobilityId": "110983dde9ffe022", "scanner": "scanner-primary", "fingerprint": "d2f9b929f4d97ace", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-03a4a506ef007c1e", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(marketing)/booking/respond/decline/page.tsx:15"}, "properties": {"repobilityId": "68755d61943fb11c", "scanner": "scanner-primary", "fingerprint": "03a4a506ef007c1e", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-99203aec00494d7d", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/lib/shopify.ts:6"}, "properties": {"repobilityId": "c218f335e436e424", "scanner": "scanner-primary", "fingerprint": "99203aec00494d7d", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-84e7afcea25a5692", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/lib/shopify-server.ts:28"}, "properties": {"repobilityId": "aafec3b0d3c560d7", "scanner": "scanner-primary", "fingerprint": "84e7afcea25a5692", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-e804c028ef1c6c86", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/lib/shopify-admin.ts:6"}, "properties": {"repobilityId": "161eaeb12fbd9d8c", "scanner": "scanner-primary", "fingerprint": "e804c028ef1c6c86", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-fb7d91919764197d", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/lib/seo-pipeline.ts:152"}, "properties": {"repobilityId": "cf3eea8ff95e6e3f", "scanner": "scanner-primary", "fingerprint": "fb7d91919764197d", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-c267f9a8f7d8b582", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/lib/supabase-admin.ts:11"}, "properties": {"repobilityId": "02cd9058682b0d4e", "scanner": "scanner-primary", "fingerprint": "c267f9a8f7d8b582", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-030eb00775ff6226", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/lib/sumup.ts:19"}, "properties": {"repobilityId": "7f14cb2ac7931db7", "scanner": "scanner-primary", "fingerprint": "030eb00775ff6226", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-4bc85a7c744ab8ba", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/sanity/queries/team.ts:13"}, "properties": {"repobilityId": "f3eea1050ef5812d", "scanner": "scanner-primary", "fingerprint": "4bc85a7c744ab8ba", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-2b773e1009b02734", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/sanity/queries/site-settings.ts:50"}, "properties": {"repobilityId": "57b75929b81ac176", "scanner": "scanner-primary", "fingerprint": "2b773e1009b02734", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-f0a01bebe1ed6752", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/sanity/queries/testimonials.ts:13"}, "properties": {"repobilityId": "c4832b427dd8f697", "scanner": "scanner-primary", "fingerprint": "f0a01bebe1ed6752", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-9e1a8b225ea5447c", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/sanity/queries/services.ts:46"}, "properties": {"repobilityId": "649fac09f96d514c", "scanner": "scanner-primary", "fingerprint": "9e1a8b225ea5447c", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-97c690bc0aba4f85", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/sanity/queries/seo-pages.ts:38"}, "properties": {"repobilityId": "8203f408452c5050", "scanner": "scanner-primary", "fingerprint": "97c690bc0aba4f85", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-47fa79085523d72d", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/sanity/queries/posts.ts:32"}, "properties": {"repobilityId": "348a5a381a59328f", "scanner": "scanner-primary", "fingerprint": "47fa79085523d72d", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}]}]}