{"version": "2.1.0", "$schema": "https://json.schemastore.org/sarif-2.1.0.json", "runs": [{"tool": {"driver": {"name": "Repobility", "informationUri": "https://repobility.com", "rules": [{"id": "foundry_unresolved_feedback", "name": "Foundry mined unresolved feedback: ravil4545/prizyv-pravo-med", "shortDescription": {"text": "Foundry mined unresolved feedback: ravil4545/prizyv-pravo-med"}, "fullDescription": {"text": "Graph query export: Human feedback without linked fix evidence\nQuery id: unresolved_feedback\nQuery type: motif_query\nIntent: Negative/unresolved examples that should not be hallucinated into fixes.\nMotif: unlinked_feedback_needs_evidence\nTraining usage: negative_or_unresolved\nGraph gold label: needs_more_evidence\nRepo: ravil4545/prizyv-pravo-med\nThread: ravil4545/prizyv-pravo-med#1\nEvidence:\nGraph motif: Human feedback exists without a linked fix\nMotif id: unlinked_feedback_needs_evidence\nPolarity: bad\nTraining usage: negative_or_unresolved\nSeverity: medium\nRepo: ravil4545/prizyv-pravo-med\nThread: ravil4545/prizyv-pravo-med#1\nGraph gold label: needs_more_evidence\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: ravil4545/prizyv-pravo-med#1\nRepo: ravil4545/prizyv-pravo-med\nIssue/PR number: 1\nGraph consistency label: needs_more_evidence\nNodes: 34\nEdges: 102\nNode types: {'pr_file': 16, 'link_quality': 6, 'comment_chain': 4, 'comment': 3, 'thread': 1, 'repo': 1, 'pr_review'"}, "properties": {"scanner": "foundry_dataset", "category": "practices", "severity": "medium", "confidence": 0.7, "cwe": "", "owasp": ""}}, {"id": "foundry_review_followup_gap", "name": "Foundry mined review feedback without structured fix: ravil4545/prizyv-pravo-med", "shortDescription": {"text": "Foundry mined review feedback without structured fix: ravil4545/prizyv-pravo-med"}, "fullDescription": {"text": "Graph query export: Review feedback without structured fix chain\nQuery id: review_feedback_without_structured_fix\nQuery type: motif_query\nIntent: Weak-supervision examples for review comments lacking a traceable fix.\nMotif: review_feedback_without_structured_fix\nTraining usage: weak_supervision\nGraph gold label: needs_more_evidence\nRepo: ravil4545/prizyv-pravo-med\nThread: ravil4545/prizyv-pravo-med#1\nEvidence:\nGraph motif: PR review feedback lacks a clearly structured fix chain\nMotif id: review_feedback_without_structured_fix\nPolarity: mixed\nTraining usage: weak_supervision\nSeverity: medium\nRepo: ravil4545/prizyv-pravo-med\nThread: ravil4545/prizyv-pravo-med#1\nGraph gold label: needs_more_evidence\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: ravil4545/prizyv-pravo-med#1\nRepo: ravil4545/prizyv-pravo-med\nIssue/PR number: 1\nGraph consistency label: needs_more_evidence\nNodes: 34\nEdges: 102\nNode types: {'pr_file': 16, 'link_quality': 6, 'comment_chain': 4, 'comment': 3, '"}, "properties": {"scanner": "foundry_dataset", "category": "practices", "severity": "medium", "confidence": 0.72, "cwe": "", "owasp": ""}}, {"id": "foundry_schema_ui_api_gap", "name": "Foundry mined schema ui api mismatch: ravil4545/prizyv-pravo-med", "shortDescription": {"text": "Foundry mined schema ui api mismatch: ravil4545/prizyv-pravo-med"}, "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: needs_more_evidence\nRepo: ravil4545/prizyv-pravo-med\nThread: ravil4545/prizyv-pravo-med#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: ravil4545/prizyv-pravo-med\nThread: ravil4545/prizyv-pravo-med#1\nGraph gold label: needs_more_evidence\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: ravil4545/prizyv-pravo-med#1\nRepo: ravil4545/prizyv-pravo-med\nIssue/PR number: 1\nGraph consistency label: needs_more_evidence\nNodes: 34\nEdges: 102\nNode types: {'pr_file': 16, 'link_quality': 6, 'comment_chain': 4, 'comment': 3, 'thread': 1, 'repo': 1, 'pr_review': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge type"}, "properties": {"scanner": "foundry_dataset", "category": "quality", "severity": "high", "confidence": 0.76, "cwe": "", "owasp": ""}}, {"id": "foundry_bad_chain", "name": "Foundry mined bad chains: ravil4545/prizyv-pravo-med", "shortDescription": {"text": "Foundry mined bad chains: ravil4545/prizyv-pravo-med"}, "fullDescription": {"text": "Comment chain pattern product: bad_chains\nRepo: ravil4545/prizyv-pravo-med\nThread: ravil4545/prizyv-pravo-med#1\nOutcome: not_resolved_or_not_observed\nThread label: thread_has_human_issue_without_fix_context\nSource graph label: source_backed_multi_signal_graph\nReasons: source_graph_has_real_artifacts, source_graph_has_verification_artifacts, repo_has_isolated_helicopter_views, link_quality_unresolved, high_risk_human_feedback_label\nChain evidence:\nIssue/PR evidence chain: ravil4545/prizyv-pravo-med#1\nRepo: ravil4545/prizyv-pravo-med\nThread label: thread_has_human_issue_without_fix_context\nOutcome: not_resolved_or_not_observed\nComment count: 4\nLinked commit count: 0\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 16\nLabels: {'data_schema_persistence': 1, 'deployment_env_gap': 1, 'runtime_failure': 1, 'api_integration_gap': 1}\nPolarities: {'bad': 4}\nChanged file labels: {'source_or_other': 4, 'dependency_or_build': 1, 'ui_or_frontend': 11}\nExamples:\n[\n  {\n    \"id\": \"git"}, "properties": {"scanner": "foundry_dataset", "category": "practices", "severity": "high", "confidence": 0.84, "cwe": "", "owasp": ""}}, {"id": "scanner-71be3997a129908c", "name": "Possibly dead Python function: article_sort_key", "shortDescription": {"text": "Possibly dead Python function: article_sort_key"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-1aed83077efa9668", "name": "Possibly dead Python function: build_checklist_medcomission", "shortDescription": {"text": "Possibly dead Python function: build_checklist_medcomission"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-68713f3eceab2f8c", "name": "Possibly dead Python function: build_guide_povestka", "shortDescription": {"text": "Possibly dead Python function: build_guide_povestka"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-6975cc635e8f02b5", "name": "Possibly dead Python function: build_matrix_565", "shortDescription": {"text": "Possibly dead Python function: build_matrix_565"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-0cd091e43868f81e", "name": "Possibly dead Python function: build_template_apellyaciya", "shortDescription": {"text": "Possibly dead Python function: build_template_apellyaciya"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-520a7c53f63ad4e3", "name": "Stray `console.log` in TS/JS \u2014 vite-plugin-seo-prerender.ts:173", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 vite-plugin-seo-prerender.ts:173"}, "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-3e0cabf1b4157e5e", "name": "Stray `console.log` in TS/JS \u2014 supabase/functions/analyze-medical-document/index.ts:27", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 supabase/functions/analyze-medical-document/index.ts:27"}, "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-69ce37e551360d1b", "name": "Stray `console.log` in TS/JS \u2014 supabase/functions/generate-document/index.ts:59", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 supabase/functions/generate-document/index.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-227c57f3dc35179f", "name": "Stray `console.log` in TS/JS \u2014 supabase/functions/admin-users/index.ts:22", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 supabase/functions/admin-users/index.ts:22"}, "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-164f093be094ba8a", "name": "Stray `console.log` in TS/JS \u2014 supabase/functions/notify-payment-click/index.ts:99", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 supabase/functions/notify-payment-click/index.ts:99"}, "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-30e2431d35f27572", "name": "Stray `console.log` in TS/JS \u2014 supabase/functions/chat/index.ts:260", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 supabase/functions/chat/index.ts:260"}, "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-e5fde365d04855ed", "name": "Stray `console.log` in TS/JS \u2014 supabase/functions/enhance-document/index.ts:48", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 supabase/functions/enhance-document/index.ts:48"}, "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-47d9250197615177", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/TemplatePickerDialog.tsx:139", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/TemplatePickerDialog.tsx:139"}, "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-edbc8097feac3315", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 src/components/DiagnosisGuideView.tsx:17", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/components/DiagnosisGuideView.tsx:17"}, "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-bb35213e9089c930", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/LawyerShareLinkCard.tsx:60", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/LawyerShareLinkCard.tsx:60"}, "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-f2961326878d5d32", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/DashboardLayout.tsx:95", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/DashboardLayout.tsx:95"}, "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-f13cdff2e77eb4ff", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/Testimonials.tsx:54", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/Testimonials.tsx:54"}, "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-e07ea32fe34ef115", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 src/components/ForumComments.tsx:166", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/components/ForumComments.tsx:166"}, "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-51254b0164b02db4", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 src/components/BlogComments.tsx:178", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/components/BlogComments.tsx:178"}, "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-37812487e17fbb6f", "name": "TODO/FIXME marker in shipping code \u2014 src/components/LawyerCasePlanner.tsx:45", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 src/components/LawyerCasePlanner.tsx:45"}, "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-236b0d820346feb9", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/DiseaseScheduleDrawer.tsx:227", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/DiseaseScheduleDrawer.tsx:227"}, "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-70b272bd48897c0a", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/LawyerLayout.tsx:71", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/LawyerLayout.tsx:71"}, "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-185f8b3f760f9afe", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/TemplatesWorkspace.tsx:727", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/TemplatesWorkspace.tsx:727"}, "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-45e1e118a941781f", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/UploadProgress.tsx:34", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/UploadProgress.tsx:34"}, "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-f34c47142ddec51a", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/LawyerClientDocsUploader.tsx:157", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/LawyerClientDocsUploader.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-b0c457b9b3e0547f", "name": "TODO/FIXME marker in shipping code \u2014 src/components/LawyerClientDocsUploader.tsx:119", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 src/components/LawyerClientDocsUploader.tsx:119"}, "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-5331e0c313e50b27", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/ShareWithLawyer.tsx:360", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/ShareWithLawyer.tsx:360"}, "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-36de86182514b747", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/ClientProfileEditor.tsx:116", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/ClientProfileEditor.tsx:116"}, "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-766afb018136f2df", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/AIFeaturesSection.tsx:28", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/AIFeaturesSection.tsx:28"}, "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-33070f82302b1558", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 src/components/DocxViewer.tsx:56", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/components/DocxViewer.tsx:56"}, "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-7a2c02ebf6bcc138", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/ClientLawyerRequests.tsx:188", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/ClientLawyerRequests.tsx:188"}, "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-4161231411cb0756", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/Hero.tsx:84", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/Hero.tsx:84"}, "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-288e4b25e260aa66", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/Header.tsx:150", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/Header.tsx:150"}, "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-03607c521fcb5d11", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/AdminLayout.tsx:39", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/AdminLayout.tsx:39"}, "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-b209c77e83b119fd", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 src/components/ui/chart.tsx:70", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/components/ui/chart.tsx:70"}, "fullDescription": {"text": "Open XSS surface unless the input is provably trusted. Replace with explicit JSX or sanitize via a vetted library.\n\nWhy: OWASP basics. Already partially flagged by the security analyzer.\nRule id: fq.dangerous-html"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-208280a775e82f01", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/dashboard/NotificationsInbox.tsx:314", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/dashboard/NotificationsInbox.tsx:314"}, "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-74159759ac87c7b4", "name": "`truncate` class without `title=` for hover reveal \u2014 src/pages/AIChatDashboardPage.tsx:738", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/pages/AIChatDashboardPage.tsx:738"}, "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-f69e0b1361e52b34", "name": "Stray `console.log` in TS/JS \u2014 src/pages/AIChatDashboardPage.tsx:286", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 src/pages/AIChatDashboardPage.tsx:286"}, "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-73ac1abeb4293d41", "name": "`truncate` class without `title=` for hover reveal \u2014 src/pages/LawyerAgendaPage.tsx:217", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/pages/LawyerAgendaPage.tsx:217"}, "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-acad2ee8c0d64962", "name": "`truncate` class without `title=` for hover reveal \u2014 src/pages/AdminDashboardPage.tsx:149", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/pages/AdminDashboardPage.tsx:149"}, "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-6168f7d12f3a059c", "name": "`truncate` class without `title=` for hover reveal \u2014 src/pages/DiagnosisDetailPage.tsx:169", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/pages/DiagnosisDetailPage.tsx:169"}, "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-2c91575c8c44ef85", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 src/pages/DiagnosisDetailPage.tsx:146", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/pages/DiagnosisDetailPage.tsx:146"}, "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-6117dc815249aafa", "name": "`truncate` class without `title=` for hover reveal \u2014 src/pages/AdminAnalyticsPage.tsx:374", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/pages/AdminAnalyticsPage.tsx:374"}, "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-88fbd757285f749d", "name": "`truncate` class without `title=` for hover reveal \u2014 src/pages/ProfilePage.tsx:119", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/pages/ProfilePage.tsx:119"}, "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-042cdda4b183e7fd", "name": "`truncate` class without `title=` for hover reveal \u2014 src/pages/LawyerAnalyticsPage.tsx:173", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/pages/LawyerAnalyticsPage.tsx:173"}, "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-0076523a4b4866c2", "name": "`truncate` class without `title=` for hover reveal \u2014 src/pages/FamilyAccessPage.tsx:336", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/pages/FamilyAccessPage.tsx:336"}, "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-ab3a57a4ba5a6944", "name": "`truncate` class without `title=` for hover reveal \u2014 src/pages/LawyerTemplatesPage.tsx:144", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/pages/LawyerTemplatesPage.tsx:144"}, "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-a4581188073b2937", "name": "`truncate` class without `title=` for hover reveal \u2014 src/pages/MedicalQuestionnairePage.tsx:588", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/pages/MedicalQuestionnairePage.tsx:588"}, "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-2603eb6ac9cf3f73", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 src/pages/ForumPage.tsx:326", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/pages/ForumPage.tsx:326"}, "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-677a7ebe39b7b1ea", "name": "`truncate` class without `title=` for hover reveal \u2014 src/pages/MedicalHistoryPage.tsx:944", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/pages/MedicalHistoryPage.tsx:944"}, "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-67317575de67d2cc", "name": "`truncate` class without `title=` for hover reveal \u2014 src/pages/LawyerDashboard.tsx:168", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/pages/LawyerDashboard.tsx:168"}, "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-f1dcd7346f0831b7", "name": "`truncate` class without `title=` for hover reveal \u2014 src/pages/MedicalDocumentsPage.tsx:1852", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/pages/MedicalDocumentsPage.tsx:1852"}, "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-9b22ebd76dc5f3a5", "name": "Stray `console.log` in TS/JS \u2014 src/pages/MedicalDocumentsPage.tsx:631", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 src/pages/MedicalDocumentsPage.tsx:631"}, "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-5b9c4f7e38523b76", "name": "`truncate` class without `title=` for hover reveal \u2014 src/pages/LawyerChatsPage.tsx:113", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/pages/LawyerChatsPage.tsx:113"}, "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-967c282c7d970e8c", "name": "`truncate` class without `title=` for hover reveal \u2014 src/pages/LawyerChatPage.tsx:644", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/pages/LawyerChatPage.tsx:644"}, "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-729d357629c3a6ab", "name": "`truncate` class without `title=` for hover reveal \u2014 src/pages/ClientChatPage.tsx:478", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/pages/ClientChatPage.tsx:478"}, "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-486c8a9e24a99b39", "name": "`truncate` class without `title=` for hover reveal \u2014 src/pages/ClientMessagesPage.tsx:226", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/pages/ClientMessagesPage.tsx:226"}, "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-126c72cf2242d89a", "name": "`truncate` class without `title=` for hover reveal \u2014 src/pages/LawyerClientsPage.tsx:786", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/pages/LawyerClientsPage.tsx:786"}, "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-0725c91af43148ed", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 src/pages/BlogDetailPage.tsx:174", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/pages/BlogDetailPage.tsx:174"}, "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-8d18831350d4bb6c", "name": "`truncate` class without `title=` for hover reveal \u2014 src/pages/DashboardPage.tsx:228", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/pages/DashboardPage.tsx:228"}, "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-77115f5ac4ee8c60", "name": "`truncate` class without `title=` for hover reveal \u2014 src/pages/CalendarPage.tsx:285", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/pages/CalendarPage.tsx:285"}, "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-cec9896d79c8595b", "name": "`truncate` class without `title=` for hover reveal \u2014 src/pages/LawyersDirectoryPage.tsx:382", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/pages/LawyersDirectoryPage.tsx:382"}, "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-08509d0f8157b880", "name": "`truncate` class without `title=` for hover reveal \u2014 src/pages/CommissariatDetailPage.tsx:175", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/pages/CommissariatDetailPage.tsx:175"}, "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-4aea6d5f4a43d29d", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 src/pages/CommissariatDetailPage.tsx:135", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/pages/CommissariatDetailPage.tsx:135"}, "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-56f0a243f6c85179", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 src/pages/AdminForumPage.tsx:486", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/pages/AdminForumPage.tsx:486"}, "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-54a466de0c9ee32d", "name": "`truncate` class without `title=` for hover reveal \u2014 src/pages/LawyerClientDetail.tsx:595", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/pages/LawyerClientDetail.tsx:595"}, "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-7176e5d95d18d844", "name": "Runtime dotenv file present in repo: .env", "shortDescription": {"text": "Runtime dotenv file present in repo: .env"}, "fullDescription": {"text": "`.env` looks like a runtime dotenv file. It contains secret-looking assignments for VITE_SUPABASE_PUBLISHABLE_KEY. Move real values to a secret manager and keep only `.env.example` style templates in source control."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-e2cd985899db2063", "name": "Insecure pattern 'direct_innerhtml_assignment' in index.html:133", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in index.html:133"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-b833f6a73035670f", "name": "Insecure pattern 'cors_wildcard' in supabase/functions/notify-lawyer-escalation/index.ts:10", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in supabase/functions/notify-lawyer-escalation/index.ts:10"}, "fullDescription": {"text": "Found a known-risky pattern (cors_wildcard). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-2aa20a548dfccdbe", "name": "Insecure pattern 'cors_wildcard' in supabase/functions/admin-users/index.ts:5", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in supabase/functions/admin-users/index.ts:5"}, "fullDescription": {"text": "Found a known-risky pattern (cors_wildcard). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-5ad97b5401d0fc80", "name": "Insecure pattern 'cors_wildcard' in supabase/functions/notify-payment-click/index.ts:6", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in supabase/functions/notify-payment-click/index.ts:6"}, "fullDescription": {"text": "Found a known-risky pattern (cors_wildcard). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-83054e666a0b143a", "name": "Insecure pattern 'cors_wildcard' in supabase/functions/lawyer-send-invite/index.ts:23", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in supabase/functions/lawyer-send-invite/index.ts:23"}, "fullDescription": {"text": "Found a known-risky pattern (cors_wildcard). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-c4d3d250fbc11af6", "name": "Insecure pattern 'cors_wildcard' in supabase/functions/send-deadline-reminders/index.ts:32", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in supabase/functions/send-deadline-reminders/index.ts:32"}, "fullDescription": {"text": "Found a known-risky pattern (cors_wildcard). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-b94b3ec2d6c8c058", "name": "Insecure pattern 'cors_wildcard' in supabase/functions/delete-user-account/index.ts:20", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in supabase/functions/delete-user-account/index.ts:20"}, "fullDescription": {"text": "Found a known-risky pattern (cors_wildcard). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-9e1f518d585bf7d4", "name": "Insecure pattern 'cors_wildcard' in supabase/functions/notify-analysis-complete/index.ts:6", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in supabase/functions/notify-analysis-complete/index.ts:6"}, "fullDescription": {"text": "Found a known-risky pattern (cors_wildcard). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-c16242441057b18f", "name": "Insecure pattern 'cors_wildcard' in supabase/functions/import-articles/index.ts:4", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in supabase/functions/import-articles/index.ts:4"}, "fullDescription": {"text": "Found a known-risky pattern (cors_wildcard). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-3503e5461cc2162c", "name": "Insecure pattern 'dangerous_innerhtml' in src/components/DiagnosisGuideView.tsx:17", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in src/components/DiagnosisGuideView.tsx:17"}, "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-eda498a47b90e28c", "name": "Insecure pattern 'dangerous_innerhtml' in src/components/ForumComments.tsx:166", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in src/components/ForumComments.tsx:166"}, "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-52dd14c03e56762f", "name": "Insecure pattern 'dangerous_innerhtml' in src/components/BlogComments.tsx:178", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in src/components/BlogComments.tsx:178"}, "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-82f0e20ab2e91434", "name": "Insecure pattern 'dangerous_innerhtml' in src/components/DocxViewer.tsx:56", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in src/components/DocxViewer.tsx:56"}, "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-93d0283845aa2c2d", "name": "Insecure pattern 'dangerous_innerhtml' in src/components/ui/chart.tsx:70", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in src/components/ui/chart.tsx:70"}, "fullDescription": {"text": "Found a known-risky pattern (dangerous_innerhtml). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-2b5cd08c6be623c6", "name": "Insecure pattern 'document_write' in src/lib/docxBuilder.ts:243", "shortDescription": {"text": "Insecure pattern 'document_write' in src/lib/docxBuilder.ts:243"}, "fullDescription": {"text": "Found a known-risky pattern (document_write). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "low", "confidence": 1.0}}, {"id": "scanner-0870c53bad295a4f", "name": "Insecure pattern 'direct_innerhtml_assignment' in src/lib/sanitize.ts:75", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in src/lib/sanitize.ts:75"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-74d4369a24a2cd0e", "name": "Insecure pattern 'dangerous_innerhtml' in src/pages/DiagnosisDetailPage.tsx:146", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in src/pages/DiagnosisDetailPage.tsx:146"}, "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-f9675bd6cf6b5178", "name": "Possible secret in src/pages/AuthPage.tsx", "shortDescription": {"text": "Possible secret in src/pages/AuthPage.tsx"}, "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-fcad5bb0b88c6e5c", "name": "Insecure pattern 'dangerous_innerhtml' in src/pages/ForumPage.tsx:326", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in src/pages/ForumPage.tsx:326"}, "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-3e7b47114f707ed9", "name": "Insecure pattern 'document_write' in src/pages/MedicalHistoryPage.tsx:824", "shortDescription": {"text": "Insecure pattern 'document_write' in src/pages/MedicalHistoryPage.tsx:824"}, "fullDescription": {"text": "Found a known-risky pattern (document_write). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "low", "confidence": 1.0}}, {"id": "scanner-62d4da3746cc10c9", "name": "Insecure pattern 'document_write' in src/pages/MedicalDocumentsPage.tsx:1624", "shortDescription": {"text": "Insecure pattern 'document_write' in src/pages/MedicalDocumentsPage.tsx:1624"}, "fullDescription": {"text": "Found a known-risky pattern (document_write). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "low", "confidence": 1.0}}, {"id": "scanner-d3f4ee1725aa7461", "name": "Insecure pattern 'dangerous_innerhtml' in src/pages/BlogDetailPage.tsx:174", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in src/pages/BlogDetailPage.tsx:174"}, "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-834b7cc29132a09b", "name": "Insecure pattern 'dangerous_innerhtml' in src/pages/CommissariatDetailPage.tsx:135", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in src/pages/CommissariatDetailPage.tsx:135"}, "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-fe3f64ee52bb08fc", "name": "Insecure pattern 'dangerous_innerhtml' in src/pages/AdminForumPage.tsx:486", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in src/pages/AdminForumPage.tsx:486"}, "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-a90f69fcab0dae82", "name": "Possible secret in src/pages/ResetPasswordPage.tsx", "shortDescription": {"text": "Possible secret in src/pages/ResetPasswordPage.tsx"}, "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-4b87d12c29f78b3f", "name": "Possible secret in src/pages/RegisterPage.tsx", "shortDescription": {"text": "Possible secret in src/pages/RegisterPage.tsx"}, "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-b5fd615216336099", "name": "Insecure pattern 'local_storage_auth_token' in src/hooks/useAnalyticsTracking.ts:10", "shortDescription": {"text": "Insecure pattern 'local_storage_auth_token' in src/hooks/useAnalyticsTracking.ts:10"}, "fullDescription": {"text": "Found a known-risky pattern (local_storage_auth_token). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-4601e3ad3bb28677", "name": "No CI/CD pipelines detected", "shortDescription": {"text": "No CI/CD pipelines detected"}, "fullDescription": {"text": "No GitHub Actions, GitLab CI, or CircleCI configs found. Without CI you can't gate deploys on tests/lints."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-556e1758f9aa422c", "name": "Very large file: supabase/functions/analyze-medical-document/index.ts (939 lines)", "shortDescription": {"text": "Very large file: supabase/functions/analyze-medical-document/index.ts (939 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-47ca1008f67a095f", "name": "Very large file: src/integrations/supabase/types.ts (2232 lines)", "shortDescription": {"text": "Very large file: src/integrations/supabase/types.ts (2232 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-87dce3ebe639535a", "name": "Very large file: src/pages/AIChatDashboardPage.tsx (1274 lines)", "shortDescription": {"text": "Very large file: src/pages/AIChatDashboardPage.tsx (1274 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-75ab923c0be3e370", "name": "Very large file: src/pages/MedicalHistoryPage.tsx (1495 lines)", "shortDescription": {"text": "Very large file: src/pages/MedicalHistoryPage.tsx (1495 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-117597ec80b38c98", "name": "Very large file: src/pages/MedicalDocumentsPage.tsx (2816 lines)", "shortDescription": {"text": "Very large file: src/pages/MedicalDocumentsPage.tsx (2816 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-1f70f22a9095c3c0", "name": "Very large file: src/pages/LawyerChatPage.tsx (1320 lines)", "shortDescription": {"text": "Very large file: src/pages/LawyerChatPage.tsx (1320 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-30aa270a3cadc427", "name": "Very large file: src/pages/LawyerClientsPage.tsx (962 lines)", "shortDescription": {"text": "Very large file: src/pages/LawyerClientsPage.tsx (962 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-726bf0eba090dd88", "name": "Very large file: src/pages/LawyerClientDetail.tsx (1602 lines)", "shortDescription": {"text": "Very large file: src/pages/LawyerClientDetail.tsx (1602 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": "4 test file(s) for 283 source file(s) (ratio 0.01). 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 62 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 306 placeholder/mock markers across 57 source files. This often means the repo looks complete while core flows still use generated scaffolding or fake data."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-2d0c7b7ab8f8aacf", "name": "Critical user flow still appears backed by mock or placeholder data", "shortDescription": {"text": "Critical user flow still appears backed by mock or placeholder data"}, "fullDescription": {"text": "A payment/auth/admin/order/billing-style flow contains mock, fake, TODO, dummy, or placeholder markers in runtime source. In the Fable corpus this is a high-leverage completeness smell: the app can look finished while the money, identity, or tenant flow is still scaffolded."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-b9088664ace7f748", "name": "Composite production-readiness gap", "shortDescription": {"text": "Composite production-readiness gap"}, "fullDescription": {"text": "Multiple low-cost hardening controls are missing together: license, ci, tests. Opus verification showed these co-occurring gaps are a better readiness signal than reading each flag in isolation."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-749d4bc1bd66df5f", "name": "Agent instructions exist but release-hardening basics are missing", "shortDescription": {"text": "Agent instructions exist but release-hardening basics are missing"}, "fullDescription": {"text": "AI-coder instruction files were found, but the repo is missing license, ci, tests. 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-122f91b7f2906dc4", "name": "Agent authority lacks a verifier contract: .claude/settings.json", "shortDescription": {"text": "Agent authority lacks a verifier contract: .claude/settings.json"}, "fullDescription": {"text": "This agent instruction grants code or shell authority but does not state the verification gate that decides promotion. The recurring safe pattern is: LLM proposes; deterministic tests/build/security checks verify; only verified code promotes."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-5828d80909523de4", "name": "Commented-code block (5 lines) in vite.config.ts:41", "shortDescription": {"text": "Commented-code block (5 lines) in vite.config.ts:41"}, "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-63176a667d6229a4", "name": "Commented-code block (6 lines) in scripts/ingest_rag.py:92", "shortDescription": {"text": "Commented-code block (6 lines) in scripts/ingest_rag.py:92"}, "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-a86f1bad0f96d485", "name": "Commented-code block (8 lines) in supabase/functions/questionnaire-analyze/index.ts:10", "shortDescription": {"text": "Commented-code block (8 lines) in supabase/functions/questionnaire-analyze/index.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-46d0fae52d9c484d", "name": "Legacy-named symbol `medical_documents_v2` in supabase/functions/analyze-medical-document/index.ts:762", "shortDescription": {"text": "Legacy-named symbol `medical_documents_v2` in supabase/functions/analyze-medical-document/index.ts:762"}, "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-d40d131d379fb197", "name": "`fetch()` without try/.catch or AbortSignal \u2014 supabase/functions/chat-rag/index.ts:88", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 supabase/functions/chat-rag/index.ts:88"}, "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-7fc366fa6dbbd8a3", "name": "`fetch()` without try/.catch or AbortSignal \u2014 supabase/functions/parse-summons/index.ts:101", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 supabase/functions/parse-summons/index.ts: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-eba2f5542087d8fa", "name": "Legacy-named symbol `medical_documents_v2` in supabase/functions/lawyer-analyze-client/index.ts:61", "shortDescription": {"text": "Legacy-named symbol `medical_documents_v2` in supabase/functions/lawyer-analyze-client/index.ts:61"}, "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-b2a0109bb68dc642", "name": "Commented-code block (6 lines) in supabase/functions/lawyer-analyze-client/index.ts:60", "shortDescription": {"text": "Commented-code block (6 lines) in supabase/functions/lawyer-analyze-client/index.ts:60"}, "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-88ca53329147feb7", "name": "Commented-code block (7 lines) in supabase/functions/lawyer-send-invite/index.ts:4", "shortDescription": {"text": "Commented-code block (7 lines) in supabase/functions/lawyer-send-invite/index.ts:4"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-143ad046b7201a41", "name": "`fetch()` without try/.catch or AbortSignal \u2014 supabase/functions/enhance-document/index.ts:92", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 supabase/functions/enhance-document/index.ts:92"}, "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-f8d41e9ec2380cf8", "name": "Legacy-named symbol `medical_documents_v2` in supabase/functions/delete-user-account/index.ts:77", "shortDescription": {"text": "Legacy-named symbol `medical_documents_v2` in supabase/functions/delete-user-account/index.ts:77"}, "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-24c4e165b86559d2", "name": "Commented-code block (6 lines) in supabase/functions/delete-user-account/index.ts:4", "shortDescription": {"text": "Commented-code block (6 lines) in supabase/functions/delete-user-account/index.ts:4"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-4e225e218e71e72e", "name": "Legacy-named symbol `medical_documents_v2` in supabase/functions/generate-appeal/index.ts:134", "shortDescription": {"text": "Legacy-named symbol `medical_documents_v2` in supabase/functions/generate-appeal/index.ts:134"}, "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-e3cdbcbc36a28e2d", "name": "Commented-code block (5 lines) in supabase/functions/sitemap/index.ts:4", "shortDescription": {"text": "Commented-code block (5 lines) in supabase/functions/sitemap/index.ts:4"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-07ffdb44a5017663", "name": "Commented-code block (5 lines) in supabase/functions/track-demo/index.ts:4", "shortDescription": {"text": "Commented-code block (5 lines) in supabase/functions/track-demo/index.ts:4"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-4433b2d7990c02b1", "name": "Legacy-named symbol `medical_documents_v2` in supabase/functions/lawyer-ready-check/index.ts:71", "shortDescription": {"text": "Legacy-named symbol `medical_documents_v2` in supabase/functions/lawyer-ready-check/index.ts:71"}, "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-0bf8900f3c54f4b9", "name": "Commented-code block (5 lines) in supabase/functions/lawyer-build-plan/index.ts:8", "shortDescription": {"text": "Commented-code block (5 lines) in supabase/functions/lawyer-build-plan/index.ts:8"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-73cd1317b518fcb2", "name": "Legacy-named symbol `medical_documents_v2` in supabase/functions/_shared/contextBundle.ts:14", "shortDescription": {"text": "Legacy-named symbol `medical_documents_v2` in supabase/functions/_shared/contextBundle.ts:14"}, "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-5f9602d6e018a543", "name": "Legacy-named symbol `medical_documents_v2` in supabase/functions/_shared/agentTools.ts:39", "shortDescription": {"text": "Legacy-named symbol `medical_documents_v2` in supabase/functions/_shared/agentTools.ts:39"}, "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-98f563d2c3464dde", "name": "Commented-code block (7 lines) in supabase/functions/_shared/agentTools.ts:9", "shortDescription": {"text": "Commented-code block (7 lines) in supabase/functions/_shared/agentTools.ts:9"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-771d968525d922ff", "name": "`fetch()` without try/.catch or AbortSignal \u2014 supabase/functions/_shared/llmGateway.ts:98", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 supabase/functions/_shared/llmGateway.ts:98"}, "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-a7ce264a495be31c", "name": "Commented-code block (8 lines) in supabase/functions/_shared/ragSearch.ts:8", "shortDescription": {"text": "Commented-code block (8 lines) in supabase/functions/_shared/ragSearch.ts:8"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-53296fb03c922c42", "name": "`fetch()` without try/.catch or AbortSignal \u2014 supabase/functions/_shared/ragSearch.ts:80", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 supabase/functions/_shared/ragSearch.ts:80"}, "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-ba57902abac28553", "name": "Legacy-named symbol `medical_documents_v2` in src/integrations/supabase/types.ts:751", "shortDescription": {"text": "Legacy-named symbol `medical_documents_v2` in src/integrations/supabase/types.ts:751"}, "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-fda8a84f9722b92f", "name": "Legacy-named symbol `exit_intent_shown_v1` in src/components/ExitIntentDialog.tsx:10", "shortDescription": {"text": "Legacy-named symbol `exit_intent_shown_v1` in src/components/ExitIntentDialog.tsx:10"}, "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-996c3c2683d9cf5e", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/PdfViewer.tsx:47", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/PdfViewer.tsx:47"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-6d17e3875c8cead6", "name": "Commented-code block (6 lines) in src/components/LawyerCasePlanner.tsx:25", "shortDescription": {"text": "Commented-code block (6 lines) in src/components/LawyerCasePlanner.tsx:25"}, "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-5f8add0176d202d3", "name": "Commented-code block (5 lines) in src/components/DiseaseScheduleDrawer.tsx:13", "shortDescription": {"text": "Commented-code block (5 lines) in src/components/DiseaseScheduleDrawer.tsx:13"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-210e912f11e2b93e", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/SendDocToLawyerButton.tsx:76", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/SendDocToLawyerButton.tsx:76"}, "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-6177dcefbfd81563", "name": "Legacy-named symbol `medical_documents_v2` in src/components/TemplatesWorkspace.tsx:46", "shortDescription": {"text": "Legacy-named symbol `medical_documents_v2` in src/components/TemplatesWorkspace.tsx:46"}, "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-d101ad162187344e", "name": "Legacy-named symbol `medical_documents_v2` in src/components/LawyerDossierExportButton.tsx:36", "shortDescription": {"text": "Legacy-named symbol `medical_documents_v2` in src/components/LawyerDossierExportButton.tsx:36"}, "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-a00ba78759f92a64", "name": "Legacy-named symbol `medical_documents_v2` in src/components/DossierExportButton.tsx:46", "shortDescription": {"text": "Legacy-named symbol `medical_documents_v2` in src/components/DossierExportButton.tsx:46"}, "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-50a0f7ecea18f356", "name": "Legacy-named symbol `medical_documents_v2` in src/components/dashboard/NotificationsInbox.tsx:61", "shortDescription": {"text": "Legacy-named symbol `medical_documents_v2` in src/components/dashboard/NotificationsInbox.tsx:61"}, "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-6ee48be851d45e6a", "name": "Legacy-named symbol `medical_documents_v2` in src/components/dashboard/AICaseSummary.tsx:53", "shortDescription": {"text": "Legacy-named symbol `medical_documents_v2` in src/components/dashboard/AICaseSummary.tsx:53"}, "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-68206c131e52602c", "name": "Legacy-named symbol `medical_documents_v2` in src/components/dashboard/CasePlanCard.tsx:89", "shortDescription": {"text": "Legacy-named symbol `medical_documents_v2` in src/components/dashboard/CasePlanCard.tsx:89"}, "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-5b0974edb2c0d616", "name": "Commented-code block (5 lines) in src/lib/autoAttachToBrand.ts:1", "shortDescription": {"text": "Commented-code block (5 lines) in src/lib/autoAttachToBrand.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-e33b4c39c74090be", "name": "Legacy-named symbol `decision_copy` in src/lib/docTemplates.ts:377", "shortDescription": {"text": "Legacy-named symbol `decision_copy` in src/lib/docTemplates.ts:377"}, "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-a7883d9f139103be", "name": "Commented-code block (5 lines) in src/lib/docTemplates.ts:7", "shortDescription": {"text": "Commented-code block (5 lines) in src/lib/docTemplates.ts:7"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-330b5167722b094b", "name": "Legacy-named symbol `medical_documents_v2` in src/lib/buildAIContext.ts:44", "shortDescription": {"text": "Legacy-named symbol `medical_documents_v2` in src/lib/buildAIContext.ts:44"}, "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-ef4327e88c3f5d5f", "name": "Commented-code block (5 lines) in src/lib/buildAIContext.ts:4", "shortDescription": {"text": "Commented-code block (5 lines) in src/lib/buildAIContext.ts:4"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-86a276f5f7ad3bcd", "name": "Commented-code block (7 lines) in src/lib/seoMeta.ts:3", "shortDescription": {"text": "Commented-code block (7 lines) in src/lib/seoMeta.ts:3"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-d2053a08f8f8b32b", "name": "Legacy-named symbol `medical_documents_v2` in src/lib/dossier.ts:7", "shortDescription": {"text": "Legacy-named symbol `medical_documents_v2` in src/lib/dossier.ts:7"}, "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-58fe24afd4e0f9e0", "name": "Commented-code block (5 lines) in src/lib/dossier.ts:3", "shortDescription": {"text": "Commented-code block (5 lines) in src/lib/dossier.ts:3"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-8211e08f1e1064e4", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/lib/cyrillicPdfFont.ts:51", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/lib/cyrillicPdfFont.ts:51"}, "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-854419deb3ae94ce", "name": "Commented-code block (5 lines) in src/lib/rb565.ts:3", "shortDescription": {"text": "Commented-code block (5 lines) in src/lib/rb565.ts:3"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-94508975b296b98d", "name": "Commented-code block (7 lines) in src/lib/docxBuilder.ts:1", "shortDescription": {"text": "Commented-code block (7 lines) in src/lib/docxBuilder.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-fbd7c36a17c57abc", "name": "Commented-code block (5 lines) in src/lib/supabaseConfig.ts:1", "shortDescription": {"text": "Commented-code block (5 lines) in src/lib/supabaseConfig.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-926893a2917d35f0", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/pages/AIChatDashboardPage.tsx:523", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/pages/AIChatDashboardPage.tsx:523"}, "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-b7363d2bac61a7ad", "name": "Commented-code block (6 lines) in src/pages/LawyerAgendaPage.tsx:24", "shortDescription": {"text": "Commented-code block (6 lines) in src/pages/LawyerAgendaPage.tsx:24"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-30923ccd52d6f263", "name": "Commented-code block (6 lines) in src/pages/AdminUsersPage.tsx:212", "shortDescription": {"text": "Commented-code block (6 lines) in src/pages/AdminUsersPage.tsx:212"}, "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-9552086547a4dd56", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/pages/AdminArticlesPage.tsx:67", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/pages/AdminArticlesPage.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-b08ac05a7d718103", "name": "Legacy-named symbol `medical_documents_v2` in src/pages/AdminAnalyticsPage.tsx:124", "shortDescription": {"text": "Legacy-named symbol `medical_documents_v2` in src/pages/AdminAnalyticsPage.tsx:124"}, "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-bd38ae9ecb860f8a", "name": "Legacy-named symbol `medical_documents_v2` in src/pages/LawyerTemplatesPage.tsx:91", "shortDescription": {"text": "Legacy-named symbol `medical_documents_v2` in src/pages/LawyerTemplatesPage.tsx:91"}, "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-af6be37ab9f91c94", "name": "Legacy-named symbol `medical_documents_v2` in src/pages/MedicalQuestionnairePage.tsx:253", "shortDescription": {"text": "Legacy-named symbol `medical_documents_v2` in src/pages/MedicalQuestionnairePage.tsx:253"}, "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-c7a282f8ac3651a8", "name": "Legacy-named symbol `medical_documents_v2` in src/pages/MedicalHistoryPage.tsx:263", "shortDescription": {"text": "Legacy-named symbol `medical_documents_v2` in src/pages/MedicalHistoryPage.tsx:263"}, "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-e6866e8c93248981", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/pages/MedicalHistoryPage.tsx:784", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/pages/MedicalHistoryPage.tsx:784"}, "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-caede482918e6f5f", "name": "Legacy-named symbol `medical_documents_v2` in src/pages/MedicalDocumentsPage.tsx:269", "shortDescription": {"text": "Legacy-named symbol `medical_documents_v2` in src/pages/MedicalDocumentsPage.tsx:269"}, "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-669a02cd7aaa6909", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/pages/MedicalDocumentsPage.tsx:1222", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/pages/MedicalDocumentsPage.tsx:1222"}, "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-cd3fe6d46c6a01dc", "name": "Legacy-named symbol `medical_documents_v2` in src/pages/UserTemplatesPage.tsx:26", "shortDescription": {"text": "Legacy-named symbol `medical_documents_v2` in src/pages/UserTemplatesPage.tsx:26"}, "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-94716ae9095cf4fe", "name": "Commented-code block (7 lines) in src/pages/LawyerClientsPage.tsx:181", "shortDescription": {"text": "Commented-code block (7 lines) in src/pages/LawyerClientsPage.tsx:181"}, "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-01ce3a78a84342e6", "name": "Legacy-named symbol `medical_documents_v2` in src/pages/LawyerClientDetail.tsx:281", "shortDescription": {"text": "Legacy-named symbol `medical_documents_v2` in src/pages/LawyerClientDetail.tsx:281"}, "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-4fb03f369c3c7945", "name": "Commented-code block (5 lines) in src/hooks/useLawyerProfile.ts:51", "shortDescription": {"text": "Commented-code block (5 lines) in src/hooks/useLawyerProfile.ts:51"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-ba7de5458ca1ab4a", "name": "Legacy-named symbol `medical_documents_v2` in src/hooks/useCaseProgress.ts:52", "shortDescription": {"text": "Legacy-named symbol `medical_documents_v2` in src/hooks/useCaseProgress.ts:52"}, "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-710439dc1363b9a5", "name": "Frontend route `/u/:slug` has no Link/navigate to it \u2014 src/App.tsx", "shortDescription": {"text": "Frontend route `/u/:slug` has no Link/navigate to it \u2014 src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-70a82d463bf51927", "name": "Frontend route `/u/:slug/auth` has no Link/navigate to it \u2014 src/App.tsx", "shortDescription": {"text": "Frontend route `/u/:slug/auth` has no Link/navigate to it \u2014 src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-6aaf4acef0499204", "name": "Frontend route `/u/:slug/register` has no Link/navigate to it \u2014 src/App.tsx", "shortDescription": {"text": "Frontend route `/u/:slug/register` has no Link/navigate to it \u2014 src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-b20ac9b80025cfde", "name": "Frontend route `/u/:slug/login` has no Link/navigate to it \u2014 src/App.tsx", "shortDescription": {"text": "Frontend route `/u/:slug/login` has no Link/navigate to it \u2014 src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-b5b094b367a793c1", "name": "Frontend route `/u/:slug/dashboard` has no Link/navigate to it \u2014 src/App.tsx", "shortDescription": {"text": "Frontend route `/u/:slug/dashboard` has no Link/navigate to it \u2014 src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-967f2abb9316ec6f", "name": "Frontend route `/u/:slug/dashboard/ai-chat` has no Link/navigate to it \u2014 src/App.tsx", "shortDescription": {"text": "Frontend route `/u/:slug/dashboard/ai-chat` has no Link/navigate to it \u2014 src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-8e2ecc4231be6de3", "name": "Frontend route `/u/:slug/dashboard/medical-documents` has no Link/navigate to it \u2014 src/App.tsx", "shortDescription": {"text": "Frontend route `/u/:slug/dashboard/medical-documents` has no Link/navigate to it \u2014 src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-2733a135b4e5b236", "name": "Frontend route `/u/:slug/dashboard/templates` has no Link/navigate to it \u2014 src/App.tsx", "shortDescription": {"text": "Frontend route `/u/:slug/dashboard/templates` has no Link/navigate to it \u2014 src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-6a7cae2c4dbbc634", "name": "Frontend route `/u/:slug/dashboard/case-tracking` has no Link/navigate to it \u2014 src/App.tsx", "shortDescription": {"text": "Frontend route `/u/:slug/dashboard/case-tracking` has no Link/navigate to it \u2014 src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-d8472e82e0a439f1", "name": "Frontend route `/u/:slug/dashboard/calendar` has no Link/navigate to it \u2014 src/App.tsx", "shortDescription": {"text": "Frontend route `/u/:slug/dashboard/calendar` has no Link/navigate to it \u2014 src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-d1c0c264421d4a62", "name": "Frontend route `/u/:slug/medical-history` has no Link/navigate to it \u2014 src/App.tsx", "shortDescription": {"text": "Frontend route `/u/:slug/medical-history` has no Link/navigate to it \u2014 src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-6328b75558ddb89f", "name": "Frontend route `/u/:slug/medical-questionnaire` has no Link/navigate to it \u2014 src/App.tsx", "shortDescription": {"text": "Frontend route `/u/:slug/medical-questionnaire` has no Link/navigate to it \u2014 src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-16c87cbdf752eea6", "name": "Frontend route `/u/:slug/profile` has no Link/navigate to it \u2014 src/App.tsx", "shortDescription": {"text": "Frontend route `/u/:slug/profile` has no Link/navigate to it \u2014 src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-76861156e3a05f94", "name": "Frontend route `/u/:slug/diagnoses` has no Link/navigate to it \u2014 src/App.tsx", "shortDescription": {"text": "Frontend route `/u/:slug/diagnoses` has no Link/navigate to it \u2014 src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-78c02d9bef1614d1", "name": "Frontend route `/u/:slug/diagnoses/:diagnosisSlug` has no Link/navigate to it \u2014 src/App.tsx", "shortDescription": {"text": "Frontend route `/u/:slug/diagnoses/:diagnosisSlug` has no Link/navigate to it \u2014 src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-e07b63c05ef1494d", "name": "Frontend route `/u/:slug/client/messages` has no Link/navigate to it \u2014 src/App.tsx", "shortDescription": {"text": "Frontend route `/u/:slug/client/messages` has no Link/navigate to it \u2014 src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-6d20ea94f8801613", "name": "Frontend route `/u/:slug/client/chat/:lawyerClientId` has no Link/navigate to it \u2014 src/App.tsx", "shortDescription": {"text": "Frontend route `/u/:slug/client/chat/:lawyerClientId` has no Link/navigate to it \u2014 src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-9f93c47c81f8c32e", "name": "Frontend route `/u/:slug/family` has no Link/navigate to it \u2014 src/App.tsx", "shortDescription": {"text": "Frontend route `/u/:slug/family` has no Link/navigate to it \u2014 src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-7f1bec1fd65c0879", "name": "Frontend route `/reset-password` has no Link/navigate to it \u2014 src/App.tsx", "shortDescription": {"text": "Frontend route `/reset-password` has no Link/navigate to it \u2014 src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-4370d0a669df459d", "name": "Frontend route `/diagnoses/:slug` has no Link/navigate to it \u2014 src/App.tsx", "shortDescription": {"text": "Frontend route `/diagnoses/:slug` has no Link/navigate to it \u2014 src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-42b352ad2d83287f", "name": "Frontend route `/blog/:slug` has no Link/navigate to it \u2014 src/App.tsx", "shortDescription": {"text": "Frontend route `/blog/:slug` has no Link/navigate to it \u2014 src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-dc72502d9acc976a", "name": "Frontend route `/commissariats/:slug` has no Link/navigate to it \u2014 src/App.tsx", "shortDescription": {"text": "Frontend route `/commissariats/:slug` has no Link/navigate to it \u2014 src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-35e6bc17489d9eae", "name": "Frontend route `/lawyer/clients/:clientId` has no Link/navigate to it \u2014 src/App.tsx", "shortDescription": {"text": "Frontend route `/lawyer/clients/:clientId` has no Link/navigate to it \u2014 src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-08dd03c3c4eb6493", "name": "Frontend route `/lawyer/chat/:clientId` has no Link/navigate to it \u2014 src/App.tsx", "shortDescription": {"text": "Frontend route `/lawyer/chat/:clientId` has no Link/navigate to it \u2014 src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-8caed0a6f5a278e2", "name": "Frontend route `/client/chat/:lawyerClientId` has no Link/navigate to it \u2014 src/App.tsx", "shortDescription": {"text": "Frontend route `/client/chat/:lawyerClientId` has no Link/navigate to it \u2014 src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-20525cd5a28e455e", "name": "Frontend route `/family/accept/:token` has no Link/navigate to it \u2014 src/App.tsx", "shortDescription": {"text": "Frontend route `/family/accept/:token` has no Link/navigate to it \u2014 src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}]}}, "automationDetails": {"id": "repobility/17874"}, "properties": {"repository": "ravil4545/prizyv-pravo-med", "repoUrl": "https://github.com/ravil4545/prizyv-pravo-med", "branch": "main"}, "results": [{"ruleId": "foundry_unresolved_feedback", "level": "warning", "message": {"text": "Foundry mined unresolved feedback: ravil4545/prizyv-pravo-med"}, "properties": {"repobilityId": 466703, "scanner": "foundry_dataset", "fingerprint": "af139bdfad1ddd5fcde57bd94e496a148c74a8f06208e47f4a116bd59f244a59", "category": "practices", "severity": "medium", "confidence": 0.7, "triageState": "open", "verdict": "needs_review", "isResolved": false, "reason": "Imported from mined Foundry/Fable5 evidence with real GitHub/source provenance. Review source_id before acting.", "evidence": {"meta": {"kind": "graph_query_record", "title": "Human feedback without linked fix evidence", "intent": "Negative/unresolved examples that should not be hallucinated into fixes.", "labels": {"ui_or_frontend": 11, "runtime_failure": 1, "source_or_other": 4, "deployment_env_gap": 1, "api_integration_gap": 1, "dependency_or_build": 1, "data_schema_persistence": 1, "issue_or_pull_request_thread": 1, "not_resolved_or_not_observed": 6, "human_reported_issue_no_linked_fix": 4, "thread_has_human_issue_without_fix_context": 2}, "source": "graph_query_export", "motif_id": "unlinked_feedback_needs_evidence", "outcomes": {"not_resolved_or_not_observed": 12}, "polarity": "bad", "query_id": "unresolved_feedback", "severity": "medium", "ci_labels": {}, "synthetic": false, "edge_count": 102, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 4, "thread_has_comment": 3, "thread_touches_file": 16, "thread_has_pr_review": 1, "chain_has_link_quality": 6, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "issue_chain_touches_file": 12, "thread_has_comment_chain": 4, "comment_chain_touches_file": 48, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 4}, "node_count": 34, "node_types": {"repo": 1, "thread": 1, "comment": 3, "pr_file": 16, "pr_review": 1, "fix_outcome": 1, "issue_chain": 1, "link_quality": 6, "comment_chain": 4}, "query_type": "motif_query", "thread_key": "ravil4545/prizyv-pravo-med#1", "issue_number": "1", "quality_tiers": {"unresolved": 6}, "repo_full_name": "ravil4545/prizyv-pravo-med", "training_usage": "negative_or_unresolved", "source_motif_id": "graph-pattern-motif-thread-a3edda4ecfb39570", "graph_gold_label": "needs_more_evidence", "changed_file_labels": {"ui_or_frontend": 77, "source_or_other": 28, "dependency_or_build": 7}}, "text": "Graph query export: Human feedback without linked fix evidence\nQuery id: unresolved_feedback\nQuery type: motif_query\nIntent: Negative/unresolved examples that should not be hallucinated into fixes.\nMotif: unlinked_feedback_needs_evidence\nTraining usage: negative_or_unresolved\nGraph gold label: needs_more_evidence\nRepo: ravil4545/prizyv-pravo-med\nThread: ravil4545/prizyv-pravo-med#1\nEvidence:\nGraph motif: Human feedback exists without a linked fix\nMotif id: unlinked_feedback_needs_evidence\nPolarity: bad\nTraining usage: negative_or_unresolved\nSeverity: medium\nRepo: ravil4545/prizyv-pravo-med\nThread: ravil4545/prizyv-pravo-med#1\nGraph gold label: needs_more_evidence\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: ravil4545/prizyv-pravo-med#1\nRepo: ravil4545/prizyv-pravo-med\nIssue/PR number: 1\nGraph consistency label: needs_more_evidence\nNodes: 34\nEdges: 102\nNode types: {'pr_file': 16, 'link_quality': 6, 'comment_chain': 4, 'comment': 3, 'thread': 1, 'repo': 1, 'pr_review': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'comment_chain_touches_file': 48, 'thread_touches_file': 16, 'issue_chain_touches_file': 12, 'chain_has_link_quality': 6, 'thread_has_comment_chain': 4, 'comment_has_chain': 4, 'issue_chain_has_comment_chain': 4, 'thread_has_comment': 3, '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}\nLabels: {'ui_or_frontend': 11, 'not_resolved_or_not_observed': 6, 'source_or_other': 4, 'human_reported_issue_no_linked_fix': 4, 'thread_has_human_issue_without_fix_context': 2, 'issue_or_pull_request_thread': 1, 'data_schema_persistence': 1, 'deployment_env_gap': 1, 'runtime_failure': 1, 'api_integration_gap': 1, 'dependency_or_build': 1}\nOutcomes: {'not_resolved_or_not_observed': 12}\nQuality tiers: {'unresolved': 6}\nCI labels: {}\nCurriculum targets:\n- Teach models to preserve unresolved human feedback instead of hallucinating fixes.\n- Build issue-to-regression examples where no accepted fix exists yet.\nAssumption checks:\n- Can a commit be linked by issue number, SHA, changed path, or time window?\n- If no link exists, is this explicitly labelled unresolved?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/ravil4545/prizyv-pravo-med", "source_id": "graph-query-motif_query-5c300ad34d1e94ed", "synthetic": false, "gold_label": "", "graph_label": "", "source_path": "/data/distillate/foundry_data/graph_queries/unresolved_feedback/shard-0.jsonl", "bundle_label": "", "priority_band": "", "priority_score": 0, "repo_full_name": "ravil4545/prizyv-pravo-med", "source_dataset": "graph_queries/unresolved_feedback", "training_usage": "negative_or_unresolved"}}}, {"ruleId": "foundry_review_followup_gap", "level": "warning", "message": {"text": "Foundry mined review feedback without structured fix: ravil4545/prizyv-pravo-med"}, "properties": {"repobilityId": 452298, "scanner": "foundry_dataset", "fingerprint": "030d92d37122ca6dda322ebc65d9dc782370c72acccb5ea1c06dd324585b5529", "category": "practices", "severity": "medium", "confidence": 0.72, "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": "Review feedback without structured fix chain", "intent": "Weak-supervision examples for review comments lacking a traceable fix.", "labels": {"ui_or_frontend": 11, "runtime_failure": 1, "source_or_other": 4, "deployment_env_gap": 1, "api_integration_gap": 1, "dependency_or_build": 1, "data_schema_persistence": 1, "issue_or_pull_request_thread": 1, "not_resolved_or_not_observed": 6, "human_reported_issue_no_linked_fix": 4, "thread_has_human_issue_without_fix_context": 2}, "source": "graph_query_export", "motif_id": "review_feedback_without_structured_fix", "outcomes": {"not_resolved_or_not_observed": 12}, "polarity": "mixed", "query_id": "review_feedback_without_structured_fix", "severity": "medium", "ci_labels": {}, "synthetic": false, "edge_count": 102, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 4, "thread_has_comment": 3, "thread_touches_file": 16, "thread_has_pr_review": 1, "chain_has_link_quality": 6, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "issue_chain_touches_file": 12, "thread_has_comment_chain": 4, "comment_chain_touches_file": 48, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 4}, "node_count": 34, "node_types": {"repo": 1, "thread": 1, "comment": 3, "pr_file": 16, "pr_review": 1, "fix_outcome": 1, "issue_chain": 1, "link_quality": 6, "comment_chain": 4}, "query_type": "motif_query", "thread_key": "ravil4545/prizyv-pravo-med#1", "issue_number": "1", "quality_tiers": {"unresolved": 6}, "repo_full_name": "ravil4545/prizyv-pravo-med", "training_usage": "weak_supervision", "source_motif_id": "graph-pattern-motif-thread-a23ccdd236546ba9", "graph_gold_label": "needs_more_evidence", "changed_file_labels": {"ui_or_frontend": 77, "source_or_other": 28, "dependency_or_build": 7}}, "text": "Graph query export: Review feedback without structured fix chain\nQuery id: review_feedback_without_structured_fix\nQuery type: motif_query\nIntent: Weak-supervision examples for review comments lacking a traceable fix.\nMotif: review_feedback_without_structured_fix\nTraining usage: weak_supervision\nGraph gold label: needs_more_evidence\nRepo: ravil4545/prizyv-pravo-med\nThread: ravil4545/prizyv-pravo-med#1\nEvidence:\nGraph motif: PR review feedback lacks a clearly structured fix chain\nMotif id: review_feedback_without_structured_fix\nPolarity: mixed\nTraining usage: weak_supervision\nSeverity: medium\nRepo: ravil4545/prizyv-pravo-med\nThread: ravil4545/prizyv-pravo-med#1\nGraph gold label: needs_more_evidence\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: ravil4545/prizyv-pravo-med#1\nRepo: ravil4545/prizyv-pravo-med\nIssue/PR number: 1\nGraph consistency label: needs_more_evidence\nNodes: 34\nEdges: 102\nNode types: {'pr_file': 16, 'link_quality': 6, 'comment_chain': 4, 'comment': 3, 'thread': 1, 'repo': 1, 'pr_review': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'comment_chain_touches_file': 48, 'thread_touches_file': 16, 'issue_chain_touches_file': 12, 'chain_has_link_quality': 6, 'thread_has_comment_chain': 4, 'comment_has_chain': 4, 'issue_chain_has_comment_chain': 4, 'thread_has_comment': 3, '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}\nLabels: {'ui_or_frontend': 11, 'not_resolved_or_not_observed': 6, 'source_or_other': 4, 'human_reported_issue_no_linked_fix': 4, 'thread_has_human_issue_without_fix_context': 2, 'issue_or_pull_request_thread': 1, 'data_schema_persistence': 1, 'deployment_env_gap': 1, 'runtime_failure': 1, 'api_integration_gap': 1, 'dependency_or_build': 1}\nOutcomes: {'not_resolved_or_not_observed': 12}\nQuality tiers: {'unresolved': 6}\nCI labels: {}\nCurriculum targets:\n- Normalize PR reviews into finding, fix, verification, and residual-risk fields.\n- Teach agents to answer review comments with traceable code and test changes.\nAssumption checks:\n- Can each review comment be mapped to a changed file or commit?\n- Was the review resolved by evidence or only left as commentary?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/ravil4545/prizyv-pravo-med", "source_id": "graph-query-motif_query-d8142fc483aa6082", "synthetic": false, "gold_label": "", "graph_label": "", "source_path": "/data/distillate/foundry_data/graph_queries/review_feedback_without_structured_fix/shard-0.jsonl", "bundle_label": "", "priority_band": "", "priority_score": 0, "repo_full_name": "ravil4545/prizyv-pravo-med", "source_dataset": "graph_queries/review_feedback_without_structured_fix", "training_usage": "weak_supervision"}}}, {"ruleId": "foundry_schema_ui_api_gap", "level": "error", "message": {"text": "Foundry mined schema ui api mismatch: ravil4545/prizyv-pravo-med"}, "properties": {"repobilityId": 453727, "scanner": "foundry_dataset", "fingerprint": "a07b8458c30432049181ffb8767013dd549f6f936ec10ec617b1f403e7fcffc3", "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": {"ui_or_frontend": 11, "runtime_failure": 1, "source_or_other": 4, "deployment_env_gap": 1, "api_integration_gap": 1, "dependency_or_build": 1, "data_schema_persistence": 1, "issue_or_pull_request_thread": 1, "not_resolved_or_not_observed": 6, "human_reported_issue_no_linked_fix": 4, "thread_has_human_issue_without_fix_context": 2}, "source": "graph_query_export", "motif_id": "schema_ui_api_mismatch", "outcomes": {"not_resolved_or_not_observed": 12}, "polarity": "bad", "query_id": "schema_ui_api_mismatch", "severity": "high", "ci_labels": {}, "synthetic": false, "edge_count": 102, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 4, "thread_has_comment": 3, "thread_touches_file": 16, "thread_has_pr_review": 1, "chain_has_link_quality": 6, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "issue_chain_touches_file": 12, "thread_has_comment_chain": 4, "comment_chain_touches_file": 48, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 4}, "node_count": 34, "node_types": {"repo": 1, "thread": 1, "comment": 3, "pr_file": 16, "pr_review": 1, "fix_outcome": 1, "issue_chain": 1, "link_quality": 6, "comment_chain": 4}, "query_type": "motif_query", "thread_key": "ravil4545/prizyv-pravo-med#1", "issue_number": "1", "quality_tiers": {"unresolved": 6}, "repo_full_name": "ravil4545/prizyv-pravo-med", "training_usage": "assumption_check", "source_motif_id": "graph-pattern-motif-thread-04d9f07236608761", "graph_gold_label": "needs_more_evidence", "changed_file_labels": {"ui_or_frontend": 77, "source_or_other": 28, "dependency_or_build": 7}}, "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: needs_more_evidence\nRepo: ravil4545/prizyv-pravo-med\nThread: ravil4545/prizyv-pravo-med#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: ravil4545/prizyv-pravo-med\nThread: ravil4545/prizyv-pravo-med#1\nGraph gold label: needs_more_evidence\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: ravil4545/prizyv-pravo-med#1\nRepo: ravil4545/prizyv-pravo-med\nIssue/PR number: 1\nGraph consistency label: needs_more_evidence\nNodes: 34\nEdges: 102\nNode types: {'pr_file': 16, 'link_quality': 6, 'comment_chain': 4, 'comment': 3, 'thread': 1, 'repo': 1, 'pr_review': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'comment_chain_touches_file': 48, 'thread_touches_file': 16, 'issue_chain_touches_file': 12, 'chain_has_link_quality': 6, 'thread_has_comment_chain': 4, 'comment_has_chain': 4, 'issue_chain_has_comment_chain': 4, 'thread_has_comment': 3, '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}\nLabels: {'ui_or_frontend': 11, 'not_resolved_or_not_observed': 6, 'source_or_other': 4, 'human_reported_issue_no_linked_fix': 4, 'thread_has_human_issue_without_fix_context': 2, 'issue_or_pull_request_thread': 1, 'data_schema_persistence': 1, 'deployment_env_gap': 1, 'runtime_failure': 1, 'api_integration_gap': 1, 'dependency_or_build': 1}\nOutcomes: {'not_resolved_or_not_observed': 12}\nQuality tiers: {'unresolved': 6}\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/ravil4545/prizyv-pravo-med", "source_id": "graph-query-motif_query-580442fe7fa69229", "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": "ravil4545/prizyv-pravo-med", "source_dataset": "graph_queries/schema_ui_api_mismatch", "training_usage": "assumption_check"}}}, {"ruleId": "foundry_bad_chain", "level": "error", "message": {"text": "Foundry mined bad chains: ravil4545/prizyv-pravo-med"}, "properties": {"repobilityId": 444557, "scanner": "foundry_dataset", "fingerprint": "c9ebd77fe69d98f131ae78048d6f3f0e6b826319456012041a54d6c9a9dc295a", "category": "practices", "severity": "high", "confidence": 0.84, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Imported from mined Foundry/Fable5 evidence with real GitHub/source provenance. Review source_id before acting.", "evidence": {"meta": {"kind": "comment_chain_pattern_product", "source": "comment_chain_pattern_miner", "product": "bad_chains", "synthetic": false, "thread_key": "ravil4545/prizyv-pravo-med#1", "human_labels": ["api_integration_gap", "data_schema_persistence", "dependency_or_build", "deployment_env_gap", "runtime_failure", "source_or_other", "ui_or_frontend"], "issue_number": "1", "thread_label": "thread_has_human_issue_without_fix_context", "outcome_label": "not_resolved_or_not_observed", "source_backed": true, "max_confidence": 0.0, "repo_full_name": "ravil4545/prizyv-pravo-med", "training_usage": "negative_or_unresolved", "confidence_tier": "unresolved", "source_chain_id": "evidence-chain-issue_chain-52ee8a24da55eff7", "helicopter_views": {"schemas": 2}, "artifact_families": {"docs": 1, "schemas": 1}, "source_chain_kind": "issue_chain", "changed_file_count": 16, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {"ui_or_frontend": 11, "source_or_other": 4, "dependency_or_build": 1}, "linked_commit_count": 0, "helicopter_view_count": 2, "source_artifact_count": 2, "classification_reasons": ["source_graph_has_real_artifacts", "source_graph_has_verification_artifacts", "repo_has_isolated_helicopter_views", "link_quality_unresolved", "high_risk_human_feedback_label"], "linked_ci_commit_count": 0, "verification_artifact_count": 1, "design_schema_api_artifact_count": 1}, "text": "Comment chain pattern product: bad_chains\nRepo: ravil4545/prizyv-pravo-med\nThread: ravil4545/prizyv-pravo-med#1\nOutcome: not_resolved_or_not_observed\nThread label: thread_has_human_issue_without_fix_context\nSource graph label: source_backed_multi_signal_graph\nReasons: source_graph_has_real_artifacts, source_graph_has_verification_artifacts, repo_has_isolated_helicopter_views, link_quality_unresolved, high_risk_human_feedback_label\nChain evidence:\nIssue/PR evidence chain: ravil4545/prizyv-pravo-med#1\nRepo: ravil4545/prizyv-pravo-med\nThread label: thread_has_human_issue_without_fix_context\nOutcome: not_resolved_or_not_observed\nComment count: 4\nLinked commit count: 0\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 16\nLabels: {'data_schema_persistence': 1, 'deployment_env_gap': 1, 'runtime_failure': 1, 'api_integration_gap': 1}\nPolarities: {'bad': 4}\nChanged file labels: {'source_or_other': 4, 'dependency_or_build': 1, 'ui_or_frontend': 11}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-0e7584691fe51250\",\n    \"kind\": \"pull_request_body\",\n    \"label\": \"data_schema_persistence\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/ravil4545/prizyv-pravo-med/pull/1\",\n    \"text\": \"GitHub feedback: data_schema_persistence\\nPolarity: bad\\nKind: pull_request_body\\nRepo: ravil4545/prizyv-pravo-med\\nAuthor: ravil4545 (User)\\nURL: https://github.com/ravil4545/prizyv-pravo-med/pull/1\\nTitle: feat: \u0440\u0435\u0434\u0438\u0437\u0430\u0439\u043d \u043f\u043e\u0434 \u043f\u0435\u0440\u0441\u043e\u043d\u0430\u043b\u044c\u043d\u044b\u0439 \u0431\u0440\u0435\u043d\u0434 \u0412\u0430\u0436\u0430\u043d\u0438\u043d\u043e\u0439 \u0410.\u0415.\\nBody:\\n\u0420\u0430\u0434\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u0439 \u0432\u0438\u0437\u0443\u0430\u043b\u044c\u043d\u044b\u0439 \u0440\u0435\u0434\u0438\u0437\u0430\u0439\u043d (Editorial + Archive \u0433\u0438\u0431\u0440\u0438\u0434):\\r\\n- \u041d\u043e\u0432\u0430\u044f \u043f\u0430\u043b\u0438\u0442\u0440\u0430: navy ink + \u0437\u043e\u043b\u043e\u0442\u043e + \u043a\u0440\u0435\u043c\u043e\u0432\u0430\u044f \u0431\u0443\u043c\u0430\u0433\u0430\\r\\n- \u0428\u0440\u0438\u0444\u0442\u044b: Playfair Display (\u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0438) + Inter + JetBrains Mono\\r\\n- Editorial-\u043d\u0443\u043c\u0435\u0440\u0430\u0446\u0438\u044f \u0441\u0435\u043a\u0446\u0438\u0439, \u043a\u0430\u0440\u0442\u043e\u0442\u0435\u0447\u043d\u044b\u0435 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b, \u0448\u0442\u0430\u043c\u043f\u044b\\r\\n\\r\\n\u0413\u043b\u0430\u0432\u043d\u0430\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430 \u043f\u0435\u0440\u0435\u043f\u0430\u043a\u043e\u0432\u0430\u043d\u0430:\\r\\n- Hero \u0441 \u0440\u0435\u0430\u043b\u044c\u043d\u044b\u043c \u0444\u043e\u0442\u043e \u044e\u0440\u0438\u0441\u0442\u0430, \u0437\u043e\u043b\u043e\u0442\u044b\u043c\u0438 \u0443\u0433\u043e\u043b\u043a\u0430\u043c\u0438 \u0438 \u043f\u0435\u0447\u0430\u0442\u044c\u044e\\r\\n- AboutLawyer \u043a\u0430\u043a \u0440\u0430\u0437\u0432\u043e\u0440\u043e\u0442 \u0441 \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0430\u043c\u0438 \u0440\u0430\u0431\u043e\u0442\u044b\\r\\n- ConscriptionMap \u2014 \u043a\u0430\u0440\u0442\u0430 5 \u044d\u0442\u0430\u043f\u043e\u0432 \u043f\u0440\u0438\u0437\u044b\u0432\u0430 \u0441 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430/\u0440\u0435\u0448\u0435\u043d\u0438\u0435\\r\\n- ComplexCases \u2014 \u0430\u0440\u0445\u0438\u0432 \u0440\u0435\u0430\u043b\u044c\u043d\u044b\u0445 \u0434\u0435\u043b \u0441 \u0434\u0438\u0430\u0433\u043d\u043e\u0437\u0430\u043c\u0438 \u0438 \u043a\u0430\u0442\u0435\u0433\u043e\u0440\u0438\u044f\u043c\u0438\\r\\n- Services \u0441 \u043d\u0443\u043c\u0435\u0440\u0430\u0446\u0438\u0435\u0439 01/02/03/04 \u0438 \u0444\u043e\u0440\u043c\u0430\u0442\u043e\u043c \\\"\u042d\u043a\u0441\u0442\u0440\u0435\u043d\u043d\u0430\u044f \u043f\u043e\u043c\u043e\u0449\u044c\\\"\\r\\n- Pricing 4 \u0442\u0430\u0440\u0438\u0444\u0430: \u0431\u0435\u0441\u043f\u043b\u0430\u0442\u043d\u043e / 9000 / 9000 / 90000\\r\\n\\r\\nSEO \u043f\u043e\u0434 \u043f\u0435\u0440\u0441\u043e\u043d\u0430\u043b\u044c\u043d\u044b\u0439 \u0431\u0440\u0435\u043d\u0434:\\r\\n- Title/description \u0441 \u0438\u043c\u0435\u043d\u0435\u043c \u044e\u0440\u0438\u0441\u0442\u0430\\r\\n- Schema.org Person + LegalService graph\\r\\n\\r\\n\u0421\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u044b: \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b, \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u044b, \u043a\u0430\u0431\u0438\u043d\u0435\u0442\u044b, \u0431\u044d\u043a\u0435\u043d\u0434\"\n  },\n  {\n    \"id\": \"github-feedback-comment-883a512b29a8cdc0\",\n    \"kind\": \"issue_comment\",\n    \"label\": \"deployment_env_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/ravil4545/prizyv-pravo-med/pull/1#issuecomment-4537266081\",\n    \"text\": \"GitHub feedback: deployment_env_gap\\nPolarity: bad\\nKind: issue_comment\\nRepo: ravil4545/prizyv-pravo-med\\nAuthor: netlify[bot] (Bot)\\nURL: https://github.com/ravil4545/prizyv-pravo-med/pull/1#issuecomment-4537266081\\nTitle: \\nBody:\\n### <span aria-hidden=\\\"true\\\">\u2705</span> Deploy Preview for *nepriziv* ready!\\n\\n\\n|  Name | Link |\\n|:-:|------------------------|\\n|<span aria-hidden=\\\"true\\\">\ud83d\udd28</s\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/ravil4545/prizyv-pravo-med", "source_id": "comment-chain-pattern-bad_chains-d15a0bb7ad87ab8e", "synthetic": false, "gold_label": "", "graph_label": "source_backed_multi_signal_graph", "source_path": "/data/distillate/foundry_data/comment_chain_patterns/bad_chains/shard-0.jsonl", "bundle_label": "", "priority_band": "", "priority_score": 0, "repo_full_name": "ravil4545/prizyv-pravo-med", "source_dataset": "comment_chain_patterns/bad_chains", "training_usage": "negative_or_unresolved"}}}, {"ruleId": "scanner-71be3997a129908c", "level": "note", "message": {"text": "Possibly dead Python function: article_sort_key"}, "properties": {"repobilityId": "077c0ab7a1773224", "scanner": "scanner-primary", "fingerprint": "71be3997a129908c", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/build_index.py:79"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-1aed83077efa9668", "level": "note", "message": {"text": "Possibly dead Python function: build_checklist_medcomission"}, "properties": {"repobilityId": "293957dc8bd03050", "scanner": "scanner-primary", "fingerprint": "1aed83077efa9668", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/generate_leadmagnets.py:225"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-68713f3eceab2f8c", "level": "note", "message": {"text": "Possibly dead Python function: build_guide_povestka"}, "properties": {"repobilityId": "6735b117488841ed", "scanner": "scanner-primary", "fingerprint": "68713f3eceab2f8c", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/generate_leadmagnets.py:345"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-6975cc635e8f02b5", "level": "note", "message": {"text": "Possibly dead Python function: build_matrix_565"}, "properties": {"repobilityId": "da340d0c4abdcbb0", "scanner": "scanner-primary", "fingerprint": "6975cc635e8f02b5", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/generate_leadmagnets.py:488"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-0cd091e43868f81e", "level": "note", "message": {"text": "Possibly dead Python function: build_template_apellyaciya"}, "properties": {"repobilityId": "dfe13726cc3ba88c", "scanner": "scanner-primary", "fingerprint": "0cd091e43868f81e", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/generate_leadmagnets.py:649"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-520a7c53f63ad4e3", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 vite-plugin-seo-prerender.ts:173"}, "properties": {"repobilityId": "c3b9d5880f2e29ed", "scanner": "scanner-primary", "fingerprint": "520a7c53f63ad4e3", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-3e0cabf1b4157e5e", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 supabase/functions/analyze-medical-document/index.ts:27"}, "properties": {"repobilityId": "57646f125d797ed1", "scanner": "scanner-primary", "fingerprint": "3e0cabf1b4157e5e", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-69ce37e551360d1b", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 supabase/functions/generate-document/index.ts:59"}, "properties": {"repobilityId": "1619f08471aae787", "scanner": "scanner-primary", "fingerprint": "69ce37e551360d1b", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-227c57f3dc35179f", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 supabase/functions/admin-users/index.ts:22"}, "properties": {"repobilityId": "8ad926be0bbfb463", "scanner": "scanner-primary", "fingerprint": "227c57f3dc35179f", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-164f093be094ba8a", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 supabase/functions/notify-payment-click/index.ts:99"}, "properties": {"repobilityId": "1dca3dad8a302ff8", "scanner": "scanner-primary", "fingerprint": "164f093be094ba8a", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-30e2431d35f27572", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 supabase/functions/chat/index.ts:260"}, "properties": {"repobilityId": "15849d0e2fded78c", "scanner": "scanner-primary", "fingerprint": "30e2431d35f27572", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-e5fde365d04855ed", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 supabase/functions/enhance-document/index.ts:48"}, "properties": {"repobilityId": "83fc8ddafde001de", "scanner": "scanner-primary", "fingerprint": "e5fde365d04855ed", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-47d9250197615177", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/TemplatePickerDialog.tsx:139"}, "properties": {"repobilityId": "e26abf64ac20d92a", "scanner": "scanner-primary", "fingerprint": "47d9250197615177", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-edbc8097feac3315", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/components/DiagnosisGuideView.tsx:17"}, "properties": {"repobilityId": "d0fd2428c7668be8", "scanner": "scanner-primary", "fingerprint": "edbc8097feac3315", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-bb35213e9089c930", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/LawyerShareLinkCard.tsx:60"}, "properties": {"repobilityId": "020596d2881ce9c6", "scanner": "scanner-primary", "fingerprint": "bb35213e9089c930", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-f2961326878d5d32", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/DashboardLayout.tsx:95"}, "properties": {"repobilityId": "56fe003ad85fea5a", "scanner": "scanner-primary", "fingerprint": "f2961326878d5d32", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-f13cdff2e77eb4ff", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/Testimonials.tsx:54"}, "properties": {"repobilityId": "4954eecdd99be9d8", "scanner": "scanner-primary", "fingerprint": "f13cdff2e77eb4ff", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-e07ea32fe34ef115", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/components/ForumComments.tsx:166"}, "properties": {"repobilityId": "8063f565dec0beab", "scanner": "scanner-primary", "fingerprint": "e07ea32fe34ef115", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-51254b0164b02db4", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/components/BlogComments.tsx:178"}, "properties": {"repobilityId": "0160599045a03502", "scanner": "scanner-primary", "fingerprint": "51254b0164b02db4", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-37812487e17fbb6f", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 src/components/LawyerCasePlanner.tsx:45"}, "properties": {"repobilityId": "11915a0b82abd1b4", "scanner": "scanner-primary", "fingerprint": "37812487e17fbb6f", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-236b0d820346feb9", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/DiseaseScheduleDrawer.tsx:227"}, "properties": {"repobilityId": "0f7ae7ba19b805ce", "scanner": "scanner-primary", "fingerprint": "236b0d820346feb9", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-70b272bd48897c0a", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/LawyerLayout.tsx:71"}, "properties": {"repobilityId": "630c502df6aa25d4", "scanner": "scanner-primary", "fingerprint": "70b272bd48897c0a", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-185f8b3f760f9afe", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/TemplatesWorkspace.tsx:727"}, "properties": {"repobilityId": "4ef67603a0f182d3", "scanner": "scanner-primary", "fingerprint": "185f8b3f760f9afe", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-45e1e118a941781f", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/UploadProgress.tsx:34"}, "properties": {"repobilityId": "3debcd0d93b8ed15", "scanner": "scanner-primary", "fingerprint": "45e1e118a941781f", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-f34c47142ddec51a", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/LawyerClientDocsUploader.tsx:157"}, "properties": {"repobilityId": "1fd318ba916ad2c0", "scanner": "scanner-primary", "fingerprint": "f34c47142ddec51a", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-b0c457b9b3e0547f", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 src/components/LawyerClientDocsUploader.tsx:119"}, "properties": {"repobilityId": "16986a630308e352", "scanner": "scanner-primary", "fingerprint": "b0c457b9b3e0547f", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-5331e0c313e50b27", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/ShareWithLawyer.tsx:360"}, "properties": {"repobilityId": "c539ce4e15971d11", "scanner": "scanner-primary", "fingerprint": "5331e0c313e50b27", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-36de86182514b747", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/ClientProfileEditor.tsx:116"}, "properties": {"repobilityId": "08d1561d3e95dab0", "scanner": "scanner-primary", "fingerprint": "36de86182514b747", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-766afb018136f2df", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/AIFeaturesSection.tsx:28"}, "properties": {"repobilityId": "addd488482d0368c", "scanner": "scanner-primary", "fingerprint": "766afb018136f2df", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-33070f82302b1558", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/components/DocxViewer.tsx:56"}, "properties": {"repobilityId": "9c950c4c35aa0d38", "scanner": "scanner-primary", "fingerprint": "33070f82302b1558", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-7a2c02ebf6bcc138", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/ClientLawyerRequests.tsx:188"}, "properties": {"repobilityId": "e5bace6200b0eda9", "scanner": "scanner-primary", "fingerprint": "7a2c02ebf6bcc138", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-4161231411cb0756", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/Hero.tsx:84"}, "properties": {"repobilityId": "6e019d3115ccb06b", "scanner": "scanner-primary", "fingerprint": "4161231411cb0756", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-288e4b25e260aa66", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/Header.tsx:150"}, "properties": {"repobilityId": "bd9f8473299439e0", "scanner": "scanner-primary", "fingerprint": "288e4b25e260aa66", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-03607c521fcb5d11", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/AdminLayout.tsx:39"}, "properties": {"repobilityId": "d531e6d9150888b5", "scanner": "scanner-primary", "fingerprint": "03607c521fcb5d11", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-b209c77e83b119fd", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/components/ui/chart.tsx:70"}, "properties": {"repobilityId": "b8c68f17a4018107", "scanner": "scanner-primary", "fingerprint": "b209c77e83b119fd", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-208280a775e82f01", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/dashboard/NotificationsInbox.tsx:314"}, "properties": {"repobilityId": "e8e5d697b46f15bc", "scanner": "scanner-primary", "fingerprint": "208280a775e82f01", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-74159759ac87c7b4", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/pages/AIChatDashboardPage.tsx:738"}, "properties": {"repobilityId": "0087aa9878627be5", "scanner": "scanner-primary", "fingerprint": "74159759ac87c7b4", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-f69e0b1361e52b34", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 src/pages/AIChatDashboardPage.tsx:286"}, "properties": {"repobilityId": "4221b61805322b6e", "scanner": "scanner-primary", "fingerprint": "f69e0b1361e52b34", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-73ac1abeb4293d41", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/pages/LawyerAgendaPage.tsx:217"}, "properties": {"repobilityId": "152283624ccba767", "scanner": "scanner-primary", "fingerprint": "73ac1abeb4293d41", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-acad2ee8c0d64962", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/pages/AdminDashboardPage.tsx:149"}, "properties": {"repobilityId": "8c194cb2cea7b5ea", "scanner": "scanner-primary", "fingerprint": "acad2ee8c0d64962", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-6168f7d12f3a059c", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/pages/DiagnosisDetailPage.tsx:169"}, "properties": {"repobilityId": "8c189f446468c9f4", "scanner": "scanner-primary", "fingerprint": "6168f7d12f3a059c", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-2c91575c8c44ef85", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/pages/DiagnosisDetailPage.tsx:146"}, "properties": {"repobilityId": "2d0ef053d02e2ee3", "scanner": "scanner-primary", "fingerprint": "2c91575c8c44ef85", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-6117dc815249aafa", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/pages/AdminAnalyticsPage.tsx:374"}, "properties": {"repobilityId": "cd999299b92a1c14", "scanner": "scanner-primary", "fingerprint": "6117dc815249aafa", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-88fbd757285f749d", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/pages/ProfilePage.tsx:119"}, "properties": {"repobilityId": "16027c4ce7b27cae", "scanner": "scanner-primary", "fingerprint": "88fbd757285f749d", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-042cdda4b183e7fd", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/pages/LawyerAnalyticsPage.tsx:173"}, "properties": {"repobilityId": "7a8a38ef5c9deadd", "scanner": "scanner-primary", "fingerprint": "042cdda4b183e7fd", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-0076523a4b4866c2", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/pages/FamilyAccessPage.tsx:336"}, "properties": {"repobilityId": "59d7c0615d36eca9", "scanner": "scanner-primary", "fingerprint": "0076523a4b4866c2", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-ab3a57a4ba5a6944", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/pages/LawyerTemplatesPage.tsx:144"}, "properties": {"repobilityId": "0dad75d1deb98d7c", "scanner": "scanner-primary", "fingerprint": "ab3a57a4ba5a6944", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-a4581188073b2937", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/pages/MedicalQuestionnairePage.tsx:588"}, "properties": {"repobilityId": "97be3b76980c3dbe", "scanner": "scanner-primary", "fingerprint": "a4581188073b2937", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-2603eb6ac9cf3f73", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/pages/ForumPage.tsx:326"}, "properties": {"repobilityId": "5aa8680ba3bb370f", "scanner": "scanner-primary", "fingerprint": "2603eb6ac9cf3f73", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-677a7ebe39b7b1ea", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/pages/MedicalHistoryPage.tsx:944"}, "properties": {"repobilityId": "b2f59ce8545235ad", "scanner": "scanner-primary", "fingerprint": "677a7ebe39b7b1ea", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-67317575de67d2cc", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/pages/LawyerDashboard.tsx:168"}, "properties": {"repobilityId": "d56844458752d769", "scanner": "scanner-primary", "fingerprint": "67317575de67d2cc", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-f1dcd7346f0831b7", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/pages/MedicalDocumentsPage.tsx:1852"}, "properties": {"repobilityId": "a043d8c5ba3b35ce", "scanner": "scanner-primary", "fingerprint": "f1dcd7346f0831b7", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-9b22ebd76dc5f3a5", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 src/pages/MedicalDocumentsPage.tsx:631"}, "properties": {"repobilityId": "0549498f566ee07f", "scanner": "scanner-primary", "fingerprint": "9b22ebd76dc5f3a5", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-5b9c4f7e38523b76", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/pages/LawyerChatsPage.tsx:113"}, "properties": {"repobilityId": "365391adb2d1d661", "scanner": "scanner-primary", "fingerprint": "5b9c4f7e38523b76", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-967c282c7d970e8c", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/pages/LawyerChatPage.tsx:644"}, "properties": {"repobilityId": "aea984b094e56664", "scanner": "scanner-primary", "fingerprint": "967c282c7d970e8c", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-729d357629c3a6ab", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/pages/ClientChatPage.tsx:478"}, "properties": {"repobilityId": "d4e056f8eb8c3848", "scanner": "scanner-primary", "fingerprint": "729d357629c3a6ab", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-486c8a9e24a99b39", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/pages/ClientMessagesPage.tsx:226"}, "properties": {"repobilityId": "576888068533aae9", "scanner": "scanner-primary", "fingerprint": "486c8a9e24a99b39", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-126c72cf2242d89a", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/pages/LawyerClientsPage.tsx:786"}, "properties": {"repobilityId": "5966d0186f426960", "scanner": "scanner-primary", "fingerprint": "126c72cf2242d89a", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-0725c91af43148ed", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/pages/BlogDetailPage.tsx:174"}, "properties": {"repobilityId": "92d767335ac4581b", "scanner": "scanner-primary", "fingerprint": "0725c91af43148ed", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-8d18831350d4bb6c", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/pages/DashboardPage.tsx:228"}, "properties": {"repobilityId": "5248edf1e73ab3b6", "scanner": "scanner-primary", "fingerprint": "8d18831350d4bb6c", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-77115f5ac4ee8c60", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/pages/CalendarPage.tsx:285"}, "properties": {"repobilityId": "1b3ba8b65fb7ea74", "scanner": "scanner-primary", "fingerprint": "77115f5ac4ee8c60", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-cec9896d79c8595b", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/pages/LawyersDirectoryPage.tsx:382"}, "properties": {"repobilityId": "a283a2a655572ca9", "scanner": "scanner-primary", "fingerprint": "cec9896d79c8595b", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-08509d0f8157b880", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/pages/CommissariatDetailPage.tsx:175"}, "properties": {"repobilityId": "a1860001f9ee25ca", "scanner": "scanner-primary", "fingerprint": "08509d0f8157b880", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-4aea6d5f4a43d29d", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/pages/CommissariatDetailPage.tsx:135"}, "properties": {"repobilityId": "d0202fc4919f5239", "scanner": "scanner-primary", "fingerprint": "4aea6d5f4a43d29d", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-56f0a243f6c85179", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/pages/AdminForumPage.tsx:486"}, "properties": {"repobilityId": "82ff3336948b108b", "scanner": "scanner-primary", "fingerprint": "56f0a243f6c85179", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-54a466de0c9ee32d", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/pages/LawyerClientDetail.tsx:595"}, "properties": {"repobilityId": "0886ad1738ad9de0", "scanner": "scanner-primary", "fingerprint": "54a466de0c9ee32d", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-7176e5d95d18d844", "level": "error", "message": {"text": "Runtime dotenv file present in repo: .env"}, "properties": {"repobilityId": "4b9c737a445874ba", "scanner": "scanner-primary", "fingerprint": "7176e5d95d18d844", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets", "config", "env-file", "runtime-env", "env_file_with_secret"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".env"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-e2cd985899db2063", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in index.html:133"}, "properties": {"repobilityId": "f91708437a3a5445", "scanner": "scanner-primary", "fingerprint": "e2cd985899db2063", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "index.html"}, "region": {"startLine": 133}}}]}, {"ruleId": "scanner-b833f6a73035670f", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in supabase/functions/notify-lawyer-escalation/index.ts:10"}, "properties": {"repobilityId": "49792c8eca7404e4", "scanner": "scanner-primary", "fingerprint": "b833f6a73035670f", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "supabase/functions/notify-lawyer-escalation/index.ts"}, "region": {"startLine": 10}}}]}, {"ruleId": "scanner-2aa20a548dfccdbe", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in supabase/functions/admin-users/index.ts:5"}, "properties": {"repobilityId": "f75bfb7556b48e79", "scanner": "scanner-primary", "fingerprint": "2aa20a548dfccdbe", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "supabase/functions/admin-users/index.ts"}, "region": {"startLine": 5}}}]}, {"ruleId": "scanner-5ad97b5401d0fc80", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in supabase/functions/notify-payment-click/index.ts:6"}, "properties": {"repobilityId": "8aaf0d31a20921cf", "scanner": "scanner-primary", "fingerprint": "5ad97b5401d0fc80", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "supabase/functions/notify-payment-click/index.ts"}, "region": {"startLine": 6}}}]}, {"ruleId": "scanner-83054e666a0b143a", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in supabase/functions/lawyer-send-invite/index.ts:23"}, "properties": {"repobilityId": "624655db1f888aa4", "scanner": "scanner-primary", "fingerprint": "83054e666a0b143a", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "supabase/functions/lawyer-send-invite/index.ts"}, "region": {"startLine": 23}}}]}, {"ruleId": "scanner-c4d3d250fbc11af6", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in supabase/functions/send-deadline-reminders/index.ts:32"}, "properties": {"repobilityId": "3a19c8da630f2921", "scanner": "scanner-primary", "fingerprint": "c4d3d250fbc11af6", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "supabase/functions/send-deadline-reminders/index.ts"}, "region": {"startLine": 32}}}]}, {"ruleId": "scanner-b94b3ec2d6c8c058", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in supabase/functions/delete-user-account/index.ts:20"}, "properties": {"repobilityId": "df02b03157c5fd72", "scanner": "scanner-primary", "fingerprint": "b94b3ec2d6c8c058", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "supabase/functions/delete-user-account/index.ts"}, "region": {"startLine": 20}}}]}, {"ruleId": "scanner-9e1f518d585bf7d4", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in supabase/functions/notify-analysis-complete/index.ts:6"}, "properties": {"repobilityId": "cd3432d67c43faa3", "scanner": "scanner-primary", "fingerprint": "9e1f518d585bf7d4", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "supabase/functions/notify-analysis-complete/index.ts"}, "region": {"startLine": 6}}}]}, {"ruleId": "scanner-c16242441057b18f", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in supabase/functions/import-articles/index.ts:4"}, "properties": {"repobilityId": "aafa4c675ea36d34", "scanner": "scanner-primary", "fingerprint": "c16242441057b18f", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "supabase/functions/import-articles/index.ts"}, "region": {"startLine": 4}}}]}, {"ruleId": "scanner-3503e5461cc2162c", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in src/components/DiagnosisGuideView.tsx:17"}, "properties": {"repobilityId": "ec9f78ea150c3b72", "scanner": "scanner-primary", "fingerprint": "3503e5461cc2162c", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/components/DiagnosisGuideView.tsx"}, "region": {"startLine": 17}}}]}, {"ruleId": "scanner-eda498a47b90e28c", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in src/components/ForumComments.tsx:166"}, "properties": {"repobilityId": "2dcf1d6b6aba0350", "scanner": "scanner-primary", "fingerprint": "eda498a47b90e28c", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/components/ForumComments.tsx"}, "region": {"startLine": 166}}}]}, {"ruleId": "scanner-52dd14c03e56762f", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in src/components/BlogComments.tsx:178"}, "properties": {"repobilityId": "455b1c6b348c430f", "scanner": "scanner-primary", "fingerprint": "52dd14c03e56762f", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/components/BlogComments.tsx"}, "region": {"startLine": 178}}}]}, {"ruleId": "scanner-82f0e20ab2e91434", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in src/components/DocxViewer.tsx:56"}, "properties": {"repobilityId": "c6c3e7f8057d53eb", "scanner": "scanner-primary", "fingerprint": "82f0e20ab2e91434", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/components/DocxViewer.tsx"}, "region": {"startLine": 56}}}]}, {"ruleId": "scanner-93d0283845aa2c2d", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in src/components/ui/chart.tsx:70"}, "properties": {"repobilityId": "33f10636e53b4298", "scanner": "scanner-primary", "fingerprint": "93d0283845aa2c2d", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/components/ui/chart.tsx"}, "region": {"startLine": 70}}}]}, {"ruleId": "scanner-2b5cd08c6be623c6", "level": "note", "message": {"text": "Insecure pattern 'document_write' in src/lib/docxBuilder.ts:243"}, "properties": {"repobilityId": "f9987586327bea18", "scanner": "scanner-primary", "fingerprint": "2b5cd08c6be623c6", "layer": "security", "severity": "low", "confidence": 1.0, "tags": ["owasp", "document_write"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/lib/docxBuilder.ts"}, "region": {"startLine": 243}}}]}, {"ruleId": "scanner-0870c53bad295a4f", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in src/lib/sanitize.ts:75"}, "properties": {"repobilityId": "2f0669cf9c79ebde", "scanner": "scanner-primary", "fingerprint": "0870c53bad295a4f", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/lib/sanitize.ts"}, "region": {"startLine": 75}}}]}, {"ruleId": "scanner-74d4369a24a2cd0e", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in src/pages/DiagnosisDetailPage.tsx:146"}, "properties": {"repobilityId": "8521b2127d15f5ff", "scanner": "scanner-primary", "fingerprint": "74d4369a24a2cd0e", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/pages/DiagnosisDetailPage.tsx"}, "region": {"startLine": 146}}}]}, {"ruleId": "scanner-f9675bd6cf6b5178", "level": "error", "message": {"text": "Possible secret in src/pages/AuthPage.tsx"}, "properties": {"repobilityId": "dc9e5bf6958c76f6", "scanner": "scanner-primary", "fingerprint": "f9675bd6cf6b5178", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/pages/AuthPage.tsx"}, "region": {"startLine": 89}}}]}, {"ruleId": "scanner-fcad5bb0b88c6e5c", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in src/pages/ForumPage.tsx:326"}, "properties": {"repobilityId": "e1d1be4c30741131", "scanner": "scanner-primary", "fingerprint": "fcad5bb0b88c6e5c", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/pages/ForumPage.tsx"}, "region": {"startLine": 326}}}]}, {"ruleId": "scanner-3e7b47114f707ed9", "level": "note", "message": {"text": "Insecure pattern 'document_write' in src/pages/MedicalHistoryPage.tsx:824"}, "properties": {"repobilityId": "4dfbeae2083d5a40", "scanner": "scanner-primary", "fingerprint": "3e7b47114f707ed9", "layer": "security", "severity": "low", "confidence": 1.0, "tags": ["owasp", "document_write"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/pages/MedicalHistoryPage.tsx"}, "region": {"startLine": 824}}}]}, {"ruleId": "scanner-62d4da3746cc10c9", "level": "note", "message": {"text": "Insecure pattern 'document_write' in src/pages/MedicalDocumentsPage.tsx:1624"}, "properties": {"repobilityId": "27e6f286a7bb7b68", "scanner": "scanner-primary", "fingerprint": "62d4da3746cc10c9", "layer": "security", "severity": "low", "confidence": 1.0, "tags": ["owasp", "document_write"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/pages/MedicalDocumentsPage.tsx"}, "region": {"startLine": 1624}}}]}, {"ruleId": "scanner-d3f4ee1725aa7461", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in src/pages/BlogDetailPage.tsx:174"}, "properties": {"repobilityId": "6fcd785195cb0a4a", "scanner": "scanner-primary", "fingerprint": "d3f4ee1725aa7461", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/pages/BlogDetailPage.tsx"}, "region": {"startLine": 174}}}]}, {"ruleId": "scanner-834b7cc29132a09b", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in src/pages/CommissariatDetailPage.tsx:135"}, "properties": {"repobilityId": "1f20fa953ba9d6df", "scanner": "scanner-primary", "fingerprint": "834b7cc29132a09b", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/pages/CommissariatDetailPage.tsx"}, "region": {"startLine": 135}}}]}, {"ruleId": "scanner-fe3f64ee52bb08fc", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in src/pages/AdminForumPage.tsx:486"}, "properties": {"repobilityId": "81fd7d33df1558e0", "scanner": "scanner-primary", "fingerprint": "fe3f64ee52bb08fc", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/pages/AdminForumPage.tsx"}, "region": {"startLine": 486}}}]}, {"ruleId": "scanner-a90f69fcab0dae82", "level": "error", "message": {"text": "Possible secret in src/pages/ResetPasswordPage.tsx"}, "properties": {"repobilityId": "9f71b6863a9ccb5f", "scanner": "scanner-primary", "fingerprint": "a90f69fcab0dae82", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/pages/ResetPasswordPage.tsx"}, "region": {"startLine": 44}}}]}, {"ruleId": "scanner-4b87d12c29f78b3f", "level": "error", "message": {"text": "Possible secret in src/pages/RegisterPage.tsx"}, "properties": {"repobilityId": "921a5a110ace3135", "scanner": "scanner-primary", "fingerprint": "4b87d12c29f78b3f", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/pages/RegisterPage.tsx"}, "region": {"startLine": 82}}}]}, {"ruleId": "scanner-b5fd615216336099", "level": "warning", "message": {"text": "Insecure pattern 'local_storage_auth_token' in src/hooks/useAnalyticsTracking.ts:10"}, "properties": {"repobilityId": "72f8f45289e6b3a2", "scanner": "scanner-primary", "fingerprint": "b5fd615216336099", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "local_storage_auth_token"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/hooks/useAnalyticsTracking.ts"}, "region": {"startLine": 10}}}]}, {"ruleId": "scanner-4601e3ad3bb28677", "level": "warning", "message": {"text": "No CI/CD pipelines detected"}, "properties": {"repobilityId": "c3ee439bce2bc51e", "scanner": "scanner-primary", "fingerprint": "4601e3ad3bb28677", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["coverage"]}}, {"ruleId": "scanner-556e1758f9aa422c", "level": "note", "message": {"text": "Very large file: supabase/functions/analyze-medical-document/index.ts (939 lines)"}, "properties": {"repobilityId": "b228c4938f6303f5", "scanner": "scanner-primary", "fingerprint": "556e1758f9aa422c", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-47ca1008f67a095f", "level": "note", "message": {"text": "Very large file: src/integrations/supabase/types.ts (2232 lines)"}, "properties": {"repobilityId": "ede8ac5264027534", "scanner": "scanner-primary", "fingerprint": "47ca1008f67a095f", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-87dce3ebe639535a", "level": "note", "message": {"text": "Very large file: src/pages/AIChatDashboardPage.tsx (1274 lines)"}, "properties": {"repobilityId": "7c326871e09042ae", "scanner": "scanner-primary", "fingerprint": "87dce3ebe639535a", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-75ab923c0be3e370", "level": "note", "message": {"text": "Very large file: src/pages/MedicalHistoryPage.tsx (1495 lines)"}, "properties": {"repobilityId": "9dec505b6bdf834c", "scanner": "scanner-primary", "fingerprint": "75ab923c0be3e370", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-117597ec80b38c98", "level": "note", "message": {"text": "Very large file: src/pages/MedicalDocumentsPage.tsx (2816 lines)"}, "properties": {"repobilityId": "d1c4f3088a7b8872", "scanner": "scanner-primary", "fingerprint": "117597ec80b38c98", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-1f70f22a9095c3c0", "level": "note", "message": {"text": "Very large file: src/pages/LawyerChatPage.tsx (1320 lines)"}, "properties": {"repobilityId": "dccfafdf3cd0b80d", "scanner": "scanner-primary", "fingerprint": "1f70f22a9095c3c0", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-30aa270a3cadc427", "level": "note", "message": {"text": "Very large file: src/pages/LawyerClientsPage.tsx (962 lines)"}, "properties": {"repobilityId": "cd49b9a95b6686e7", "scanner": "scanner-primary", "fingerprint": "30aa270a3cadc427", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-726bf0eba090dd88", "level": "note", "message": {"text": "Very large file: src/pages/LawyerClientDetail.tsx (1602 lines)"}, "properties": {"repobilityId": "22f7e1320f329f83", "scanner": "scanner-primary", "fingerprint": "726bf0eba090dd88", "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": "66d3090c6211ccac", "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": "4d061f228e1f0b63", "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": "7d2292b262415c21", "scanner": "scanner-primary", "fingerprint": "72b2a6250083a784", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["placeholder", "mock-data", "incomplete", "generated-repo-pattern"]}}, {"ruleId": "scanner-2d0c7b7ab8f8aacf", "level": "warning", "message": {"text": "Critical user flow still appears backed by mock or placeholder data"}, "properties": {"repobilityId": "6892887fc45c1571", "scanner": "scanner-primary", "fingerprint": "2d0c7b7ab8f8aacf", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["placeholder", "mock-data", "critical-flow", "generated-repo-pattern"]}}, {"ruleId": "scanner-b9088664ace7f748", "level": "warning", "message": {"text": "Composite production-readiness gap"}, "properties": {"repobilityId": "8addbc19f32c2d1f", "scanner": "scanner-primary", "fingerprint": "b9088664ace7f748", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["production-readiness", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-749d4bc1bd66df5f", "level": "warning", "message": {"text": "Agent instructions exist but release-hardening basics are missing"}, "properties": {"repobilityId": "11f76fe16d9b840c", "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": "39f147278b2d5fc3", "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": "c11639a2eff290af", "scanner": "scanner-primary", "fingerprint": "8424db9c75e04ba4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["provenance", "git-history", "generated-repo-pattern"]}}, {"ruleId": "scanner-122f91b7f2906dc4", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: .claude/settings.json"}, "properties": {"repobilityId": "a2967269048b6a9d", "scanner": "scanner-primary", "fingerprint": "122f91b7f2906dc4", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/settings.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-5828d80909523de4", "level": "none", "message": {"text": "Commented-code block (5 lines) in vite.config.ts:41"}, "properties": {"repobilityId": "e83eb1adf29a3f29", "scanner": "scanner-primary", "fingerprint": "5828d80909523de4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-63176a667d6229a4", "level": "none", "message": {"text": "Commented-code block (6 lines) in scripts/ingest_rag.py:92"}, "properties": {"repobilityId": "b2ca5f1170136ab6", "scanner": "scanner-primary", "fingerprint": "63176a667d6229a4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a86f1bad0f96d485", "level": "none", "message": {"text": "Commented-code block (8 lines) in supabase/functions/questionnaire-analyze/index.ts:10"}, "properties": {"repobilityId": "02a019c41e54b885", "scanner": "scanner-primary", "fingerprint": "a86f1bad0f96d485", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-46d0fae52d9c484d", "level": "note", "message": {"text": "Legacy-named symbol `medical_documents_v2` in supabase/functions/analyze-medical-document/index.ts:762"}, "properties": {"repobilityId": "cacd07ae59ac7480", "scanner": "scanner-primary", "fingerprint": "46d0fae52d9c484d", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-d40d131d379fb197", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 supabase/functions/chat-rag/index.ts:88"}, "properties": {"repobilityId": "751c453af2e847bb", "scanner": "scanner-primary", "fingerprint": "d40d131d379fb197", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-7fc366fa6dbbd8a3", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 supabase/functions/parse-summons/index.ts:101"}, "properties": {"repobilityId": "fca9be5d001486e9", "scanner": "scanner-primary", "fingerprint": "7fc366fa6dbbd8a3", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-eba2f5542087d8fa", "level": "note", "message": {"text": "Legacy-named symbol `medical_documents_v2` in supabase/functions/lawyer-analyze-client/index.ts:61"}, "properties": {"repobilityId": "80c16624083dfede", "scanner": "scanner-primary", "fingerprint": "eba2f5542087d8fa", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-b2a0109bb68dc642", "level": "none", "message": {"text": "Commented-code block (6 lines) in supabase/functions/lawyer-analyze-client/index.ts:60"}, "properties": {"repobilityId": "69adfa1ec1175119", "scanner": "scanner-primary", "fingerprint": "b2a0109bb68dc642", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-88ca53329147feb7", "level": "none", "message": {"text": "Commented-code block (7 lines) in supabase/functions/lawyer-send-invite/index.ts:4"}, "properties": {"repobilityId": "c7649b00265eb916", "scanner": "scanner-primary", "fingerprint": "88ca53329147feb7", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-143ad046b7201a41", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 supabase/functions/enhance-document/index.ts:92"}, "properties": {"repobilityId": "7a0937951acc889c", "scanner": "scanner-primary", "fingerprint": "143ad046b7201a41", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-f8d41e9ec2380cf8", "level": "note", "message": {"text": "Legacy-named symbol `medical_documents_v2` in supabase/functions/delete-user-account/index.ts:77"}, "properties": {"repobilityId": "1364bee07a4b7621", "scanner": "scanner-primary", "fingerprint": "f8d41e9ec2380cf8", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-24c4e165b86559d2", "level": "none", "message": {"text": "Commented-code block (6 lines) in supabase/functions/delete-user-account/index.ts:4"}, "properties": {"repobilityId": "aa93177537066a75", "scanner": "scanner-primary", "fingerprint": "24c4e165b86559d2", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4e225e218e71e72e", "level": "note", "message": {"text": "Legacy-named symbol `medical_documents_v2` in supabase/functions/generate-appeal/index.ts:134"}, "properties": {"repobilityId": "a01a1687fe6d4705", "scanner": "scanner-primary", "fingerprint": "4e225e218e71e72e", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-e3cdbcbc36a28e2d", "level": "none", "message": {"text": "Commented-code block (5 lines) in supabase/functions/sitemap/index.ts:4"}, "properties": {"repobilityId": "3b04b9c7cd3f3eeb", "scanner": "scanner-primary", "fingerprint": "e3cdbcbc36a28e2d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-07ffdb44a5017663", "level": "none", "message": {"text": "Commented-code block (5 lines) in supabase/functions/track-demo/index.ts:4"}, "properties": {"repobilityId": "a226be674720fbc1", "scanner": "scanner-primary", "fingerprint": "07ffdb44a5017663", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4433b2d7990c02b1", "level": "note", "message": {"text": "Legacy-named symbol `medical_documents_v2` in supabase/functions/lawyer-ready-check/index.ts:71"}, "properties": {"repobilityId": "173e6804739298b5", "scanner": "scanner-primary", "fingerprint": "4433b2d7990c02b1", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-0bf8900f3c54f4b9", "level": "none", "message": {"text": "Commented-code block (5 lines) in supabase/functions/lawyer-build-plan/index.ts:8"}, "properties": {"repobilityId": "e07774d81d465890", "scanner": "scanner-primary", "fingerprint": "0bf8900f3c54f4b9", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-73cd1317b518fcb2", "level": "note", "message": {"text": "Legacy-named symbol `medical_documents_v2` in supabase/functions/_shared/contextBundle.ts:14"}, "properties": {"repobilityId": "f71acd50b5d95697", "scanner": "scanner-primary", "fingerprint": "73cd1317b518fcb2", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-5f9602d6e018a543", "level": "note", "message": {"text": "Legacy-named symbol `medical_documents_v2` in supabase/functions/_shared/agentTools.ts:39"}, "properties": {"repobilityId": "24be2140da860d3e", "scanner": "scanner-primary", "fingerprint": "5f9602d6e018a543", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-98f563d2c3464dde", "level": "none", "message": {"text": "Commented-code block (7 lines) in supabase/functions/_shared/agentTools.ts:9"}, "properties": {"repobilityId": "795bc8b4b5f2df10", "scanner": "scanner-primary", "fingerprint": "98f563d2c3464dde", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-771d968525d922ff", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 supabase/functions/_shared/llmGateway.ts:98"}, "properties": {"repobilityId": "c81f1c3781315687", "scanner": "scanner-primary", "fingerprint": "771d968525d922ff", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-a7ce264a495be31c", "level": "none", "message": {"text": "Commented-code block (8 lines) in supabase/functions/_shared/ragSearch.ts:8"}, "properties": {"repobilityId": "ca3898bb23578f85", "scanner": "scanner-primary", "fingerprint": "a7ce264a495be31c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-53296fb03c922c42", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 supabase/functions/_shared/ragSearch.ts:80"}, "properties": {"repobilityId": "4149c783f1a640fa", "scanner": "scanner-primary", "fingerprint": "53296fb03c922c42", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-ba57902abac28553", "level": "note", "message": {"text": "Legacy-named symbol `medical_documents_v2` in src/integrations/supabase/types.ts:751"}, "properties": {"repobilityId": "6211deea7856647e", "scanner": "scanner-primary", "fingerprint": "ba57902abac28553", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-fda8a84f9722b92f", "level": "note", "message": {"text": "Legacy-named symbol `exit_intent_shown_v1` in src/components/ExitIntentDialog.tsx:10"}, "properties": {"repobilityId": "30c754a9579200f2", "scanner": "scanner-primary", "fingerprint": "fda8a84f9722b92f", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-996c3c2683d9cf5e", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/PdfViewer.tsx:47"}, "properties": {"repobilityId": "a5bf673c8b0b51dd", "scanner": "scanner-primary", "fingerprint": "996c3c2683d9cf5e", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-6d17e3875c8cead6", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/components/LawyerCasePlanner.tsx:25"}, "properties": {"repobilityId": "e45e0319eec3a78f", "scanner": "scanner-primary", "fingerprint": "6d17e3875c8cead6", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5f8add0176d202d3", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/components/DiseaseScheduleDrawer.tsx:13"}, "properties": {"repobilityId": "508921fe1b6e4c1b", "scanner": "scanner-primary", "fingerprint": "5f8add0176d202d3", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-210e912f11e2b93e", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/SendDocToLawyerButton.tsx:76"}, "properties": {"repobilityId": "6ebc0242b2eb3116", "scanner": "scanner-primary", "fingerprint": "210e912f11e2b93e", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-6177dcefbfd81563", "level": "note", "message": {"text": "Legacy-named symbol `medical_documents_v2` in src/components/TemplatesWorkspace.tsx:46"}, "properties": {"repobilityId": "a22d528810051adf", "scanner": "scanner-primary", "fingerprint": "6177dcefbfd81563", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-d101ad162187344e", "level": "note", "message": {"text": "Legacy-named symbol `medical_documents_v2` in src/components/LawyerDossierExportButton.tsx:36"}, "properties": {"repobilityId": "129e6476a1d71cd3", "scanner": "scanner-primary", "fingerprint": "d101ad162187344e", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-a00ba78759f92a64", "level": "note", "message": {"text": "Legacy-named symbol `medical_documents_v2` in src/components/DossierExportButton.tsx:46"}, "properties": {"repobilityId": "310a9d9d8a1914bc", "scanner": "scanner-primary", "fingerprint": "a00ba78759f92a64", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-50a0f7ecea18f356", "level": "note", "message": {"text": "Legacy-named symbol `medical_documents_v2` in src/components/dashboard/NotificationsInbox.tsx:61"}, "properties": {"repobilityId": "e2c91903f157d591", "scanner": "scanner-primary", "fingerprint": "50a0f7ecea18f356", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-6ee48be851d45e6a", "level": "note", "message": {"text": "Legacy-named symbol `medical_documents_v2` in src/components/dashboard/AICaseSummary.tsx:53"}, "properties": {"repobilityId": "66b30d9a5e980138", "scanner": "scanner-primary", "fingerprint": "6ee48be851d45e6a", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-68206c131e52602c", "level": "note", "message": {"text": "Legacy-named symbol `medical_documents_v2` in src/components/dashboard/CasePlanCard.tsx:89"}, "properties": {"repobilityId": "38b0439db3fe177f", "scanner": "scanner-primary", "fingerprint": "68206c131e52602c", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-5b0974edb2c0d616", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/lib/autoAttachToBrand.ts:1"}, "properties": {"repobilityId": "334537b77fafbd47", "scanner": "scanner-primary", "fingerprint": "5b0974edb2c0d616", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e33b4c39c74090be", "level": "note", "message": {"text": "Legacy-named symbol `decision_copy` in src/lib/docTemplates.ts:377"}, "properties": {"repobilityId": "812d5eaa5ba01957", "scanner": "scanner-primary", "fingerprint": "e33b4c39c74090be", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-a7883d9f139103be", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/lib/docTemplates.ts:7"}, "properties": {"repobilityId": "48db96be6d0eef83", "scanner": "scanner-primary", "fingerprint": "a7883d9f139103be", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-330b5167722b094b", "level": "note", "message": {"text": "Legacy-named symbol `medical_documents_v2` in src/lib/buildAIContext.ts:44"}, "properties": {"repobilityId": "ebc0f7c6ae4a5462", "scanner": "scanner-primary", "fingerprint": "330b5167722b094b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-ef4327e88c3f5d5f", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/lib/buildAIContext.ts:4"}, "properties": {"repobilityId": "20fc6fddf86db949", "scanner": "scanner-primary", "fingerprint": "ef4327e88c3f5d5f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-86a276f5f7ad3bcd", "level": "none", "message": {"text": "Commented-code block (7 lines) in src/lib/seoMeta.ts:3"}, "properties": {"repobilityId": "9208b0fe022a6272", "scanner": "scanner-primary", "fingerprint": "86a276f5f7ad3bcd", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d2053a08f8f8b32b", "level": "note", "message": {"text": "Legacy-named symbol `medical_documents_v2` in src/lib/dossier.ts:7"}, "properties": {"repobilityId": "e02c7c0324d96a05", "scanner": "scanner-primary", "fingerprint": "d2053a08f8f8b32b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-58fe24afd4e0f9e0", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/lib/dossier.ts:3"}, "properties": {"repobilityId": "706ae08c36eaf37b", "scanner": "scanner-primary", "fingerprint": "58fe24afd4e0f9e0", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8211e08f1e1064e4", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/lib/cyrillicPdfFont.ts:51"}, "properties": {"repobilityId": "379c073b0fed1cb3", "scanner": "scanner-primary", "fingerprint": "8211e08f1e1064e4", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-854419deb3ae94ce", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/lib/rb565.ts:3"}, "properties": {"repobilityId": "8f195f33b925636a", "scanner": "scanner-primary", "fingerprint": "854419deb3ae94ce", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-94508975b296b98d", "level": "none", "message": {"text": "Commented-code block (7 lines) in src/lib/docxBuilder.ts:1"}, "properties": {"repobilityId": "2af055edbc718a2a", "scanner": "scanner-primary", "fingerprint": "94508975b296b98d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-fbd7c36a17c57abc", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/lib/supabaseConfig.ts:1"}, "properties": {"repobilityId": "038b4bf5e7842ebd", "scanner": "scanner-primary", "fingerprint": "fbd7c36a17c57abc", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-926893a2917d35f0", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/pages/AIChatDashboardPage.tsx:523"}, "properties": {"repobilityId": "58b72568d9373b43", "scanner": "scanner-primary", "fingerprint": "926893a2917d35f0", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-b7363d2bac61a7ad", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/pages/LawyerAgendaPage.tsx:24"}, "properties": {"repobilityId": "136b9c5f4a2a804f", "scanner": "scanner-primary", "fingerprint": "b7363d2bac61a7ad", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-30923ccd52d6f263", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/pages/AdminUsersPage.tsx:212"}, "properties": {"repobilityId": "c780c40808fe4c47", "scanner": "scanner-primary", "fingerprint": "30923ccd52d6f263", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-9552086547a4dd56", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/pages/AdminArticlesPage.tsx:67"}, "properties": {"repobilityId": "994ebd833a69259d", "scanner": "scanner-primary", "fingerprint": "9552086547a4dd56", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-b08ac05a7d718103", "level": "note", "message": {"text": "Legacy-named symbol `medical_documents_v2` in src/pages/AdminAnalyticsPage.tsx:124"}, "properties": {"repobilityId": "658839a95a0f8aa7", "scanner": "scanner-primary", "fingerprint": "b08ac05a7d718103", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-bd38ae9ecb860f8a", "level": "note", "message": {"text": "Legacy-named symbol `medical_documents_v2` in src/pages/LawyerTemplatesPage.tsx:91"}, "properties": {"repobilityId": "2aac1063a8a91c21", "scanner": "scanner-primary", "fingerprint": "bd38ae9ecb860f8a", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-af6be37ab9f91c94", "level": "note", "message": {"text": "Legacy-named symbol `medical_documents_v2` in src/pages/MedicalQuestionnairePage.tsx:253"}, "properties": {"repobilityId": "539f449fd4d095af", "scanner": "scanner-primary", "fingerprint": "af6be37ab9f91c94", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-c7a282f8ac3651a8", "level": "note", "message": {"text": "Legacy-named symbol `medical_documents_v2` in src/pages/MedicalHistoryPage.tsx:263"}, "properties": {"repobilityId": "c59f27ffe00b7445", "scanner": "scanner-primary", "fingerprint": "c7a282f8ac3651a8", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-e6866e8c93248981", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/pages/MedicalHistoryPage.tsx:784"}, "properties": {"repobilityId": "c4dbc722f648e3d9", "scanner": "scanner-primary", "fingerprint": "e6866e8c93248981", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-caede482918e6f5f", "level": "note", "message": {"text": "Legacy-named symbol `medical_documents_v2` in src/pages/MedicalDocumentsPage.tsx:269"}, "properties": {"repobilityId": "c222a055d63b47be", "scanner": "scanner-primary", "fingerprint": "caede482918e6f5f", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-669a02cd7aaa6909", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/pages/MedicalDocumentsPage.tsx:1222"}, "properties": {"repobilityId": "56157076b5d9944d", "scanner": "scanner-primary", "fingerprint": "669a02cd7aaa6909", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-cd3fe6d46c6a01dc", "level": "note", "message": {"text": "Legacy-named symbol `medical_documents_v2` in src/pages/UserTemplatesPage.tsx:26"}, "properties": {"repobilityId": "63e52beee5dc93b0", "scanner": "scanner-primary", "fingerprint": "cd3fe6d46c6a01dc", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-94716ae9095cf4fe", "level": "none", "message": {"text": "Commented-code block (7 lines) in src/pages/LawyerClientsPage.tsx:181"}, "properties": {"repobilityId": "7949f758fdebf370", "scanner": "scanner-primary", "fingerprint": "94716ae9095cf4fe", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-01ce3a78a84342e6", "level": "note", "message": {"text": "Legacy-named symbol `medical_documents_v2` in src/pages/LawyerClientDetail.tsx:281"}, "properties": {"repobilityId": "94828940fa5f5990", "scanner": "scanner-primary", "fingerprint": "01ce3a78a84342e6", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-4fb03f369c3c7945", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/hooks/useLawyerProfile.ts:51"}, "properties": {"repobilityId": "eaefa401a09198b5", "scanner": "scanner-primary", "fingerprint": "4fb03f369c3c7945", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ba7de5458ca1ab4a", "level": "note", "message": {"text": "Legacy-named symbol `medical_documents_v2` in src/hooks/useCaseProgress.ts:52"}, "properties": {"repobilityId": "4382a7361be3ee45", "scanner": "scanner-primary", "fingerprint": "ba7de5458ca1ab4a", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-710439dc1363b9a5", "level": "warning", "message": {"text": "Frontend route `/u/:slug` has no Link/navigate to it \u2014 src/App.tsx"}, "properties": {"repobilityId": "f9f21064740443f4", "scanner": "scanner-primary", "fingerprint": "710439dc1363b9a5", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-70a82d463bf51927", "level": "warning", "message": {"text": "Frontend route `/u/:slug/auth` has no Link/navigate to it \u2014 src/App.tsx"}, "properties": {"repobilityId": "95edeeb4bf7bb65b", "scanner": "scanner-primary", "fingerprint": "70a82d463bf51927", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-6aaf4acef0499204", "level": "warning", "message": {"text": "Frontend route `/u/:slug/register` has no Link/navigate to it \u2014 src/App.tsx"}, "properties": {"repobilityId": "661e47482dc6f85d", "scanner": "scanner-primary", "fingerprint": "6aaf4acef0499204", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-b20ac9b80025cfde", "level": "warning", "message": {"text": "Frontend route `/u/:slug/login` has no Link/navigate to it \u2014 src/App.tsx"}, "properties": {"repobilityId": "ccec63a68bb345a0", "scanner": "scanner-primary", "fingerprint": "b20ac9b80025cfde", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-b5b094b367a793c1", "level": "warning", "message": {"text": "Frontend route `/u/:slug/dashboard` has no Link/navigate to it \u2014 src/App.tsx"}, "properties": {"repobilityId": "81e1403c561caa44", "scanner": "scanner-primary", "fingerprint": "b5b094b367a793c1", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-967f2abb9316ec6f", "level": "warning", "message": {"text": "Frontend route `/u/:slug/dashboard/ai-chat` has no Link/navigate to it \u2014 src/App.tsx"}, "properties": {"repobilityId": "7ae4c210a48da935", "scanner": "scanner-primary", "fingerprint": "967f2abb9316ec6f", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-8e2ecc4231be6de3", "level": "warning", "message": {"text": "Frontend route `/u/:slug/dashboard/medical-documents` has no Link/navigate to it \u2014 src/App.tsx"}, "properties": {"repobilityId": "7800601790cb98a6", "scanner": "scanner-primary", "fingerprint": "8e2ecc4231be6de3", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-2733a135b4e5b236", "level": "warning", "message": {"text": "Frontend route `/u/:slug/dashboard/templates` has no Link/navigate to it \u2014 src/App.tsx"}, "properties": {"repobilityId": "61140b83c7667241", "scanner": "scanner-primary", "fingerprint": "2733a135b4e5b236", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-6a7cae2c4dbbc634", "level": "warning", "message": {"text": "Frontend route `/u/:slug/dashboard/case-tracking` has no Link/navigate to it \u2014 src/App.tsx"}, "properties": {"repobilityId": "e2a4ac1d41f30b0a", "scanner": "scanner-primary", "fingerprint": "6a7cae2c4dbbc634", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-d8472e82e0a439f1", "level": "warning", "message": {"text": "Frontend route `/u/:slug/dashboard/calendar` has no Link/navigate to it \u2014 src/App.tsx"}, "properties": {"repobilityId": "c58fafd8436b3ea8", "scanner": "scanner-primary", "fingerprint": "d8472e82e0a439f1", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-d1c0c264421d4a62", "level": "warning", "message": {"text": "Frontend route `/u/:slug/medical-history` has no Link/navigate to it \u2014 src/App.tsx"}, "properties": {"repobilityId": "a954610c8c756e55", "scanner": "scanner-primary", "fingerprint": "d1c0c264421d4a62", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-6328b75558ddb89f", "level": "warning", "message": {"text": "Frontend route `/u/:slug/medical-questionnaire` has no Link/navigate to it \u2014 src/App.tsx"}, "properties": {"repobilityId": "dcbaf3cd9741a9fb", "scanner": "scanner-primary", "fingerprint": "6328b75558ddb89f", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-16c87cbdf752eea6", "level": "warning", "message": {"text": "Frontend route `/u/:slug/profile` has no Link/navigate to it \u2014 src/App.tsx"}, "properties": {"repobilityId": "c4e3903da0bf4953", "scanner": "scanner-primary", "fingerprint": "16c87cbdf752eea6", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-76861156e3a05f94", "level": "warning", "message": {"text": "Frontend route `/u/:slug/diagnoses` has no Link/navigate to it \u2014 src/App.tsx"}, "properties": {"repobilityId": "fd5cf5f115fe661f", "scanner": "scanner-primary", "fingerprint": "76861156e3a05f94", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-78c02d9bef1614d1", "level": "warning", "message": {"text": "Frontend route `/u/:slug/diagnoses/:diagnosisSlug` has no Link/navigate to it \u2014 src/App.tsx"}, "properties": {"repobilityId": "cc79ada252c68272", "scanner": "scanner-primary", "fingerprint": "78c02d9bef1614d1", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-e07b63c05ef1494d", "level": "warning", "message": {"text": "Frontend route `/u/:slug/client/messages` has no Link/navigate to it \u2014 src/App.tsx"}, "properties": {"repobilityId": "db8854f666de2ad3", "scanner": "scanner-primary", "fingerprint": "e07b63c05ef1494d", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-6d20ea94f8801613", "level": "warning", "message": {"text": "Frontend route `/u/:slug/client/chat/:lawyerClientId` has no Link/navigate to it \u2014 src/App.tsx"}, "properties": {"repobilityId": "205e523dbf4735b0", "scanner": "scanner-primary", "fingerprint": "6d20ea94f8801613", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-9f93c47c81f8c32e", "level": "warning", "message": {"text": "Frontend route `/u/:slug/family` has no Link/navigate to it \u2014 src/App.tsx"}, "properties": {"repobilityId": "f7e9018c3f02204a", "scanner": "scanner-primary", "fingerprint": "9f93c47c81f8c32e", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-7f1bec1fd65c0879", "level": "warning", "message": {"text": "Frontend route `/reset-password` has no Link/navigate to it \u2014 src/App.tsx"}, "properties": {"repobilityId": "934747c714145754", "scanner": "scanner-primary", "fingerprint": "7f1bec1fd65c0879", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-4370d0a669df459d", "level": "warning", "message": {"text": "Frontend route `/diagnoses/:slug` has no Link/navigate to it \u2014 src/App.tsx"}, "properties": {"repobilityId": "25b613a3ba7f109e", "scanner": "scanner-primary", "fingerprint": "4370d0a669df459d", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-42b352ad2d83287f", "level": "warning", "message": {"text": "Frontend route `/blog/:slug` has no Link/navigate to it \u2014 src/App.tsx"}, "properties": {"repobilityId": "72216d0671efb39d", "scanner": "scanner-primary", "fingerprint": "42b352ad2d83287f", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-dc72502d9acc976a", "level": "warning", "message": {"text": "Frontend route `/commissariats/:slug` has no Link/navigate to it \u2014 src/App.tsx"}, "properties": {"repobilityId": "7ea3a1efcdb9cddb", "scanner": "scanner-primary", "fingerprint": "dc72502d9acc976a", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-35e6bc17489d9eae", "level": "warning", "message": {"text": "Frontend route `/lawyer/clients/:clientId` has no Link/navigate to it \u2014 src/App.tsx"}, "properties": {"repobilityId": "5fbe6241336ef0e3", "scanner": "scanner-primary", "fingerprint": "35e6bc17489d9eae", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-08dd03c3c4eb6493", "level": "warning", "message": {"text": "Frontend route `/lawyer/chat/:clientId` has no Link/navigate to it \u2014 src/App.tsx"}, "properties": {"repobilityId": "621f1b5d65c423b8", "scanner": "scanner-primary", "fingerprint": "08dd03c3c4eb6493", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-8caed0a6f5a278e2", "level": "warning", "message": {"text": "Frontend route `/client/chat/:lawyerClientId` has no Link/navigate to it \u2014 src/App.tsx"}, "properties": {"repobilityId": "850862cebf784a45", "scanner": "scanner-primary", "fingerprint": "8caed0a6f5a278e2", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-20525cd5a28e455e", "level": "warning", "message": {"text": "Frontend route `/family/accept/:token` has no Link/navigate to it \u2014 src/App.tsx"}, "properties": {"repobilityId": "f5e2da3b9c0462cc", "scanner": "scanner-primary", "fingerprint": "20525cd5a28e455e", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}]}]}