{"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_blueprint_gap", "name": "Foundry mined blueprint gap alignment: qwertyBB12/medikah-chat-frontend", "shortDescription": {"text": "Foundry mined blueprint gap alignment: qwertyBB12/medikah-chat-frontend"}, "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: supported_by_high_confidence_link\nRepo: qwertyBB12/medikah-chat-frontend\nThread: qwertyBB12/medikah-chat-frontend#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: qwertyBB12/medikah-chat-frontend\nThread: qwertyBB12/medikah-chat-frontend#2\nGraph gold label: supported_by_high_confidence_link\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: qwertyBB12/medikah-chat-frontend#2\nRepo: qwertyBB12/medikah-chat-frontend\nIssue/PR number: 2\nGraph consistency label: supported_by_high_confidence_link\nNodes: 27\nEdges: 53\nNode types: {'link_quality': 6, 'co"}, "properties": {"scanner": "foundry_dataset", "category": "tech_debt", "severity": "medium", "confidence": 0.7, "cwe": "", "owasp": ""}}, {"id": "foundry_assumption_check", "name": "Foundry mined assumption checks: qwertyBB12/medikah-chat-frontend", "shortDescription": {"text": "Foundry mined assumption checks: qwertyBB12/medikah-chat-frontend"}, "fullDescription": {"text": "Comment chain pattern product: assumption_checks\nRepo: qwertyBB12/medikah-chat-frontend\nThread: qwertyBB12/medikah-chat-frontend#3\nOutcome: claimed_resolved_unverified\nThread label: thread_has_human_issue_and_fix_context\nSource graph label: source_backed_multi_signal_graph\nReasons: source_graph_has_real_artifacts, source_graph_has_verification_artifacts, repo_has_isolated_helicopter_views, link_quality_high_confidence, high_risk_human_feedback_label\nChain evidence:\nIssue/PR evidence chain: qwertyBB12/medikah-chat-frontend#3\nRepo: qwertyBB12/medikah-chat-frontend\nThread label: thread_has_human_issue_and_fix_context\nOutcome: claimed_resolved_unverified\nComment count: 2\nLinked commit count: 6\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 6\nLabels: {'security_auth_secret': 1, 'deployment_env_gap': 1}\nPolarities: {'bad': 2}\nChanged file labels: {'dependency_or_build': 2, 'api_or_backend': 3, 'schema_or_data': 1}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-fe2edc7"}, "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: qwertyBB12/medikah-chat-frontend", "shortDescription": {"text": "Foundry mined schema ui api mismatch: qwertyBB12/medikah-chat-frontend"}, "fullDescription": {"text": "Graph query export: Schema, UI, and API mismatch\nQuery id: schema_ui_api_mismatch\nQuery type: motif_query\nIntent: Assumption-check examples for data-path consistency across layers.\nMotif: schema_ui_api_mismatch\nTraining usage: assumption_check\nGraph gold label: supported_by_high_confidence_link\nRepo: qwertyBB12/medikah-chat-frontend\nThread: qwertyBB12/medikah-chat-frontend#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: qwertyBB12/medikah-chat-frontend\nThread: qwertyBB12/medikah-chat-frontend#3\nGraph gold label: supported_by_high_confidence_link\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: qwertyBB12/medikah-chat-frontend#3\nRepo: qwertyBB12/medikah-chat-frontend\nIssue/PR number: 3\nGraph consistency label: supported_by_high_confidence_link\nNodes: 23\nEdges: 46\nNode types: {'pr_file': 6, 'commit': 5, 'link_quality': 4, 'comment': 2, 'comment_chain':"}, "properties": {"scanner": "foundry_dataset", "category": "quality", "severity": "high", "confidence": 0.76, "cwe": "", "owasp": ""}}, {"id": "foundry_auth_guardrail_gap", "name": "Foundry mined security auth guardrail gaps: qwertyBB12/medikah-chat-frontend", "shortDescription": {"text": "Foundry mined security auth guardrail gaps: qwertyBB12/medikah-chat-frontend"}, "fullDescription": {"text": "Graph query export: Security/auth changes without enough guardrails\nQuery id: security_auth_guardrail_gaps\nQuery type: motif_query\nIntent: Assumption-check security/auth examples requiring stronger tests or CI.\nMotif: security_auth_without_guardrails\nTraining usage: assumption_check\nGraph gold label: supported_by_high_confidence_link\nRepo: qwertyBB12/medikah-chat-frontend\nThread: qwertyBB12/medikah-chat-frontend#3\nEvidence:\nGraph motif: Security/auth change without enough guardrails\nMotif id: security_auth_without_guardrails\nPolarity: bad\nTraining usage: assumption_check\nSeverity: critical\nRepo: qwertyBB12/medikah-chat-frontend\nThread: qwertyBB12/medikah-chat-frontend#3\nGraph gold label: supported_by_high_confidence_link\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: qwertyBB12/medikah-chat-frontend#3\nRepo: qwertyBB12/medikah-chat-frontend\nIssue/PR number: 3\nGraph consistency label: supported_by_high_confidence_link\nNodes: 23\nEdges: 46\nNode types: {'pr_file': 6, 'comm"}, "properties": {"scanner": "foundry_dataset", "category": "auth", "severity": "critical", "confidence": 0.78, "cwe": "", "owasp": ""}}, {"id": "scanner-bead75b0f9233e05", "name": "No API endpoints detected", "shortDescription": {"text": "No API endpoints detected"}, "fullDescription": {"text": "The scanner did not find FastAPI/Flask/Express/NestJS/GraphQL/gRPC routes. If this repo exposes APIs, the framework may be unsupported."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "info", "confidence": 1.0}}, {"id": "scanner-1e58a4af1c8a886d", "name": "Stray `console.log` in TS/JS \u2014 next-sitemap.config.js:79", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 next-sitemap.config.js:79"}, "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-b558306b9345665f", "name": "Stray `console.log` in TS/JS \u2014 scripts/audit-patient-portal-tokens.ts:354", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/audit-patient-portal-tokens.ts:354"}, "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-3d8afa83e707beef", "name": "Stray `console.log` in TS/JS \u2014 scripts/audit-fonts.test.ts:111", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/audit-fonts.test.ts:111"}, "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-460140bab33a0398", "name": "Stray `console.log` in TS/JS \u2014 scripts/build-sogo-wave.ts:79", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/build-sogo-wave.ts:79"}, "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-5b101473ec593a1e", "name": "Stray `console.log` in TS/JS \u2014 scripts/build-design-tokens-cjs.ts:17", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/build-design-tokens-cjs.ts:17"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-564443aaa5352b08", "name": "Stray `console.log` in TS/JS \u2014 scripts/seed-phase16-e2e.ts:59", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/seed-phase16-e2e.ts:59"}, "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-2aa22045db6e42a8", "name": "`truncate` class without `title=` for hover reveal \u2014 components/PublicationSelector.tsx:157", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 components/PublicationSelector.tsx:157"}, "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-6ba60af907ff1b33", "name": "\"active\" state uses light bg in a dark theme \u2014 components/admin/AdminSidebar.tsx:33", "shortDescription": {"text": "\"active\" state uses light bg in a dark theme \u2014 components/admin/AdminSidebar.tsx:33"}, "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-5c414e61484ede99", "name": "`truncate` class without `title=` for hover reveal \u2014 components/admin/ReviewCard.tsx:62", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 components/admin/ReviewCard.tsx:62"}, "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-41e70d48ce7c096c", "name": "`truncate` class without `title=` for hover reveal \u2014 components/admin/AdminLayout.tsx:47", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 components/admin/AdminLayout.tsx:47"}, "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-d1701ca90dfe076a", "name": "`truncate` class without `title=` for hover reveal \u2014 components/physician/InquiryList.tsx:281", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 components/physician/InquiryList.tsx:281"}, "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-0f6dbcdb071e9485", "name": "`truncate` class without `title=` for hover reveal \u2014 components/physician/ProfileOverview.tsx:107", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 components/physician/ProfileOverview.tsx:107"}, "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-03f0be594e76fc1e", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 components/physician/workspace/ThemedShell.tsx:96", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 components/physician/workspace/ThemedShell.tsx:96"}, "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-9e0108bd4954eb72", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 components/physician/workspace/sections/TryProContactForm.tsx:12", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 components/physician/workspace/sections/TryProContactForm.tsx:12"}, "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-6f490d20ec70668f", "name": "TODO/FIXME marker in shipping code \u2014 components/physician/workspace/upgrade/SATBlockedNotice.tsx:41", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 components/physician/workspace/upgrade/SATBlockedNotice.tsx:41"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-8a4a6edb38e974ce", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 components/physician/profile/ProfileLayout.tsx:59", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 components/physician/profile/ProfileLayout.tsx:59"}, "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-6baecae338b735ff", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 components/physician/credentials/NPIForm.tsx:6", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 components/physician/credentials/NPIForm.tsx:6"}, "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-fa7943ac5c80084a", "name": "Stray `console.log` in TS/JS \u2014 lib/fsmbCheck.ts:58", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 lib/fsmbCheck.ts:58"}, "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-a8ee7aa07aeee5d1", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 pages/_document.tsx:33", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 pages/_document.tsx:33"}, "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-404a1e44ab30a6c9", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 pages/index.tsx:43", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 pages/index.tsx:43"}, "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-02b8be7311227172", "name": "TODO/FIXME marker in shipping code \u2014 pages/api/admin/physicians.ts:13", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 pages/api/admin/physicians.ts:13"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-9944a9eef3119ccb", "name": "Stray `console.log` in TS/JS \u2014 pages/api/physicians/create.ts:115", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 pages/api/physicians/create.ts:115"}, "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-1fd4a663ef84d610", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 pages/api/physicians/[id]/inquiries.ts:18", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 pages/api/physicians/[id]/inquiries.ts:18"}, "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-b2a81e791e55dced", "name": "`truncate` class without `title=` for hover reveal \u2014 pages/admin/physicians/[id].tsx:616", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 pages/admin/physicians/[id].tsx:616"}, "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-c7f1b7734b85df3f", "name": "Stray `console.log` in TS/JS \u2014 e2e/homepage-tokens.spec.ts:65", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 e2e/homepage-tokens.spec.ts:65"}, "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-1441fa2a1615f422", "name": "Privileged port 993 in use", "shortDescription": {"text": "Privileged port 993 in use"}, "fullDescription": {"text": "Port 993 is privileged (<1024). Make sure the service runs with the right caps or front it with a non-privileged port via a load balancer."}, "properties": {"scanner": "scanner-primary", "layer": "network", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-bf5277dda444ed2d", "name": "Privileged port 47 in use", "shortDescription": {"text": "Privileged port 47 in use"}, "fullDescription": {"text": "Port 47 is privileged (<1024). Make sure the service runs with the right caps or front it with a non-privileged port via a load balancer."}, "properties": {"scanner": "scanner-primary", "layer": "network", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-6fc254049f7385df", "name": "Privileged port 17 in use", "shortDescription": {"text": "Privileged port 17 in use"}, "fullDescription": {"text": "Port 17 is privileged (<1024). Make sure the service runs with the right caps or front it with a non-privileged port via a load balancer."}, "properties": {"scanner": "scanner-primary", "layer": "network", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-89ef4ce57cc4506f", "name": "Insecure pattern 'node_child_process' in scripts/audit-fonts.test.ts:20", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/audit-fonts.test.ts:20"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-84d97920cdf43beb", "name": "Insecure pattern 'node_child_process' in scripts/build-sogo-wave.test.ts:14", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/build-sogo-wave.test.ts:14"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-b5ecbeaa53034d66", "name": "Insecure pattern 'dangerous_innerhtml' in components/physician/workspace/ThemedShell.tsx:96", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in components/physician/workspace/ThemedShell.tsx:96"}, "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-5cd424db62a98fb2", "name": "Insecure pattern 'dangerous_innerhtml' in components/physician/profile/ProfileLayout.tsx:59", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in components/physician/profile/ProfileLayout.tsx:59"}, "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-ff187b70c22b740e", "name": "Possible secret in lib/practikahWorkspaceContent.ts", "shortDescription": {"text": "Possible secret in lib/practikahWorkspaceContent.ts"}, "fullDescription": {"text": "Detected pattern matching password_literal. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-cfccdd8f56696942", "name": "Possible secret in lib/physicianEmail.ts", "shortDescription": {"text": "Possible secret in lib/physicianEmail.ts"}, "fullDescription": {"text": "Detected pattern matching password_literal. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-1dc6581c5f6d042d", "name": "Insecure pattern 'dangerous_innerhtml' in pages/_document.tsx:33", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in pages/_document.tsx:33"}, "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-148683963c0803a7", "name": "Insecure pattern 'dangerous_innerhtml' in pages/index.tsx:43", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in pages/index.tsx:43"}, "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-088b1e2b7f5ecd15", "name": "Very large file: lib/practikahWorkspaceContent.ts (1366 lines)", "shortDescription": {"text": "Very large file: lib/practikahWorkspaceContent.ts (1366 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": "18 test file(s) for 327 source file(s) (ratio 0.06). Consider adding integration or unit tests for critical paths."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-141b30a41e03817b", "name": "No license file detected", "shortDescription": {"text": "No license file detected"}, "fullDescription": {"text": "No LICENSE/COPYING/NOTICE file was found. Generated repositories often omit licensing, which blocks reuse and automated intake."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-3ab5d313dda8e5f9", "name": "Debug logging residue appears in source files", "shortDescription": {"text": "Debug logging residue appears in source files"}, "fullDescription": {"text": "Found 18 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 159 placeholder/mock markers across 54 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-749d4bc1bd66df5f", "name": "Agent instructions exist but release-hardening basics are missing", "shortDescription": {"text": "Agent instructions exist but release-hardening basics are missing"}, "fullDescription": {"text": "AI-coder instruction files were found, but the repo is missing license. Treat this as a contract gap: the agent is guided, but the generated output is not yet guarded by the controls that make it repeatable."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-ea8f3013f588db25", "name": "Shallow git history limits provenance confidence", "shortDescription": {"text": "Shallow git history limits provenance confidence"}, "fullDescription": {"text": "The repository is a shallow clone. Origin/evolution analysis cannot distinguish fresh generation, imported legacy code, or long-lived human code with high confidence."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-8424db9c75e04ba4", "name": "Very short observed git history", "shortDescription": {"text": "Very short observed git history"}, "fullDescription": {"text": "The repo has multiple source files but two or fewer visible commits. This is not a failure by itself, but it lowers confidence in evolution-based diagnosis."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-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-f9eb009921026953", "name": "Commented-code block (5 lines) in tailwind.config.js:2", "shortDescription": {"text": "Commented-code block (5 lines) in tailwind.config.js:2"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-271fd9d14cccfd27", "name": "Commented-code block (6 lines) in __tests__/mailcowImapProvider.test.ts:179", "shortDescription": {"text": "Commented-code block (6 lines) in __tests__/mailcowImapProvider.test.ts:179"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-b233586b96bbe347", "name": "Commented-code block (5 lines) in __tests__/npiLookup.test.ts:14", "shortDescription": {"text": "Commented-code block (5 lines) in __tests__/npiLookup.test.ts:14"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-df6d0ce3a206e112", "name": "Commented-code block (5 lines) in scripts/build-design-tokens-cjs.ts:1", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/build-design-tokens-cjs.ts:1"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-3447961187b84c71", "name": "Commented-code block (5 lines) in components/CdmxDoctorChat.tsx:7", "shortDescription": {"text": "Commented-code block (5 lines) in components/CdmxDoctorChat.tsx:7"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-45cf9fe60fdc371d", "name": "`fetch()` without try/.catch or AbortSignal \u2014 components/physician/InquiryList.tsx:118", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 components/physician/InquiryList.tsx:118"}, "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-a5b8322b5f669aab", "name": "`fetch()` without try/.catch or AbortSignal \u2014 components/physician/workspace/upgrade/DomainSearch.tsx:167", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 components/physician/workspace/upgrade/DomainSearch.tsx:167"}, "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-e3602314a23fced8", "name": "Commented-code block (5 lines) in app/api/og/home/route.tsx:1", "shortDescription": {"text": "Commented-code block (5 lines) in app/api/og/home/route.tsx:1"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-d5fc0c63241099ec", "name": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/og/home/route.tsx:26", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/og/home/route.tsx:26"}, "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-972dd017155e99f7", "name": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/og/physician/[slug]/route.tsx:28", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/og/physician/[slug]/route.tsx: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-a079a7310c7a84ef", "name": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/og/practikah/route.tsx:25", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/og/practikah/route.tsx:25"}, "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-1961e1c38690103a", "name": "Legacy-named symbol `normOld` in lib/credentialAuditService.ts:72", "shortDescription": {"text": "Legacy-named symbol `normOld` in lib/credentialAuditService.ts:72"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-2361f5975d0a322f", "name": "`fetch()` without try/.catch or AbortSignal \u2014 lib/linkedin.ts:122", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 lib/linkedin.ts:122"}, "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-cac998a255c6800b", "name": "Commented-code block (6 lines) in lib/design-tokens.ts:15", "shortDescription": {"text": "Commented-code block (6 lines) in lib/design-tokens.ts:15"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-e585387df81d9d74", "name": "Commented-code block (5 lines) in lib/bioPolisher.ts:274", "shortDescription": {"text": "Commented-code block (5 lines) in lib/bioPolisher.ts:274"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-275cd3a0961d539f", "name": "Commented-code block (5 lines) in lib/fonts.ts:10", "shortDescription": {"text": "Commented-code block (5 lines) in lib/fonts.ts:10"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-1e5be08d159d67e3", "name": "`fetch()` without try/.catch or AbortSignal \u2014 lib/proRedirectLookup.ts:46", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 lib/proRedirectLookup.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-987ae1af0a03f149", "name": "`fetch()` without try/.catch or AbortSignal \u2014 lib/scheduleClient.ts:28", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 lib/scheduleClient.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-8f0a2d213f774463", "name": "`fetch()` without try/.catch or AbortSignal \u2014 lib/publications.ts:66", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 lib/publications.ts:66"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-a243291112c24d77", "name": "Commented-code block (5 lines) in lib/practikahEngagementHeuristic.ts:36", "shortDescription": {"text": "Commented-code block (5 lines) in lib/practikahEngagementHeuristic.ts:36"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-076653f6372bc107", "name": "Commented-code block (6 lines) in lib/simpleRateLimit.ts:1", "shortDescription": {"text": "Commented-code block (6 lines) in lib/simpleRateLimit.ts:1"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-7404fbc0912e13e8", "name": "Commented-code block (5 lines) in lib/emailChrome.ts:1", "shortDescription": {"text": "Commented-code block (5 lines) in lib/emailChrome.ts:1"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-ce4b73029c41e772", "name": "Commented-code block (5 lines) in lib/auth/mailcowImapProvider.ts:151", "shortDescription": {"text": "Commented-code block (5 lines) in lib/auth/mailcowImapProvider.ts:151"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-2b34a5f24e0137ee", "name": "`fetch()` without try/.catch or AbortSignal \u2014 pages/chat.tsx:191", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 pages/chat.tsx:191"}, "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-d014217faee0b4e8", "name": "Commented-code block (5 lines) in pages/cdmx.tsx:123", "shortDescription": {"text": "Commented-code block (5 lines) in pages/cdmx.tsx:123"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-939e88d263d9485b", "name": "Commented-code block (5 lines) in pages/api/auth/[...nextauth].ts:111", "shortDescription": {"text": "Commented-code block (5 lines) in pages/api/auth/[...nextauth].ts:111"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-2a9aa2acce81c34d", "name": "Commented-code block (6 lines) in pages/api/auth/activate/totp-verify.ts:274", "shortDescription": {"text": "Commented-code block (6 lines) in pages/api/auth/activate/totp-verify.ts:274"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-851bce58f8126aab", "name": "`fetch()` without try/.catch or AbortSignal \u2014 pages/api/auth/activate/totp-enroll.ts:266", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 pages/api/auth/activate/totp-enroll.ts:266"}, "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-582ac4cf0f664fae", "name": "Commented-code block (6 lines) in pages/api/auth/activate/send-link.ts:21", "shortDescription": {"text": "Commented-code block (6 lines) in pages/api/auth/activate/send-link.ts:21"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-f86dc18e2f57a479", "name": "Commented-code block (5 lines) in pages/api/admin/physicians.ts:13", "shortDescription": {"text": "Commented-code block (5 lines) in pages/api/admin/physicians.ts:13"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-07efb5c9e4685c23", "name": "Commented-code block (7 lines) in pages/api/physicians/create.ts:29", "shortDescription": {"text": "Commented-code block (7 lines) in pages/api/physicians/create.ts:29"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-c3c4daf12344758a", "name": "Commented-code block (5 lines) in pages/api/physicians/avatar.ts:45", "shortDescription": {"text": "Commented-code block (5 lines) in pages/api/physicians/avatar.ts:45"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-b4f1b365539b54de", "name": "Commented-code block (6 lines) in pages/api/physicians/[id]/inquiries.ts:106", "shortDescription": {"text": "Commented-code block (6 lines) in pages/api/physicians/[id]/inquiries.ts:106"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-05e0684ad98a34f6", "name": "Commented-code block (7 lines) in pages/api/physicians/[id]/fsmb-check.ts:118", "shortDescription": {"text": "Commented-code block (7 lines) in pages/api/physicians/[id]/fsmb-check.ts:118"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-b459d80448638118", "name": "Commented-code block (6 lines) in pages/api/practikah/sso-verify.ts:107", "shortDescription": {"text": "Commented-code block (6 lines) in pages/api/practikah/sso-verify.ts:107"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-83eb716c3bf2b51b", "name": "`fetch()` without try/.catch or AbortSignal \u2014 pages/onboard/physician.tsx:101", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 pages/onboard/physician.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-91f86d8c9c01d46c", "name": "`fetch()` without try/.catch or AbortSignal \u2014 pages/admin/physicians.tsx:67", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 pages/admin/physicians.tsx:67"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-10e9c63bea35f6cf", "name": "Commented-code block (9 lines) in pages/admin/index.tsx:93", "shortDescription": {"text": "Commented-code block (9 lines) in pages/admin/index.tsx:93"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-b1b17917bf5f2cf1", "name": "`fetch()` without try/.catch or AbortSignal \u2014 pages/admin/physicians/[id].tsx:310", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 pages/admin/physicians/[id].tsx:310"}, "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-eb84c2e3516d27f4", "name": "`fetch()` without try/.catch or AbortSignal \u2014 pages/physicians/onboard.tsx:240", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 pages/physicians/onboard.tsx:240"}, "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-504f308d74b1f42a", "name": "`fetch()` without try/.catch or AbortSignal \u2014 pages/physicians/dashboard.tsx:58", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 pages/physicians/dashboard.tsx:58"}, "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-13c12b984490c597", "name": "Commented-code block (6 lines) in e2e/homepage-tokens.spec.ts:30", "shortDescription": {"text": "Commented-code block (6 lines) in e2e/homepage-tokens.spec.ts:30"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-022e6399d1ef2beb", "name": "12 env vars used in code but missing from .env.example", "shortDescription": {"text": "12 env vars used in code but missing from .env.example"}, "fullDescription": {"text": "Drift between code and config docs. The first few: `GOOGLE_CLIENT_ID`, `GOOGLE_CLIENT_SECRET`, `MAILCOW_API_URL`, `NODE_ENV`, `OPENAI_API_KEY`, `PRACTIKAH_API_URL`, `PROXYCURL_API_KEY`, `SERPAPI_KEY` + 4 more. Add them (with a placeholder/comment) to .env.example so onboarding doesn't break."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}]}}, "automationDetails": {"id": "repobility/17674"}, "properties": {"repository": "qwertyBB12/medikah-chat-frontend", "repoUrl": "https://github.com/qwertyBB12/medikah-chat-frontend", "branch": "main"}, "results": [{"ruleId": "foundry_blueprint_gap", "level": "warning", "message": {"text": "Foundry mined blueprint gap alignment: qwertyBB12/medikah-chat-frontend"}, "properties": {"repobilityId": 402771, "scanner": "foundry_dataset", "fingerprint": "a0a37c08474b2281746a3154129ee5001344f94b1af74aab01e5473a5b02ea46", "category": "tech_debt", "severity": "medium", "confidence": 0.7, "triageState": "open", "verdict": "needs_review", "isResolved": false, "reason": "Imported from mined Foundry/Fable5 evidence with real GitHub/source provenance. Review source_id before acting.", "evidence": {"meta": {"kind": "graph_query_record", "title": "Human feedback aligned with blueprint or architecture gaps", "intent": "Curriculum-gap examples connecting issue threads to helicopter-view gaps.", "labels": {"bug_fix": 5, "ui_or_frontend": 3, "source_or_other": 1, "deployment_env_gap": 1, "api_integration_gap": 1, "security_auth_secret": 1, "mostly follows blueprint": 1, "claimed_resolved_unverified": 5, "issue_or_pull_request_thread": 1, "blueprint_human_gap_disagreement": 1, "human_reported_issue_then_fix_attempt": 3, "thread_has_human_issue_and_fix_context": 2}, "source": "graph_query_export", "motif_id": "blueprint_gap_alignment", "outcomes": {"claimed_resolved_unverified": 10}, "polarity": "mixed", "query_id": "blueprint_gap_alignment", "severity": "medium", "ci_labels": {}, "synthetic": false, "edge_count": 53, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 3, "thread_has_comment": 2, "thread_touches_file": 4, "thread_has_pr_review": 1, "alignment_uses_comment": 1, "alignment_uses_finding": 1, "chain_has_link_quality": 6, "comment_aligns_finding": 1, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "issue_chain_touches_file": 4, "thread_has_comment_chain": 3, "comment_chain_links_commit": 8, "comment_chain_touches_file": 12, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 3}, "node_count": 27, "node_types": {"repo": 1, "commit": 5, "thread": 1, "comment": 2, "pr_file": 4, "alignment": 1, "pr_review": 1, "fix_outcome": 1, "issue_chain": 1, "link_quality": 6, "comment_chain": 3, "blueprint_finding": 1}, "query_type": "motif_query", "thread_key": "qwertyBB12/medikah-chat-frontend#2", "issue_number": "2", "quality_tiers": {"high_confidence": 4, "assumption_check": 1, "weak_supervision": 1}, "repo_full_name": "qwertyBB12/medikah-chat-frontend", "training_usage": "curriculum_gap", "source_motif_id": "graph-pattern-motif-thread-fe04c93ed879a5ff", "graph_gold_label": "supported_by_high_confidence_link", "changed_file_labels": {"ui_or_frontend": 18, "source_or_other": 6}}, "text": "Graph query export: Human feedback aligned with blueprint or architecture gaps\nQuery id: blueprint_gap_alignment\nQuery type: motif_query\nIntent: Curriculum-gap examples connecting issue threads to helicopter-view gaps.\nMotif: blueprint_gap_alignment\nTraining usage: curriculum_gap\nGraph gold label: supported_by_high_confidence_link\nRepo: qwertyBB12/medikah-chat-frontend\nThread: qwertyBB12/medikah-chat-frontend#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: qwertyBB12/medikah-chat-frontend\nThread: qwertyBB12/medikah-chat-frontend#2\nGraph gold label: supported_by_high_confidence_link\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: qwertyBB12/medikah-chat-frontend#2\nRepo: qwertyBB12/medikah-chat-frontend\nIssue/PR number: 2\nGraph consistency label: supported_by_high_confidence_link\nNodes: 27\nEdges: 53\nNode types: {'link_quality': 6, 'commit': 5, 'pr_file': 4, 'comment_chain': 3, 'comment': 2, 'thread': 1, 'repo': 1, 'pr_review': 1, 'issue_chain': 1, 'fix_outcome': 1, 'alignment': 1, 'blueprint_finding': 1}\nEdge types: {'comment_chain_touches_file': 12, 'comment_chain_links_commit': 8, 'chain_has_link_quality': 6, 'thread_touches_file': 4, 'issue_chain_touches_file': 4, 'thread_has_comment_chain': 3, 'comment_has_chain': 3, 'issue_chain_has_comment_chain': 3, 'thread_has_comment': 2, 'repo_has_thread': 1, 'thread_has_pr_review': 1, 'thread_has_issue_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1, 'alignment_uses_comment': 1, 'alignment_uses_finding': 1}\nLabels: {'bug_fix': 5, 'claimed_resolved_unverified': 5, 'ui_or_frontend': 3, 'human_reported_issue_then_fix_attempt': 3, 'thread_has_human_issue_and_fix_context': 2, 'issue_or_pull_request_thread': 1, 'security_auth_secret': 1, 'deployment_env_gap': 1, 'api_integration_gap': 1, 'source_or_other': 1, 'blueprint_human_gap_disagreement': 1, 'mostly follows blueprint': 1}\nOutcomes: {'claimed_resolved_unverified': 10}\nQuality tiers: {'high_confidence': 4, 'weak_supervision': 1, 'assumption_check': 1}\nCI labels: {}\nCurriculum targets:\n- Use helicopter-view architecture/schema/design evidence beside issue threads.\n- Teach models to compare requested product class against implementation layers.\nAssumption checks:\n- Which blueprint layer is absent: frontend, API, data, auth, tests, or deployment?\n- Does human feedback confirm the same architectural gap?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/qwertyBB12/medikah-chat-frontend", "source_id": "graph-query-motif_query-1f5731668e1d0411", "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": "qwertyBB12/medikah-chat-frontend", "source_dataset": "graph_queries/blueprint_gap_alignment", "training_usage": "curriculum_gap"}}}, {"ruleId": "foundry_blueprint_gap", "level": "warning", "message": {"text": "Foundry mined blueprint gap alignment: qwertyBB12/medikah-chat-frontend"}, "properties": {"repobilityId": 402770, "scanner": "foundry_dataset", "fingerprint": "fa2199d91e342726c2799a0b556afc1f8e7e46aa770063fb1dafd08053e08569", "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": {"keys": ["source_or_other", "bug_fix", "claimed_resolved_unverified", "human_reported_issue_then_fix_attempt", "comment_has_related_commit_context", "ambiguous_needs_more_evidence", "blueprint_human_gap_disagreement", "ui_or_frontend", "runtime_failure", "security_auth_secret", "ui_workflow_gap", "data_schema", "thread_has_human_issue_and_fix_context", "issue_or_pull_request_thread", "data_schema_persistence", "deployment_env_gap", "api_integration_gap", "api_or_backend", "schema_or_data", "commit_general", "human_reported_issue_then_verified_fix_attempt", "verification_or_tests", "claimed_resolved_with_verification_signal", "mostly follows blueprint"], "count": 24, "_omitted": "large_dict"}, "source": "graph_query_export", "motif_id": "blueprint_gap_alignment", "outcomes": {"claimed_resolved_unverified": 12, "ambiguous_needs_more_evidence": 8, "claimed_resolved_with_verification_signal": 2}, "polarity": "mixed", "query_id": "blueprint_gap_alignment", "severity": "medium", "ci_labels": {}, "synthetic": false, "edge_count": 226, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 9, "thread_has_comment": 6, "thread_touches_file": 12, "thread_has_pr_review": 3, "alignment_uses_comment": 4, "alignment_uses_finding": 4, "chain_has_link_quality": 15, "comment_aligns_finding": 4, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "issue_chain_touches_file": 12, "thread_has_comment_chain": 9, "comment_chain_links_commit": 27, "comment_chain_touches_file": 108, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 9}, "node_count": 65, "node_types": {"repo": 1, "commit": 11, "thread": 1, "comment": 6, "pr_file": 12, "alignment": 4, "pr_review": 3, "fix_outcome": 1, "issue_chain": 1, "link_quality": 15, "comment_chain": 9, "blueprint_finding": 1}, "query_type": "motif_query", "thread_key": "qwertyBB12/medikah-chat-frontend#1", "issue_number": "1", "quality_tiers": {"assumption_check": 4, "weak_supervision": 11}, "repo_full_name": "qwertyBB12/medikah-chat-frontend", "training_usage": "curriculum_gap", "source_motif_id": "graph-pattern-motif-thread-e6b4c2525c7bb619", "graph_gold_label": "supported_by_verification_signal", "changed_file_labels": {"api_or_backend": 12, "schema_or_data": 12, "ui_or_frontend": 36, "source_or_other": 84}}, "text": "Graph query export: Human feedback aligned with blueprint or architecture gaps\nQuery id: blueprint_gap_alignment\nQuery type: motif_query\nIntent: Curriculum-gap examples connecting issue threads to helicopter-view gaps.\nMotif: blueprint_gap_alignment\nTraining usage: curriculum_gap\nGraph gold label: supported_by_verification_signal\nRepo: qwertyBB12/medikah-chat-frontend\nThread: qwertyBB12/medikah-chat-frontend#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: qwertyBB12/medikah-chat-frontend\nThread: qwertyBB12/medikah-chat-frontend#1\nGraph gold label: supported_by_verification_signal\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: qwertyBB12/medikah-chat-frontend#1\nRepo: qwertyBB12/medikah-chat-frontend\nIssue/PR number: 1\nGraph consistency label: supported_by_verification_signal\nNodes: 65\nEdges: 226\nNode types: {'link_quality': 15, 'pr_file': 12, 'commit': 11, 'comment_chain': 9, 'comment': 6, 'alignment': 4, 'pr_review': 3, 'thread': 1, 'repo': 1, 'issue_chain': 1, 'fix_outcome': 1, 'blueprint_finding': 1}\nEdge types: {'comment_chain_touches_file': 108, 'comment_chain_links_commit': 27, 'chain_has_link_quality': 15, 'thread_touches_file': 12, 'issue_chain_touches_file': 12, 'thread_has_comment_chain': 9, 'comment_has_chain': 9, 'issue_chain_has_comment_chain': 9, 'thread_has_comment': 6, 'alignment_uses_comment': 4, 'alignment_uses_finding': 4, 'comment_aligns_finding': 4, 'thread_has_pr_review': 3, 'repo_has_thread': 1, 'thread_has_issue_chain': 1, 'thread_has_fix_outcome': 1}\nLabels: {'source_or_other': 7, 'bug_fix': 7, 'claimed_resolved_unverified': 6, 'human_reported_issue_then_fix_attempt': 4, 'comment_has_related_commit_context': 4, 'ambiguous_needs_more_evidence': 4, 'blueprint_human_gap_disagreement': 4, 'ui_or_frontend': 3, 'runtime_failure': 2, 'security_auth_secret': 2, 'ui_workflow_gap': 2, 'data_schema': 2, 'thread_has_human_issue_and_fix_context': 2, 'issue_or_pull_request_thread': 1, 'data_schema_persistence': 1, 'deployment_env_gap': 1}\nOutcomes: {'claimed_resolved_unverified': 12, 'ambiguous_needs_more_evidence': 8, 'claimed_resolved_with_verification_signal': 2}\nQuality tiers: {'weak_supervision': 11, 'assumption_check': 4}\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/qwertyBB12/medikah-chat-frontend", "source_id": "graph-query-motif_query-8ce068608d24dae3", "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": "qwertyBB12/medikah-chat-frontend", "source_dataset": "graph_queries/blueprint_gap_alignment", "training_usage": "curriculum_gap"}}}, {"ruleId": "foundry_assumption_check", "level": "warning", "message": {"text": "Foundry mined assumption checks: qwertyBB12/medikah-chat-frontend"}, "properties": {"repobilityId": 381324, "scanner": "foundry_dataset", "fingerprint": "e42347899447743494d1a52f33cd9f39ef29998b847e206790e4c8417756cc22", "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": "qwertyBB12/medikah-chat-frontend#3", "human_labels": ["api_or_backend", "dependency_or_build", "deployment_env_gap", "schema_or_data", "security_auth_secret"], "issue_number": "3", "thread_label": "thread_has_human_issue_and_fix_context", "outcome_label": "claimed_resolved_unverified", "source_backed": true, "max_confidence": 0.92, "repo_full_name": "qwertyBB12/medikah-chat-frontend", "training_usage": "gold_candidate", "confidence_tier": "high_confidence", "source_chain_id": "evidence-chain-issue_chain-1e7446acdeac0efe", "helicopter_views": {"graphs": 2, "schemas": 2}, "artifact_families": {"ci": 2, "docs": 2, "schemas": 3, "generated_claims": 1}, "source_chain_kind": "issue_chain", "changed_file_count": 6, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {"api_or_backend": 3, "schema_or_data": 1, "dependency_or_build": 2}, "linked_commit_count": 6, "helicopter_view_count": 4, "source_artifact_count": 8, "classification_reasons": ["source_graph_has_real_artifacts", "source_graph_has_verification_artifacts", "repo_has_isolated_helicopter_views", "link_quality_high_confidence", "high_risk_human_feedback_label"], "linked_ci_commit_count": 0, "verification_artifact_count": 5, "design_schema_api_artifact_count": 3}, "text": "Comment chain pattern product: assumption_checks\nRepo: qwertyBB12/medikah-chat-frontend\nThread: qwertyBB12/medikah-chat-frontend#3\nOutcome: claimed_resolved_unverified\nThread label: thread_has_human_issue_and_fix_context\nSource graph label: source_backed_multi_signal_graph\nReasons: source_graph_has_real_artifacts, source_graph_has_verification_artifacts, repo_has_isolated_helicopter_views, link_quality_high_confidence, high_risk_human_feedback_label\nChain evidence:\nIssue/PR evidence chain: qwertyBB12/medikah-chat-frontend#3\nRepo: qwertyBB12/medikah-chat-frontend\nThread label: thread_has_human_issue_and_fix_context\nOutcome: claimed_resolved_unverified\nComment count: 2\nLinked commit count: 6\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 6\nLabels: {'security_auth_secret': 1, 'deployment_env_gap': 1}\nPolarities: {'bad': 2}\nChanged file labels: {'dependency_or_build': 2, 'api_or_backend': 3, 'schema_or_data': 1}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-fe2edc735d67dd1f\",\n    \"kind\": \"pull_request_body\",\n    \"label\": \"security_auth_secret\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/qwertyBB12/medikah-chat-frontend/pull/3\",\n    \"text\": \"GitHub feedback: security_auth_secret\\nPolarity: bad\\nKind: pull_request_body\\nRepo: qwertyBB12/medikah-chat-frontend\\nAuthor: qwertyBB12 (User)\\nURL: https://github.com/qwertyBB12/medikah-chat-frontend/pull/3\\nTitle: Security hardening (frontend): next bump, gate orphaned routes, create-physician guard, RLS migration\\nBody:\\nFrontend half of the 2026-06-09 security sweep. Backend half already deployed to Render.\\n\\n## Changes\\n- **next 15.5.11 \u2192 15.5.19** \u2014 patches 16 high advisories incl. the Pages-Router + i18n middleware-bypass (GHSA-36qx-fr4f-26g5).\\n- **Gate orphaned verification routes** \u2014 `verify-credentials` (triggers the expensive 3-tier external pipeline) and `verification-status` (leaks per-physician detail) were unauthenticated with zero callers; now require `getAdminUser()`.\\n- **`physicians/create` guard** \u2014 origin allowlist + self-only check (non-breaking; onboarding may run pre-auth so a hard session requirement was avoided). Per-IP rate limiter recommended as fast-follow.\\n- **RLS migration `024_rls_role_hardening.sql`** \u2014 drops PUBLIC-role read policies on `linkedin_oauth_sessions` + `admin_users`. \u26a0\ufe0f NOT auto-applied; run manually in Supabase SQL editor after review.\\n\\n## Veri\"\n  },\n  {\n    \"id\": \"github-feedback-comment-c56093274b4c518e\",\n    \"kind\": \"issue_comment\",\n    \"label\": \"deployment_env_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/qwertyBB12/medikah-chat-frontend/pull/3#issuecomment-4664791611\",\n    \"text\": \"GitHub feedback: deployment_env_gap\\nPolarity: bad\\nKind: issue_comment\\nRepo: qwertyBB12/medikah-chat-frontend\\nAuthor: netlify[bot] (Bot)\\nURL: https://github.com/qwertyBB12/medikah-chat-frontend/pull/3#issuecomment-4664791611\\nTitle: \\nBody:\\n### <span aria-hidden=\\\"true\\\">\u2705</span> Deploy Previe\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/qwertyBB12/medikah-chat-frontend", "source_id": "comment-chain-pattern-assumption_checks-3cd41ea30a3a21de", "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": "qwertyBB12/medikah-chat-frontend", "source_dataset": "comment_chain_patterns/assumption_checks", "training_usage": "gold_candidate"}}}, {"ruleId": "foundry_assumption_check", "level": "warning", "message": {"text": "Foundry mined assumption checks: qwertyBB12/medikah-chat-frontend"}, "properties": {"repobilityId": 381323, "scanner": "foundry_dataset", "fingerprint": "5724a0432d8b3b578c0283bd494468fc9235f6eaa53684c8f4c657cb974c950b", "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": "qwertyBB12/medikah-chat-frontend#2", "human_labels": ["api_integration_gap", "deployment_env_gap", "security_auth_secret", "source_or_other", "ui_or_frontend"], "issue_number": "2", "thread_label": "thread_has_human_issue_and_fix_context", "outcome_label": "claimed_resolved_unverified", "source_backed": true, "max_confidence": 0.895, "repo_full_name": "qwertyBB12/medikah-chat-frontend", "training_usage": "gold_candidate", "confidence_tier": "high_confidence", "source_chain_id": "evidence-chain-issue_chain-ccc7e14129dbdeef", "helicopter_views": {"graphs": 2, "schemas": 2}, "artifact_families": {"ci": 2, "docs": 2, "schemas": 3, "generated_claims": 1}, "source_chain_kind": "issue_chain", "changed_file_count": 4, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {"ui_or_frontend": 3, "source_or_other": 1}, "linked_commit_count": 8, "helicopter_view_count": 4, "source_artifact_count": 8, "classification_reasons": ["source_graph_has_real_artifacts", "source_graph_has_verification_artifacts", "repo_has_isolated_helicopter_views", "link_quality_high_confidence", "high_risk_human_feedback_label"], "linked_ci_commit_count": 0, "verification_artifact_count": 5, "design_schema_api_artifact_count": 3}, "text": "Comment chain pattern product: assumption_checks\nRepo: qwertyBB12/medikah-chat-frontend\nThread: qwertyBB12/medikah-chat-frontend#2\nOutcome: claimed_resolved_unverified\nThread label: thread_has_human_issue_and_fix_context\nSource graph label: source_backed_multi_signal_graph\nReasons: source_graph_has_real_artifacts, source_graph_has_verification_artifacts, repo_has_isolated_helicopter_views, link_quality_high_confidence, high_risk_human_feedback_label\nChain evidence:\nIssue/PR evidence chain: qwertyBB12/medikah-chat-frontend#2\nRepo: qwertyBB12/medikah-chat-frontend\nThread label: thread_has_human_issue_and_fix_context\nOutcome: claimed_resolved_unverified\nComment count: 3\nLinked commit count: 8\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 4\nLabels: {'security_auth_secret': 1, 'deployment_env_gap': 1, 'api_integration_gap': 1}\nPolarities: {'bad': 3}\nChanged file labels: {'source_or_other': 1, 'ui_or_frontend': 3}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-e087748fa411ad6c\",\n    \"kind\": \"pull_request_body\",\n    \"label\": \"security_auth_secret\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/qwertyBB12/medikah-chat-frontend/pull/2\",\n    \"text\": \"GitHub feedback: security_auth_secret\\nPolarity: bad\\nKind: pull_request_body\\nRepo: qwertyBB12/medikah-chat-frontend\\nAuthor: qwertyBB12 (User)\\nURL: https://github.com/qwertyBB12/medikah-chat-frontend/pull/2\\nTitle: fix(fonts): self-host Oswald, drop render-blocking Google Fonts link\\nBody:\\n## Problem\\nUsers (notably in Mexico) reported intermittent **unstyled pages** and **serif fallback headings**.\\n\\nRoot cause: **Oswald** (the heading font) was the *only* font still loaded at runtime from **Google Fonts**, as a **render-blocking `<link>` in `_document.tsx` placed before the main stylesheet**. Every other font is self-hosted via `next/font`. When `fonts.googleapis.com` was slow/blocked (common on LatAm ISP/corporate/mobile networks):\\n- headings dropped to serif (\\\"fonts don't load right\\\")\\n- first paint stalled ahead of the main CSS and competed for the connection (\\\"sometimes nothing loads\\\")\\n\\nLive deploy was verified healthy (HTML\u2194CSS pairing consistent, assets 200/intact), so the fragility was this third-party render-path dependency.\\n\\n## Fix\\nSelf-host Oswald via `next/font` (weight 500, matching prior `Oswald:wght@500`), exactly like Mulish/DM Sans:\\n- `lib/fonts.ts` \u2014 add `oswald` export\"\n  },\n  {\n    \"id\": \"github-feedback-comment-925a34a3d1ebbc04\",\n    \"kind\": \"issue_comment\",\n    \"label\": \"deployment_env_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/qwertyBB12/medikah-chat-frontend/pull/2#issuecomment-4559667899\",\n    \"text\": \"GitHub feedback: deployment_env_gap\\nPolarity: bad\\nKind: issue_comment\\nRepo: qwertyBB12/medikah-chat-frontend\\nAuthor: netlify[bot] (Bot)\\nURL: https://github.com/qwertyBB12/medikah-chat-frontend/pull/2#issuecomment-4559667899\\nTitle: \\nBody:\\n### <span aria-hidden=\\\"true\\\">\u2705</span> Deplo\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/qwertyBB12/medikah-chat-frontend", "source_id": "comment-chain-pattern-assumption_checks-63c43932f905994f", "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": "qwertyBB12/medikah-chat-frontend", "source_dataset": "comment_chain_patterns/assumption_checks", "training_usage": "gold_candidate"}}}, {"ruleId": "foundry_assumption_check", "level": "warning", "message": {"text": "Foundry mined assumption checks: qwertyBB12/medikah-chat-frontend"}, "properties": {"repobilityId": 381322, "scanner": "foundry_dataset", "fingerprint": "7bffae3eb5d7f5a4d3e6f51acc5883c2311225795cb13e44937c395042816612", "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": "qwertyBB12/medikah-chat-frontend#1", "human_labels": ["api_integration_gap", "api_or_backend", "data_schema_persistence", "deployment_env_gap", "runtime_failure", "schema_or_data", "security_auth_secret", "source_or_other", "ui_or_frontend", "ui_workflow_gap"], "issue_number": "1", "thread_label": "thread_has_human_issue_and_fix_context", "outcome_label": "claimed_resolved_unverified", "source_backed": true, "max_confidence": 0.785, "repo_full_name": "qwertyBB12/medikah-chat-frontend", "training_usage": "weak_supervision", "confidence_tier": "weak_supervision", "source_chain_id": "evidence-chain-issue_chain-6659322dd3585d95", "helicopter_views": {"graphs": 2, "schemas": 2}, "artifact_families": {"ci": 2, "docs": 2, "schemas": 3, "generated_claims": 1}, "source_chain_kind": "issue_chain", "changed_file_count": 12, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {"api_or_backend": 1, "schema_or_data": 1, "ui_or_frontend": 3, "source_or_other": 7}, "linked_commit_count": 27, "helicopter_view_count": 4, "source_artifact_count": 8, "classification_reasons": ["source_graph_has_real_artifacts", "source_graph_has_verification_artifacts", "repo_has_isolated_helicopter_views", "link_quality_weak_supervision", "high_risk_human_feedback_label"], "linked_ci_commit_count": 0, "verification_artifact_count": 5, "design_schema_api_artifact_count": 3}, "text": "Comment chain pattern product: assumption_checks\nRepo: qwertyBB12/medikah-chat-frontend\nThread: qwertyBB12/medikah-chat-frontend#1\nOutcome: claimed_resolved_unverified\nThread label: thread_has_human_issue_and_fix_context\nSource graph label: source_backed_multi_signal_graph\nReasons: source_graph_has_real_artifacts, source_graph_has_verification_artifacts, repo_has_isolated_helicopter_views, link_quality_weak_supervision, high_risk_human_feedback_label\nChain evidence:\nIssue/PR evidence chain: qwertyBB12/medikah-chat-frontend#1\nRepo: qwertyBB12/medikah-chat-frontend\nThread label: thread_has_human_issue_and_fix_context\nOutcome: claimed_resolved_unverified\nComment count: 9\nLinked commit count: 27\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 12\nLabels: {'data_schema_persistence': 1, 'deployment_env_gap': 1, 'runtime_failure': 2, 'security_auth_secret': 2, 'ui_workflow_gap': 2, 'api_integration_gap': 1}\nPolarities: {'bad': 9}\nChanged file labels: {'ui_or_frontend': 3, 'source_or_other': 7, 'api_or_backend': 1, 'schema_or_data': 1}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-9e5f092e55af6dc4\",\n    \"kind\": \"pull_request_body\",\n    \"label\": \"data_schema_persistence\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/qwertyBB12/medikah-chat-frontend/pull/1\",\n    \"text\": \"GitHub feedback: data_schema_persistence\\nPolarity: bad\\nKind: pull_request_body\\nRepo: qwertyBB12/medikah-chat-frontend\\nAuthor: qwertyBB12 (User)\\nURL: https://github.com/qwertyBB12/medikah-chat-frontend/pull/1\\nTitle: CDMX launch landing page + RSVP\\nBody:\\nMexico City launch page at /cdmx (June 23\u201325, 2026).\\n\\n- Spanish-first branded landing, EN/ES toggle\\n- POST /api/cdmx-rsvp \u2192 cdmx_rsvps (service role), Spanish Resend confirmation\\n- migration 023_cdmx_rsvps.sql (must be applied in Supabase before submissions save)\\n\\n\ud83e\udd16 Generated with [Claude Code](https://claude.com/claude-code)\"\n  },\n  {\n    \"id\": \"github-feedback-comment-a199d9ef5c9b1f7b\",\n    \"kind\": \"issue_comment\",\n    \"label\": \"deployment_env_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/qwertyBB12/medikah-chat-frontend/pull/1#issuecomment-4544702393\",\n    \"text\": \"GitHub feedback: deployment_env_gap\\nPolarity: bad\\nKind: issue_comment\\nRepo: qwertyBB12/medikah-chat-frontend\\nAuthor: netlify[bot] (Bot)\\nURL: https://github.com/qwertyBB12/medikah-chat-frontend/pull/1#issuecomment-4544702393\\nTitle: \\nBody:\\n### <span aria-hidden=\\\"true\\\">\u2705</span> Deploy Preview for *cosmic-frangipane-bf2f87* ready!\\n\\n\\n|  Name | Link |\\n|:-:|------------------------|\\n|<span aria-hidden=\\\"true\\\">\ud83d\udd28</span> Latest commit | 7febc61f4cd8aba16b785731274de80efde8769c |\\n|<span aria-hidden=\\\"true\\\">\ud83d\udd0d</span> Latest deploy log | https://app.netlify.com/projects/cosmic-frangipane-bf2f87/deploys/6a15ede9f4e192000832cd4c |\\n|<span aria-hidden=\\\"true\\\">\ud83d\ude0e</span> Deploy Preview | [https://deploy-preview-1--cosmic-frangipane-bf2f87.netlify.app](https://deploy-preview-1--cosmic-fran\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/qwertyBB12/medikah-chat-frontend", "source_id": "comment-chain-pattern-assumption_checks-3b3f7165f48350f7", "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": "qwertyBB12/medikah-chat-frontend", "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: qwertyBB12/medikah-chat-frontend"}, "properties": {"repobilityId": 410959, "scanner": "foundry_dataset", "fingerprint": "ec860d1b14583d7f7a2c13167dced8af3f2d4a84d7fc3dbb55320799eb270262", "category": "quality", "severity": "high", "confidence": 0.76, "triageState": "open", "verdict": "needs_review", "isResolved": false, "reason": "Imported from mined Foundry/Fable5 evidence with real GitHub/source provenance. Review source_id before acting.", "evidence": {"meta": {"kind": "graph_query_record", "title": "Schema, UI, and API mismatch", "intent": "Assumption-check examples for data-path consistency across layers.", "labels": {"bug_fix": 2, "api_or_backend": 3, "schema_or_data": 1, "deployment_env_gap": 1, "dependency_or_build": 2, "security_or_secrets": 3, "security_auth_secret": 1, "claimed_resolved_unverified": 4, "issue_or_pull_request_thread": 1, "human_reported_issue_then_fix_attempt": 2, "thread_has_human_issue_and_fix_context": 2}, "source": "graph_query_export", "motif_id": "schema_ui_api_mismatch", "outcomes": {"claimed_resolved_unverified": 8}, "polarity": "bad", "query_id": "schema_ui_api_mismatch", "severity": "high", "ci_labels": {}, "synthetic": false, "edge_count": 46, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 2, "thread_has_comment": 2, "thread_touches_file": 6, "chain_has_link_quality": 4, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "issue_chain_touches_file": 6, "thread_has_comment_chain": 2, "comment_chain_links_commit": 6, "comment_chain_touches_file": 12, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 2}, "node_count": 23, "node_types": {"repo": 1, "commit": 5, "thread": 1, "comment": 2, "pr_file": 6, "fix_outcome": 1, "issue_chain": 1, "link_quality": 4, "comment_chain": 2}, "query_type": "motif_query", "thread_key": "qwertyBB12/medikah-chat-frontend#3", "issue_number": "3", "quality_tiers": {"high_confidence": 3, "weak_supervision": 1}, "repo_full_name": "qwertyBB12/medikah-chat-frontend", "training_usage": "assumption_check", "source_motif_id": "graph-pattern-motif-thread-605697f86cf6b995", "graph_gold_label": "supported_by_high_confidence_link", "changed_file_labels": {"api_or_backend": 15, "schema_or_data": 5, "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: supported_by_high_confidence_link\nRepo: qwertyBB12/medikah-chat-frontend\nThread: qwertyBB12/medikah-chat-frontend#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: qwertyBB12/medikah-chat-frontend\nThread: qwertyBB12/medikah-chat-frontend#3\nGraph gold label: supported_by_high_confidence_link\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: qwertyBB12/medikah-chat-frontend#3\nRepo: qwertyBB12/medikah-chat-frontend\nIssue/PR number: 3\nGraph consistency label: supported_by_high_confidence_link\nNodes: 23\nEdges: 46\nNode types: {'pr_file': 6, 'commit': 5, 'link_quality': 4, 'comment': 2, 'comment_chain': 2, 'thread': 1, 'repo': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'comment_chain_touches_file': 12, 'thread_touches_file': 6, 'comment_chain_links_commit': 6, 'issue_chain_touches_file': 6, 'chain_has_link_quality': 4, 'thread_has_comment': 2, 'thread_has_comment_chain': 2, 'comment_has_chain': 2, 'issue_chain_has_comment_chain': 2, 'repo_has_thread': 1, 'thread_has_issue_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'claimed_resolved_unverified': 4, 'api_or_backend': 3, 'security_or_secrets': 3, 'dependency_or_build': 2, 'human_reported_issue_then_fix_attempt': 2, 'bug_fix': 2, 'thread_has_human_issue_and_fix_context': 2, 'issue_or_pull_request_thread': 1, 'security_auth_secret': 1, 'deployment_env_gap': 1, 'schema_or_data': 1}\nOutcomes: {'claimed_resolved_unverified': 8}\nQuality tiers: {'high_confidence': 3, 'weak_supervision': 1}\nCI labels: {}\nCurriculum targets:\n- Create schema-to-API-to-UI consistency tasks with migrations and tests.\n- Teach models to verify persistence, route contracts, and UI state together.\nAssumption checks:\n- Do schema changes have matching API and UI handling?\n- Are migrations and tests present for the data path?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/qwertyBB12/medikah-chat-frontend", "source_id": "graph-query-motif_query-d2508f5ea3c50ac5", "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": "qwertyBB12/medikah-chat-frontend", "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: qwertyBB12/medikah-chat-frontend"}, "properties": {"repobilityId": 410958, "scanner": "foundry_dataset", "fingerprint": "10251102b4c8782478d6b565b0127e963ef1cdb5fe9148bcd9ad22ca55b5fc74", "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": {"keys": ["source_or_other", "bug_fix", "claimed_resolved_unverified", "human_reported_issue_then_fix_attempt", "comment_has_related_commit_context", "ambiguous_needs_more_evidence", "blueprint_human_gap_disagreement", "ui_or_frontend", "runtime_failure", "security_auth_secret", "ui_workflow_gap", "data_schema", "thread_has_human_issue_and_fix_context", "issue_or_pull_request_thread", "data_schema_persistence", "deployment_env_gap", "api_integration_gap", "api_or_backend", "schema_or_data", "commit_general", "human_reported_issue_then_verified_fix_attempt", "verification_or_tests", "claimed_resolved_with_verification_signal", "mostly follows blueprint"], "count": 24, "_omitted": "large_dict"}, "source": "graph_query_export", "motif_id": "schema_ui_api_mismatch", "outcomes": {"claimed_resolved_unverified": 12, "ambiguous_needs_more_evidence": 8, "claimed_resolved_with_verification_signal": 2}, "polarity": "bad", "query_id": "schema_ui_api_mismatch", "severity": "high", "ci_labels": {}, "synthetic": false, "edge_count": 226, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 9, "thread_has_comment": 6, "thread_touches_file": 12, "thread_has_pr_review": 3, "alignment_uses_comment": 4, "alignment_uses_finding": 4, "chain_has_link_quality": 15, "comment_aligns_finding": 4, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "issue_chain_touches_file": 12, "thread_has_comment_chain": 9, "comment_chain_links_commit": 27, "comment_chain_touches_file": 108, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 9}, "node_count": 65, "node_types": {"repo": 1, "commit": 11, "thread": 1, "comment": 6, "pr_file": 12, "alignment": 4, "pr_review": 3, "fix_outcome": 1, "issue_chain": 1, "link_quality": 15, "comment_chain": 9, "blueprint_finding": 1}, "query_type": "motif_query", "thread_key": "qwertyBB12/medikah-chat-frontend#1", "issue_number": "1", "quality_tiers": {"assumption_check": 4, "weak_supervision": 11}, "repo_full_name": "qwertyBB12/medikah-chat-frontend", "training_usage": "assumption_check", "source_motif_id": "graph-pattern-motif-thread-017899356b93bead", "graph_gold_label": "supported_by_verification_signal", "changed_file_labels": {"api_or_backend": 12, "schema_or_data": 12, "ui_or_frontend": 36, "source_or_other": 84}}, "text": "Graph query export: Schema, UI, and API mismatch\nQuery id: schema_ui_api_mismatch\nQuery type: motif_query\nIntent: Assumption-check examples for data-path consistency across layers.\nMotif: schema_ui_api_mismatch\nTraining usage: assumption_check\nGraph gold label: supported_by_verification_signal\nRepo: qwertyBB12/medikah-chat-frontend\nThread: qwertyBB12/medikah-chat-frontend#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: qwertyBB12/medikah-chat-frontend\nThread: qwertyBB12/medikah-chat-frontend#1\nGraph gold label: supported_by_verification_signal\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: qwertyBB12/medikah-chat-frontend#1\nRepo: qwertyBB12/medikah-chat-frontend\nIssue/PR number: 1\nGraph consistency label: supported_by_verification_signal\nNodes: 65\nEdges: 226\nNode types: {'link_quality': 15, 'pr_file': 12, 'commit': 11, 'comment_chain': 9, 'comment': 6, 'alignment': 4, 'pr_review': 3, 'thread': 1, 'repo': 1, 'issue_chain': 1, 'fix_outcome': 1, 'blueprint_finding': 1}\nEdge types: {'comment_chain_touches_file': 108, 'comment_chain_links_commit': 27, 'chain_has_link_quality': 15, 'thread_touches_file': 12, 'issue_chain_touches_file': 12, 'thread_has_comment_chain': 9, 'comment_has_chain': 9, 'issue_chain_has_comment_chain': 9, 'thread_has_comment': 6, 'alignment_uses_comment': 4, 'alignment_uses_finding': 4, 'comment_aligns_finding': 4, 'thread_has_pr_review': 3, 'repo_has_thread': 1, 'thread_has_issue_chain': 1, 'thread_has_fix_outcome': 1}\nLabels: {'source_or_other': 7, 'bug_fix': 7, 'claimed_resolved_unverified': 6, 'human_reported_issue_then_fix_attempt': 4, 'comment_has_related_commit_context': 4, 'ambiguous_needs_more_evidence': 4, 'blueprint_human_gap_disagreement': 4, 'ui_or_frontend': 3, 'runtime_failure': 2, 'security_auth_secret': 2, 'ui_workflow_gap': 2, 'data_schema': 2, 'thread_has_human_issue_and_fix_context': 2, 'issue_or_pull_request_thread': 1, 'data_schema_persistence': 1, 'deployment_env_gap': 1}\nOutcomes: {'claimed_resolved_unverified': 12, 'ambiguous_needs_more_evidence': 8, 'claimed_resolved_with_verification_signal': 2}\nQuality tiers: {'weak_supervision': 11, 'assumption_check': 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/qwertyBB12/medikah-chat-frontend", "source_id": "graph-query-motif_query-c7cf10045c94bcc6", "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": "qwertyBB12/medikah-chat-frontend", "source_dataset": "graph_queries/schema_ui_api_mismatch", "training_usage": "assumption_check"}}}, {"ruleId": "foundry_auth_guardrail_gap", "level": "error", "message": {"text": "Foundry mined security auth guardrail gaps: qwertyBB12/medikah-chat-frontend"}, "properties": {"repobilityId": 414476, "scanner": "foundry_dataset", "fingerprint": "0ccad681d96bfe8447e363a4cfef0c1c63f3a528202f7513897c14f5cfd60c02", "category": "auth", "severity": "critical", "confidence": 0.78, "triageState": "open", "verdict": "needs_review", "isResolved": false, "reason": "Imported from mined Foundry/Fable5 evidence with real GitHub/source provenance. Review source_id before acting.", "evidence": {"meta": {"kind": "graph_query_record", "title": "Security/auth changes without enough guardrails", "intent": "Assumption-check security/auth examples requiring stronger tests or CI.", "labels": {"bug_fix": 2, "api_or_backend": 3, "schema_or_data": 1, "deployment_env_gap": 1, "dependency_or_build": 2, "security_or_secrets": 3, "security_auth_secret": 1, "claimed_resolved_unverified": 4, "issue_or_pull_request_thread": 1, "human_reported_issue_then_fix_attempt": 2, "thread_has_human_issue_and_fix_context": 2}, "source": "graph_query_export", "motif_id": "security_auth_without_guardrails", "outcomes": {"claimed_resolved_unverified": 8}, "polarity": "bad", "query_id": "security_auth_guardrail_gaps", "severity": "critical", "ci_labels": {}, "synthetic": false, "edge_count": 46, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 2, "thread_has_comment": 2, "thread_touches_file": 6, "chain_has_link_quality": 4, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "issue_chain_touches_file": 6, "thread_has_comment_chain": 2, "comment_chain_links_commit": 6, "comment_chain_touches_file": 12, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 2}, "node_count": 23, "node_types": {"repo": 1, "commit": 5, "thread": 1, "comment": 2, "pr_file": 6, "fix_outcome": 1, "issue_chain": 1, "link_quality": 4, "comment_chain": 2}, "query_type": "motif_query", "thread_key": "qwertyBB12/medikah-chat-frontend#3", "issue_number": "3", "quality_tiers": {"high_confidence": 3, "weak_supervision": 1}, "repo_full_name": "qwertyBB12/medikah-chat-frontend", "training_usage": "assumption_check", "source_motif_id": "graph-pattern-motif-thread-80ba19461abcaa8f", "graph_gold_label": "supported_by_high_confidence_link", "changed_file_labels": {"api_or_backend": 15, "schema_or_data": 5, "dependency_or_build": 10}}, "text": "Graph query export: Security/auth changes without enough guardrails\nQuery id: security_auth_guardrail_gaps\nQuery type: motif_query\nIntent: Assumption-check security/auth examples requiring stronger tests or CI.\nMotif: security_auth_without_guardrails\nTraining usage: assumption_check\nGraph gold label: supported_by_high_confidence_link\nRepo: qwertyBB12/medikah-chat-frontend\nThread: qwertyBB12/medikah-chat-frontend#3\nEvidence:\nGraph motif: Security/auth change without enough guardrails\nMotif id: security_auth_without_guardrails\nPolarity: bad\nTraining usage: assumption_check\nSeverity: critical\nRepo: qwertyBB12/medikah-chat-frontend\nThread: qwertyBB12/medikah-chat-frontend#3\nGraph gold label: supported_by_high_confidence_link\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: qwertyBB12/medikah-chat-frontend#3\nRepo: qwertyBB12/medikah-chat-frontend\nIssue/PR number: 3\nGraph consistency label: supported_by_high_confidence_link\nNodes: 23\nEdges: 46\nNode types: {'pr_file': 6, 'commit': 5, 'link_quality': 4, 'comment': 2, 'comment_chain': 2, 'thread': 1, 'repo': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'comment_chain_touches_file': 12, 'thread_touches_file': 6, 'comment_chain_links_commit': 6, 'issue_chain_touches_file': 6, 'chain_has_link_quality': 4, 'thread_has_comment': 2, 'thread_has_comment_chain': 2, 'comment_has_chain': 2, 'issue_chain_has_comment_chain': 2, 'repo_has_thread': 1, 'thread_has_issue_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'claimed_resolved_unverified': 4, 'api_or_backend': 3, 'security_or_secrets': 3, 'dependency_or_build': 2, 'human_reported_issue_then_fix_attempt': 2, 'bug_fix': 2, 'thread_has_human_issue_and_fix_context': 2, 'issue_or_pull_request_thread': 1, 'security_auth_secret': 1, 'deployment_env_gap': 1, 'schema_or_data': 1}\nOutcomes: {'claimed_resolved_unverified': 8}\nQuality tiers: {'high_confidence': 3, 'weak_supervision': 1}\nCI labels: {}\nCurriculum targets:\n- Train auth boundary repair with tests, permission matrices, and secret-handling checks.\n- Keep risky auth changes separate from ordinary bug-fix examples.\nAssumption checks:\n- Are auth/permission paths covered by tests?\n- Are secrets, CORS, or access rules verified rather than summarized?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/qwertyBB12/medikah-chat-frontend", "source_id": "graph-query-motif_query-4c974ef97814d678", "synthetic": false, "gold_label": "", "graph_label": "", "source_path": "/data/distillate/foundry_data/graph_queries/security_auth_guardrail_gaps/shard-0.jsonl", "bundle_label": "", "priority_band": "", "priority_score": 0, "repo_full_name": "qwertyBB12/medikah-chat-frontend", "source_dataset": "graph_queries/security_auth_guardrail_gaps", "training_usage": "assumption_check"}}}, {"ruleId": "foundry_auth_guardrail_gap", "level": "error", "message": {"text": "Foundry mined security auth guardrail gaps: qwertyBB12/medikah-chat-frontend"}, "properties": {"repobilityId": 414475, "scanner": "foundry_dataset", "fingerprint": "d2427e1000e8f0181109055a8447737acaa3c995d90f85f9b824f8f2b0aecef7", "category": "auth", "severity": "critical", "confidence": 0.78, "triageState": "open", "verdict": "needs_review", "isResolved": false, "reason": "Imported from mined Foundry/Fable5 evidence with real GitHub/source provenance. Review source_id before acting.", "evidence": {"meta": {"kind": "graph_query_record", "title": "Security/auth changes without enough guardrails", "intent": "Assumption-check security/auth examples requiring stronger tests or CI.", "labels": {"bug_fix": 5, "ui_or_frontend": 3, "source_or_other": 1, "deployment_env_gap": 1, "api_integration_gap": 1, "security_auth_secret": 1, "mostly follows blueprint": 1, "claimed_resolved_unverified": 5, "issue_or_pull_request_thread": 1, "blueprint_human_gap_disagreement": 1, "human_reported_issue_then_fix_attempt": 3, "thread_has_human_issue_and_fix_context": 2}, "source": "graph_query_export", "motif_id": "security_auth_without_guardrails", "outcomes": {"claimed_resolved_unverified": 10}, "polarity": "bad", "query_id": "security_auth_guardrail_gaps", "severity": "critical", "ci_labels": {}, "synthetic": false, "edge_count": 53, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 3, "thread_has_comment": 2, "thread_touches_file": 4, "thread_has_pr_review": 1, "alignment_uses_comment": 1, "alignment_uses_finding": 1, "chain_has_link_quality": 6, "comment_aligns_finding": 1, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "issue_chain_touches_file": 4, "thread_has_comment_chain": 3, "comment_chain_links_commit": 8, "comment_chain_touches_file": 12, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 3}, "node_count": 27, "node_types": {"repo": 1, "commit": 5, "thread": 1, "comment": 2, "pr_file": 4, "alignment": 1, "pr_review": 1, "fix_outcome": 1, "issue_chain": 1, "link_quality": 6, "comment_chain": 3, "blueprint_finding": 1}, "query_type": "motif_query", "thread_key": "qwertyBB12/medikah-chat-frontend#2", "issue_number": "2", "quality_tiers": {"high_confidence": 4, "assumption_check": 1, "weak_supervision": 1}, "repo_full_name": "qwertyBB12/medikah-chat-frontend", "training_usage": "assumption_check", "source_motif_id": "graph-pattern-motif-thread-bb99b4ed35929b3e", "graph_gold_label": "supported_by_high_confidence_link", "changed_file_labels": {"ui_or_frontend": 18, "source_or_other": 6}}, "text": "Graph query export: Security/auth changes without enough guardrails\nQuery id: security_auth_guardrail_gaps\nQuery type: motif_query\nIntent: Assumption-check security/auth examples requiring stronger tests or CI.\nMotif: security_auth_without_guardrails\nTraining usage: assumption_check\nGraph gold label: supported_by_high_confidence_link\nRepo: qwertyBB12/medikah-chat-frontend\nThread: qwertyBB12/medikah-chat-frontend#2\nEvidence:\nGraph motif: Security/auth change without enough guardrails\nMotif id: security_auth_without_guardrails\nPolarity: bad\nTraining usage: assumption_check\nSeverity: critical\nRepo: qwertyBB12/medikah-chat-frontend\nThread: qwertyBB12/medikah-chat-frontend#2\nGraph gold label: supported_by_high_confidence_link\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: qwertyBB12/medikah-chat-frontend#2\nRepo: qwertyBB12/medikah-chat-frontend\nIssue/PR number: 2\nGraph consistency label: supported_by_high_confidence_link\nNodes: 27\nEdges: 53\nNode types: {'link_quality': 6, 'commit': 5, 'pr_file': 4, 'comment_chain': 3, 'comment': 2, 'thread': 1, 'repo': 1, 'pr_review': 1, 'issue_chain': 1, 'fix_outcome': 1, 'alignment': 1, 'blueprint_finding': 1}\nEdge types: {'comment_chain_touches_file': 12, 'comment_chain_links_commit': 8, 'chain_has_link_quality': 6, 'thread_touches_file': 4, 'issue_chain_touches_file': 4, 'thread_has_comment_chain': 3, 'comment_has_chain': 3, 'issue_chain_has_comment_chain': 3, 'thread_has_comment': 2, 'repo_has_thread': 1, 'thread_has_pr_review': 1, 'thread_has_issue_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1, 'alignment_uses_comment': 1, 'alignment_uses_finding': 1}\nLabels: {'bug_fix': 5, 'claimed_resolved_unverified': 5, 'ui_or_frontend': 3, 'human_reported_issue_then_fix_attempt': 3, 'thread_has_human_issue_and_fix_context': 2, 'issue_or_pull_request_thread': 1, 'security_auth_secret': 1, 'deployment_env_gap': 1, 'api_integration_gap': 1, 'source_or_other': 1, 'blueprint_human_gap_disagreement': 1, 'mostly follows blueprint': 1}\nOutcomes: {'claimed_resolved_unverified': 10}\nQuality tiers: {'high_confidence': 4, 'weak_supervision': 1, 'assumption_check': 1}\nCI labels: {}\nCurriculum targets:\n- Train auth boundary repair with tests, permission matrices, and secret-handling checks.\n- Keep risky auth changes separate from ordinary bug-fix examples.\nAssumption checks:\n- Are auth/permission paths covered by tests?\n- Are secrets, CORS, or access rules verified rather than summarized?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/qwertyBB12/medikah-chat-frontend", "source_id": "graph-query-motif_query-229bb6bbddde8367", "synthetic": false, "gold_label": "", "graph_label": "", "source_path": "/data/distillate/foundry_data/graph_queries/security_auth_guardrail_gaps/shard-0.jsonl", "bundle_label": "", "priority_band": "", "priority_score": 0, "repo_full_name": "qwertyBB12/medikah-chat-frontend", "source_dataset": "graph_queries/security_auth_guardrail_gaps", "training_usage": "assumption_check"}}}, {"ruleId": "foundry_auth_guardrail_gap", "level": "error", "message": {"text": "Foundry mined security auth guardrail gaps: qwertyBB12/medikah-chat-frontend"}, "properties": {"repobilityId": 414474, "scanner": "foundry_dataset", "fingerprint": "35f4757a64124b0b96ff04f366203a87ba46962cdf38804a290a8e9efd759a34", "category": "auth", "severity": "critical", "confidence": 0.78, "triageState": "open", "verdict": "needs_review", "isResolved": false, "reason": "Imported from mined Foundry/Fable5 evidence with real GitHub/source provenance. Review source_id before acting.", "evidence": {"meta": {"kind": "graph_query_record", "title": "Security/auth changes without enough guardrails", "intent": "Assumption-check security/auth examples requiring stronger tests or CI.", "labels": {"keys": ["source_or_other", "bug_fix", "claimed_resolved_unverified", "human_reported_issue_then_fix_attempt", "comment_has_related_commit_context", "ambiguous_needs_more_evidence", "blueprint_human_gap_disagreement", "ui_or_frontend", "runtime_failure", "security_auth_secret", "ui_workflow_gap", "data_schema", "thread_has_human_issue_and_fix_context", "issue_or_pull_request_thread", "data_schema_persistence", "deployment_env_gap", "api_integration_gap", "api_or_backend", "schema_or_data", "commit_general", "human_reported_issue_then_verified_fix_attempt", "verification_or_tests", "claimed_resolved_with_verification_signal", "mostly follows blueprint"], "count": 24, "_omitted": "large_dict"}, "source": "graph_query_export", "motif_id": "security_auth_without_guardrails", "outcomes": {"claimed_resolved_unverified": 12, "ambiguous_needs_more_evidence": 8, "claimed_resolved_with_verification_signal": 2}, "polarity": "bad", "query_id": "security_auth_guardrail_gaps", "severity": "critical", "ci_labels": {}, "synthetic": false, "edge_count": 226, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 9, "thread_has_comment": 6, "thread_touches_file": 12, "thread_has_pr_review": 3, "alignment_uses_comment": 4, "alignment_uses_finding": 4, "chain_has_link_quality": 15, "comment_aligns_finding": 4, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "issue_chain_touches_file": 12, "thread_has_comment_chain": 9, "comment_chain_links_commit": 27, "comment_chain_touches_file": 108, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 9}, "node_count": 65, "node_types": {"repo": 1, "commit": 11, "thread": 1, "comment": 6, "pr_file": 12, "alignment": 4, "pr_review": 3, "fix_outcome": 1, "issue_chain": 1, "link_quality": 15, "comment_chain": 9, "blueprint_finding": 1}, "query_type": "motif_query", "thread_key": "qwertyBB12/medikah-chat-frontend#1", "issue_number": "1", "quality_tiers": {"assumption_check": 4, "weak_supervision": 11}, "repo_full_name": "qwertyBB12/medikah-chat-frontend", "training_usage": "assumption_check", "source_motif_id": "graph-pattern-motif-thread-5f4697da7a7bb367", "graph_gold_label": "supported_by_verification_signal", "changed_file_labels": {"api_or_backend": 12, "schema_or_data": 12, "ui_or_frontend": 36, "source_or_other": 84}}, "text": "Graph query export: Security/auth changes without enough guardrails\nQuery id: security_auth_guardrail_gaps\nQuery type: motif_query\nIntent: Assumption-check security/auth examples requiring stronger tests or CI.\nMotif: security_auth_without_guardrails\nTraining usage: assumption_check\nGraph gold label: supported_by_verification_signal\nRepo: qwertyBB12/medikah-chat-frontend\nThread: qwertyBB12/medikah-chat-frontend#1\nEvidence:\nGraph motif: Security/auth change without enough guardrails\nMotif id: security_auth_without_guardrails\nPolarity: bad\nTraining usage: assumption_check\nSeverity: critical\nRepo: qwertyBB12/medikah-chat-frontend\nThread: qwertyBB12/medikah-chat-frontend#1\nGraph gold label: supported_by_verification_signal\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: qwertyBB12/medikah-chat-frontend#1\nRepo: qwertyBB12/medikah-chat-frontend\nIssue/PR number: 1\nGraph consistency label: supported_by_verification_signal\nNodes: 65\nEdges: 226\nNode types: {'link_quality': 15, 'pr_file': 12, 'commit': 11, 'comment_chain': 9, 'comment': 6, 'alignment': 4, 'pr_review': 3, 'thread': 1, 'repo': 1, 'issue_chain': 1, 'fix_outcome': 1, 'blueprint_finding': 1}\nEdge types: {'comment_chain_touches_file': 108, 'comment_chain_links_commit': 27, 'chain_has_link_quality': 15, 'thread_touches_file': 12, 'issue_chain_touches_file': 12, 'thread_has_comment_chain': 9, 'comment_has_chain': 9, 'issue_chain_has_comment_chain': 9, 'thread_has_comment': 6, 'alignment_uses_comment': 4, 'alignment_uses_finding': 4, 'comment_aligns_finding': 4, 'thread_has_pr_review': 3, 'repo_has_thread': 1, 'thread_has_issue_chain': 1, 'thread_has_fix_outcome': 1}\nLabels: {'source_or_other': 7, 'bug_fix': 7, 'claimed_resolved_unverified': 6, 'human_reported_issue_then_fix_attempt': 4, 'comment_has_related_commit_context': 4, 'ambiguous_needs_more_evidence': 4, 'blueprint_human_gap_disagreement': 4, 'ui_or_frontend': 3, 'runtime_failure': 2, 'security_auth_secret': 2, 'ui_workflow_gap': 2, 'data_schema': 2, 'thread_has_human_issue_and_fix_context': 2, 'issue_or_pull_request_thread': 1, 'data_schema_persistence': 1, 'deployment_env_gap': 1}\nOutcomes: {'claimed_resolved_unverified': 12, 'ambiguous_needs_more_evidence': 8, 'claimed_resolved_with_verification_signal': 2}\nQuality tiers: {'weak_supervision': 11, 'assumption_check': 4}\nCI labels: {}\nCurriculum targets:\n- Train auth boundary repair with tests, permission matrices, and secret-handling checks.\n- Keep risky auth changes separate from ordinary bug-fix examples.\nAssumption checks:\n- Are auth/permission paths covered by tests?\n- Are secrets, CORS, or access rules verified rather than summarized?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/qwertyBB12/medikah-chat-frontend", "source_id": "graph-query-motif_query-ca19fb65eff00cce", "synthetic": false, "gold_label": "", "graph_label": "", "source_path": "/data/distillate/foundry_data/graph_queries/security_auth_guardrail_gaps/shard-0.jsonl", "bundle_label": "", "priority_band": "", "priority_score": 0, "repo_full_name": "qwertyBB12/medikah-chat-frontend", "source_dataset": "graph_queries/security_auth_guardrail_gaps", "training_usage": "assumption_check"}}}, {"ruleId": "scanner-bead75b0f9233e05", "level": "none", "message": {"text": "No API endpoints detected"}, "properties": {"repobilityId": "0f8bb852027c38f8", "scanner": "scanner-primary", "fingerprint": "bead75b0f9233e05", "layer": "api", "severity": "info", "confidence": 1.0, "tags": ["coverage"]}}, {"ruleId": "scanner-1e58a4af1c8a886d", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 next-sitemap.config.js:79"}, "properties": {"repobilityId": "663fa57760496816", "scanner": "scanner-primary", "fingerprint": "1e58a4af1c8a886d", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b558306b9345665f", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/audit-patient-portal-tokens.ts:354"}, "properties": {"repobilityId": "214ad65651efbbbc", "scanner": "scanner-primary", "fingerprint": "b558306b9345665f", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-3d8afa83e707beef", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/audit-fonts.test.ts:111"}, "properties": {"repobilityId": "72a1105f22cb9f51", "scanner": "scanner-primary", "fingerprint": "3d8afa83e707beef", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-460140bab33a0398", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/build-sogo-wave.ts:79"}, "properties": {"repobilityId": "9e38f0b10f8cc98e", "scanner": "scanner-primary", "fingerprint": "460140bab33a0398", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-5b101473ec593a1e", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/build-design-tokens-cjs.ts:17"}, "properties": {"repobilityId": "6300df0778b18b11", "scanner": "scanner-primary", "fingerprint": "5b101473ec593a1e", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-564443aaa5352b08", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/seed-phase16-e2e.ts:59"}, "properties": {"repobilityId": "fc505821a8efbada", "scanner": "scanner-primary", "fingerprint": "564443aaa5352b08", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-2aa22045db6e42a8", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 components/PublicationSelector.tsx:157"}, "properties": {"repobilityId": "2445ded7f0e7e7f8", "scanner": "scanner-primary", "fingerprint": "2aa22045db6e42a8", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-6ba60af907ff1b33", "level": "note", "message": {"text": "\"active\" state uses light bg in a dark theme \u2014 components/admin/AdminSidebar.tsx:33"}, "properties": {"repobilityId": "23815eae5caf9d84", "scanner": "scanner-primary", "fingerprint": "6ba60af907ff1b33", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.active-light-bg"]}}, {"ruleId": "scanner-5c414e61484ede99", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 components/admin/ReviewCard.tsx:62"}, "properties": {"repobilityId": "a546a64902cc3104", "scanner": "scanner-primary", "fingerprint": "5c414e61484ede99", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-41e70d48ce7c096c", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 components/admin/AdminLayout.tsx:47"}, "properties": {"repobilityId": "91aa31096bbc819e", "scanner": "scanner-primary", "fingerprint": "41e70d48ce7c096c", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-d1701ca90dfe076a", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 components/physician/InquiryList.tsx:281"}, "properties": {"repobilityId": "8535d96ec53e3b66", "scanner": "scanner-primary", "fingerprint": "d1701ca90dfe076a", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-0f6dbcdb071e9485", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 components/physician/ProfileOverview.tsx:107"}, "properties": {"repobilityId": "dda0904813ea71db", "scanner": "scanner-primary", "fingerprint": "0f6dbcdb071e9485", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-03f0be594e76fc1e", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 components/physician/workspace/ThemedShell.tsx:96"}, "properties": {"repobilityId": "6c99ceec704d1706", "scanner": "scanner-primary", "fingerprint": "03f0be594e76fc1e", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-9e0108bd4954eb72", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 components/physician/workspace/sections/TryProContactForm.tsx:12"}, "properties": {"repobilityId": "b269dac0a35ebe61", "scanner": "scanner-primary", "fingerprint": "9e0108bd4954eb72", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-6f490d20ec70668f", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 components/physician/workspace/upgrade/SATBlockedNotice.tsx:41"}, "properties": {"repobilityId": "ac44b0f3c1223a53", "scanner": "scanner-primary", "fingerprint": "6f490d20ec70668f", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-8a4a6edb38e974ce", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 components/physician/profile/ProfileLayout.tsx:59"}, "properties": {"repobilityId": "d1695585c032bcc8", "scanner": "scanner-primary", "fingerprint": "8a4a6edb38e974ce", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-6baecae338b735ff", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 components/physician/credentials/NPIForm.tsx:6"}, "properties": {"repobilityId": "884e3714266070a4", "scanner": "scanner-primary", "fingerprint": "6baecae338b735ff", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-fa7943ac5c80084a", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 lib/fsmbCheck.ts:58"}, "properties": {"repobilityId": "072bbe1f790d2e80", "scanner": "scanner-primary", "fingerprint": "fa7943ac5c80084a", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-a8ee7aa07aeee5d1", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 pages/_document.tsx:33"}, "properties": {"repobilityId": "6b185dcf8cd88f26", "scanner": "scanner-primary", "fingerprint": "a8ee7aa07aeee5d1", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-404a1e44ab30a6c9", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 pages/index.tsx:43"}, "properties": {"repobilityId": "db23fe894d5b6263", "scanner": "scanner-primary", "fingerprint": "404a1e44ab30a6c9", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-02b8be7311227172", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 pages/api/admin/physicians.ts:13"}, "properties": {"repobilityId": "2dbf234fb91cddca", "scanner": "scanner-primary", "fingerprint": "02b8be7311227172", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-9944a9eef3119ccb", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 pages/api/physicians/create.ts:115"}, "properties": {"repobilityId": "870b13a316e7bb90", "scanner": "scanner-primary", "fingerprint": "9944a9eef3119ccb", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-1fd4a663ef84d610", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 pages/api/physicians/[id]/inquiries.ts:18"}, "properties": {"repobilityId": "e7ca9f9d5f3e183b", "scanner": "scanner-primary", "fingerprint": "1fd4a663ef84d610", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-b2a81e791e55dced", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 pages/admin/physicians/[id].tsx:616"}, "properties": {"repobilityId": "a456e80335c0592c", "scanner": "scanner-primary", "fingerprint": "b2a81e791e55dced", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-c7f1b7734b85df3f", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 e2e/homepage-tokens.spec.ts:65"}, "properties": {"repobilityId": "473cf2b44337924e", "scanner": "scanner-primary", "fingerprint": "c7f1b7734b85df3f", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-1441fa2a1615f422", "level": "warning", "message": {"text": "Privileged port 993 in use"}, "properties": {"repobilityId": "a36e56a26353e9ee", "scanner": "scanner-primary", "fingerprint": "1441fa2a1615f422", "layer": "network", "severity": "medium", "confidence": 1.0, "tags": ["security", "ports"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "lib/auth/mailcowImapProvider.ts"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-bf5277dda444ed2d", "level": "warning", "message": {"text": "Privileged port 47 in use"}, "properties": {"repobilityId": "986e85543d70890d", "scanner": "scanner-primary", "fingerprint": "bf5277dda444ed2d", "layer": "network", "severity": "medium", "confidence": 1.0, "tags": ["security", "ports"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/production-smoke.yml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-6fc254049f7385df", "level": "warning", "message": {"text": "Privileged port 17 in use"}, "properties": {"repobilityId": "0bf38fb8f89ec589", "scanner": "scanner-primary", "fingerprint": "6fc254049f7385df", "layer": "network", "severity": "medium", "confidence": 1.0, "tags": ["security", "ports"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/supabase-keepalive.yml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-89ef4ce57cc4506f", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/audit-fonts.test.ts:20"}, "properties": {"repobilityId": "ac67d499ad5e57f0", "scanner": "scanner-primary", "fingerprint": "89ef4ce57cc4506f", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/audit-fonts.test.ts"}, "region": {"startLine": 20}}}]}, {"ruleId": "scanner-84d97920cdf43beb", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/build-sogo-wave.test.ts:14"}, "properties": {"repobilityId": "1d7d773919aba726", "scanner": "scanner-primary", "fingerprint": "84d97920cdf43beb", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/build-sogo-wave.test.ts"}, "region": {"startLine": 14}}}]}, {"ruleId": "scanner-b5ecbeaa53034d66", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in components/physician/workspace/ThemedShell.tsx:96"}, "properties": {"repobilityId": "a288afab4a104baa", "scanner": "scanner-primary", "fingerprint": "b5ecbeaa53034d66", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "components/physician/workspace/ThemedShell.tsx"}, "region": {"startLine": 96}}}]}, {"ruleId": "scanner-5cd424db62a98fb2", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in components/physician/profile/ProfileLayout.tsx:59"}, "properties": {"repobilityId": "bc66cd5e18255d10", "scanner": "scanner-primary", "fingerprint": "5cd424db62a98fb2", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "components/physician/profile/ProfileLayout.tsx"}, "region": {"startLine": 59}}}]}, {"ruleId": "scanner-ff187b70c22b740e", "level": "error", "message": {"text": "Possible secret in lib/practikahWorkspaceContent.ts"}, "properties": {"repobilityId": "72a6c164cdf6b146", "scanner": "scanner-primary", "fingerprint": "ff187b70c22b740e", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "lib/practikahWorkspaceContent.ts"}, "region": {"startLine": 529}}}]}, {"ruleId": "scanner-ff187b70c22b740e", "level": "error", "message": {"text": "Possible secret in lib/practikahWorkspaceContent.ts"}, "properties": {"repobilityId": "72a6c164cdf6b146", "scanner": "scanner-primary", "fingerprint": "ff187b70c22b740e", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "lib/practikahWorkspaceContent.ts"}, "region": {"startLine": 857}}}]}, {"ruleId": "scanner-ff187b70c22b740e", "level": "error", "message": {"text": "Possible secret in lib/practikahWorkspaceContent.ts"}, "properties": {"repobilityId": "72a6c164cdf6b146", "scanner": "scanner-primary", "fingerprint": "ff187b70c22b740e", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "lib/practikahWorkspaceContent.ts"}, "region": {"startLine": 980}}}]}, {"ruleId": "scanner-ff187b70c22b740e", "level": "error", "message": {"text": "Possible secret in lib/practikahWorkspaceContent.ts"}, "properties": {"repobilityId": "72a6c164cdf6b146", "scanner": "scanner-primary", "fingerprint": "ff187b70c22b740e", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "lib/practikahWorkspaceContent.ts"}, "region": {"startLine": 1308}}}]}, {"ruleId": "scanner-cfccdd8f56696942", "level": "error", "message": {"text": "Possible secret in lib/physicianEmail.ts"}, "properties": {"repobilityId": "a636452cc72dc8a8", "scanner": "scanner-primary", "fingerprint": "cfccdd8f56696942", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "lib/physicianEmail.ts"}, "region": {"startLine": 123}}}]}, {"ruleId": "scanner-cfccdd8f56696942", "level": "error", "message": {"text": "Possible secret in lib/physicianEmail.ts"}, "properties": {"repobilityId": "a636452cc72dc8a8", "scanner": "scanner-primary", "fingerprint": "cfccdd8f56696942", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "lib/physicianEmail.ts"}, "region": {"startLine": 153}}}]}, {"ruleId": "scanner-1dc6581c5f6d042d", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in pages/_document.tsx:33"}, "properties": {"repobilityId": "08616cdc697e1af8", "scanner": "scanner-primary", "fingerprint": "1dc6581c5f6d042d", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "pages/_document.tsx"}, "region": {"startLine": 33}}}]}, {"ruleId": "scanner-148683963c0803a7", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in pages/index.tsx:43"}, "properties": {"repobilityId": "e5d1364ea6464d7b", "scanner": "scanner-primary", "fingerprint": "148683963c0803a7", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "pages/index.tsx"}, "region": {"startLine": 43}}}]}, {"ruleId": "scanner-088b1e2b7f5ecd15", "level": "note", "message": {"text": "Very large file: lib/practikahWorkspaceContent.ts (1366 lines)"}, "properties": {"repobilityId": "02bdd97e7fdcde6b", "scanner": "scanner-primary", "fingerprint": "088b1e2b7f5ecd15", "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": "5272fe8da526b68f", "scanner": "scanner-primary", "fingerprint": "141b30a41e03817b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["license", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-3ab5d313dda8e5f9", "level": "note", "message": {"text": "Debug logging residue appears in source files"}, "properties": {"repobilityId": "0b332773814ce2e2", "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": "559d4354493b5fe0", "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": "1df29f513288e163", "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": "ed60ed22427b7273", "scanner": "scanner-primary", "fingerprint": "2d0c7b7ab8f8aacf", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["placeholder", "mock-data", "critical-flow", "generated-repo-pattern"]}}, {"ruleId": "scanner-749d4bc1bd66df5f", "level": "warning", "message": {"text": "Agent instructions exist but release-hardening basics are missing"}, "properties": {"repobilityId": "f623d222d2ee4bf4", "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": "78887583b534ca71", "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": "0a25e01751dda6f6", "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": 328}}}]}, {"ruleId": "scanner-f9eb009921026953", "level": "none", "message": {"text": "Commented-code block (5 lines) in tailwind.config.js:2"}, "properties": {"repobilityId": "55476be6368b9067", "scanner": "scanner-primary", "fingerprint": "f9eb009921026953", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-271fd9d14cccfd27", "level": "none", "message": {"text": "Commented-code block (6 lines) in __tests__/mailcowImapProvider.test.ts:179"}, "properties": {"repobilityId": "91361d219c26704b", "scanner": "scanner-primary", "fingerprint": "271fd9d14cccfd27", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b233586b96bbe347", "level": "none", "message": {"text": "Commented-code block (5 lines) in __tests__/npiLookup.test.ts:14"}, "properties": {"repobilityId": "da3858c34c1b005b", "scanner": "scanner-primary", "fingerprint": "b233586b96bbe347", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-df6d0ce3a206e112", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/build-design-tokens-cjs.ts:1"}, "properties": {"repobilityId": "4b51a1bca6b228cc", "scanner": "scanner-primary", "fingerprint": "df6d0ce3a206e112", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-3447961187b84c71", "level": "none", "message": {"text": "Commented-code block (5 lines) in components/CdmxDoctorChat.tsx:7"}, "properties": {"repobilityId": "1138cebc1699d3fd", "scanner": "scanner-primary", "fingerprint": "3447961187b84c71", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-45cf9fe60fdc371d", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 components/physician/InquiryList.tsx:118"}, "properties": {"repobilityId": "809b545360041c65", "scanner": "scanner-primary", "fingerprint": "45cf9fe60fdc371d", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-a5b8322b5f669aab", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 components/physician/workspace/upgrade/DomainSearch.tsx:167"}, "properties": {"repobilityId": "961bc169d6c2a5df", "scanner": "scanner-primary", "fingerprint": "a5b8322b5f669aab", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-e3602314a23fced8", "level": "none", "message": {"text": "Commented-code block (5 lines) in app/api/og/home/route.tsx:1"}, "properties": {"repobilityId": "1fd57ca5bb3dc81c", "scanner": "scanner-primary", "fingerprint": "e3602314a23fced8", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d5fc0c63241099ec", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/og/home/route.tsx:26"}, "properties": {"repobilityId": "b6c787c927f3798d", "scanner": "scanner-primary", "fingerprint": "d5fc0c63241099ec", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-972dd017155e99f7", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/og/physician/[slug]/route.tsx:28"}, "properties": {"repobilityId": "25ede0559e3a6033", "scanner": "scanner-primary", "fingerprint": "972dd017155e99f7", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-a079a7310c7a84ef", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/og/practikah/route.tsx:25"}, "properties": {"repobilityId": "123e462f33308871", "scanner": "scanner-primary", "fingerprint": "a079a7310c7a84ef", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-1961e1c38690103a", "level": "note", "message": {"text": "Legacy-named symbol `normOld` in lib/credentialAuditService.ts:72"}, "properties": {"repobilityId": "041442e80eee6d6d", "scanner": "scanner-primary", "fingerprint": "1961e1c38690103a", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-2361f5975d0a322f", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 lib/linkedin.ts:122"}, "properties": {"repobilityId": "60ce64c7a1fa15f4", "scanner": "scanner-primary", "fingerprint": "2361f5975d0a322f", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-cac998a255c6800b", "level": "none", "message": {"text": "Commented-code block (6 lines) in lib/design-tokens.ts:15"}, "properties": {"repobilityId": "f42cd7d2d09c359c", "scanner": "scanner-primary", "fingerprint": "cac998a255c6800b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e585387df81d9d74", "level": "none", "message": {"text": "Commented-code block (5 lines) in lib/bioPolisher.ts:274"}, "properties": {"repobilityId": "37afcfc9a35aaca6", "scanner": "scanner-primary", "fingerprint": "e585387df81d9d74", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-275cd3a0961d539f", "level": "none", "message": {"text": "Commented-code block (5 lines) in lib/fonts.ts:10"}, "properties": {"repobilityId": "8f2ac12df2931f69", "scanner": "scanner-primary", "fingerprint": "275cd3a0961d539f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1e5be08d159d67e3", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 lib/proRedirectLookup.ts:46"}, "properties": {"repobilityId": "093d2ec6fbafa3bd", "scanner": "scanner-primary", "fingerprint": "1e5be08d159d67e3", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-987ae1af0a03f149", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 lib/scheduleClient.ts:28"}, "properties": {"repobilityId": "2aacd3e4977e3711", "scanner": "scanner-primary", "fingerprint": "987ae1af0a03f149", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-8f0a2d213f774463", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 lib/publications.ts:66"}, "properties": {"repobilityId": "1d7d5df6cde76321", "scanner": "scanner-primary", "fingerprint": "8f0a2d213f774463", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-a243291112c24d77", "level": "none", "message": {"text": "Commented-code block (5 lines) in lib/practikahEngagementHeuristic.ts:36"}, "properties": {"repobilityId": "3bfd0ec112e9c77e", "scanner": "scanner-primary", "fingerprint": "a243291112c24d77", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-076653f6372bc107", "level": "none", "message": {"text": "Commented-code block (6 lines) in lib/simpleRateLimit.ts:1"}, "properties": {"repobilityId": "52dfedbb791e48ae", "scanner": "scanner-primary", "fingerprint": "076653f6372bc107", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7404fbc0912e13e8", "level": "none", "message": {"text": "Commented-code block (5 lines) in lib/emailChrome.ts:1"}, "properties": {"repobilityId": "c3dbc961778151d0", "scanner": "scanner-primary", "fingerprint": "7404fbc0912e13e8", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ce4b73029c41e772", "level": "none", "message": {"text": "Commented-code block (5 lines) in lib/auth/mailcowImapProvider.ts:151"}, "properties": {"repobilityId": "6b6fd762faad471f", "scanner": "scanner-primary", "fingerprint": "ce4b73029c41e772", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2b34a5f24e0137ee", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 pages/chat.tsx:191"}, "properties": {"repobilityId": "ee1b5febe00c03dc", "scanner": "scanner-primary", "fingerprint": "2b34a5f24e0137ee", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-d014217faee0b4e8", "level": "none", "message": {"text": "Commented-code block (5 lines) in pages/cdmx.tsx:123"}, "properties": {"repobilityId": "1791c827004b83ed", "scanner": "scanner-primary", "fingerprint": "d014217faee0b4e8", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-939e88d263d9485b", "level": "none", "message": {"text": "Commented-code block (5 lines) in pages/api/auth/[...nextauth].ts:111"}, "properties": {"repobilityId": "ebadb6ab5c848a2d", "scanner": "scanner-primary", "fingerprint": "939e88d263d9485b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2a9aa2acce81c34d", "level": "none", "message": {"text": "Commented-code block (6 lines) in pages/api/auth/activate/totp-verify.ts:274"}, "properties": {"repobilityId": "c1697e131582b582", "scanner": "scanner-primary", "fingerprint": "2a9aa2acce81c34d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-851bce58f8126aab", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 pages/api/auth/activate/totp-enroll.ts:266"}, "properties": {"repobilityId": "73b113308a9c0a95", "scanner": "scanner-primary", "fingerprint": "851bce58f8126aab", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-582ac4cf0f664fae", "level": "none", "message": {"text": "Commented-code block (6 lines) in pages/api/auth/activate/send-link.ts:21"}, "properties": {"repobilityId": "47b02a11080d9626", "scanner": "scanner-primary", "fingerprint": "582ac4cf0f664fae", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f86dc18e2f57a479", "level": "none", "message": {"text": "Commented-code block (5 lines) in pages/api/admin/physicians.ts:13"}, "properties": {"repobilityId": "fd13b2dd389ac72f", "scanner": "scanner-primary", "fingerprint": "f86dc18e2f57a479", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-07efb5c9e4685c23", "level": "none", "message": {"text": "Commented-code block (7 lines) in pages/api/physicians/create.ts:29"}, "properties": {"repobilityId": "953cfb18a0885d0f", "scanner": "scanner-primary", "fingerprint": "07efb5c9e4685c23", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c3c4daf12344758a", "level": "none", "message": {"text": "Commented-code block (5 lines) in pages/api/physicians/avatar.ts:45"}, "properties": {"repobilityId": "3f5dcfd7347aa43e", "scanner": "scanner-primary", "fingerprint": "c3c4daf12344758a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b4f1b365539b54de", "level": "none", "message": {"text": "Commented-code block (6 lines) in pages/api/physicians/[id]/inquiries.ts:106"}, "properties": {"repobilityId": "a15f24886c2476c1", "scanner": "scanner-primary", "fingerprint": "b4f1b365539b54de", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-05e0684ad98a34f6", "level": "none", "message": {"text": "Commented-code block (7 lines) in pages/api/physicians/[id]/fsmb-check.ts:118"}, "properties": {"repobilityId": "4bec78e5a640e1ff", "scanner": "scanner-primary", "fingerprint": "05e0684ad98a34f6", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b459d80448638118", "level": "none", "message": {"text": "Commented-code block (6 lines) in pages/api/practikah/sso-verify.ts:107"}, "properties": {"repobilityId": "edb04a5322abaa03", "scanner": "scanner-primary", "fingerprint": "b459d80448638118", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-83eb716c3bf2b51b", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 pages/onboard/physician.tsx:101"}, "properties": {"repobilityId": "f7c56f6d8d81840b", "scanner": "scanner-primary", "fingerprint": "83eb716c3bf2b51b", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-91f86d8c9c01d46c", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 pages/admin/physicians.tsx:67"}, "properties": {"repobilityId": "231511d77daa80a6", "scanner": "scanner-primary", "fingerprint": "91f86d8c9c01d46c", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-10e9c63bea35f6cf", "level": "none", "message": {"text": "Commented-code block (9 lines) in pages/admin/index.tsx:93"}, "properties": {"repobilityId": "566619d8e31bfb57", "scanner": "scanner-primary", "fingerprint": "10e9c63bea35f6cf", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b1b17917bf5f2cf1", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 pages/admin/physicians/[id].tsx:310"}, "properties": {"repobilityId": "eee1dc7d1913db52", "scanner": "scanner-primary", "fingerprint": "b1b17917bf5f2cf1", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-eb84c2e3516d27f4", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 pages/physicians/onboard.tsx:240"}, "properties": {"repobilityId": "bca4a22423bf6075", "scanner": "scanner-primary", "fingerprint": "eb84c2e3516d27f4", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-504f308d74b1f42a", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 pages/physicians/dashboard.tsx:58"}, "properties": {"repobilityId": "51eb9a625d2effb9", "scanner": "scanner-primary", "fingerprint": "504f308d74b1f42a", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-13c12b984490c597", "level": "none", "message": {"text": "Commented-code block (6 lines) in e2e/homepage-tokens.spec.ts:30"}, "properties": {"repobilityId": "f307b976ba86ac8e", "scanner": "scanner-primary", "fingerprint": "13c12b984490c597", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-022e6399d1ef2beb", "level": "note", "message": {"text": "12 env vars used in code but missing from .env.example"}, "properties": {"repobilityId": "7bf4178327da75a2", "scanner": "scanner-primary", "fingerprint": "022e6399d1ef2beb", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "config-drift"]}}]}]}