{"version": "2.1.0", "$schema": "https://json.schemastore.org/sarif-2.1.0.json", "runs": [{"tool": {"driver": {"name": "Repobility", "informationUri": "https://repobility.com", "rules": [{"id": "foundry_blueprint_gap", "name": "Foundry mined blueprint gap alignment: yasharora1398-create/NetStart", "shortDescription": {"text": "Foundry mined blueprint gap alignment: yasharora1398-create/NetStart"}, "fullDescription": {"text": "Graph query export: Human feedback aligned with blueprint or architecture gaps\nQuery id: blueprint_gap_alignment\nQuery type: motif_query\nIntent: Curriculum-gap examples connecting issue threads to helicopter-view gaps.\nMotif: blueprint_gap_alignment\nTraining usage: curriculum_gap\nGraph gold label: supported_by_verification_signal\nRepo: yasharora1398-create/NetStart\nThread: yasharora1398-create/NetStart#1\nEvidence:\nGraph motif: Human feedback aligns with blueprint or architecture gaps\nMotif id: blueprint_gap_alignment\nPolarity: mixed\nTraining usage: curriculum_gap\nSeverity: medium\nRepo: yasharora1398-create/NetStart\nThread: yasharora1398-create/NetStart#1\nGraph gold label: supported_by_verification_signal\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: yasharora1398-create/NetStart#1\nRepo: yasharora1398-create/NetStart\nIssue/PR number: 1\nGraph consistency label: supported_by_verification_signal\nNodes: 107\nEdges: 155\nNode types: {'pr_file': 85, 'link_quality': 6, 'commit"}, "properties": {"scanner": "foundry_dataset", "category": "tech_debt", "severity": "medium", "confidence": 0.7, "cwe": "", "owasp": ""}}, {"id": "foundry_test_ci_gap", "name": "Foundry mined test ci gap after feedback: yasharora1398-create/NetStart", "shortDescription": {"text": "Foundry mined test ci gap after feedback: yasharora1398-create/NetStart"}, "fullDescription": {"text": "Graph query export: Feedback exposes missing tests or CI\nQuery id: test_ci_gap_after_feedback\nQuery type: motif_query\nIntent: Hard negatives for feedback/fix chains without adequate guardrails.\nMotif: test_ci_gap_after_feedback\nTraining usage: hard_negative\nGraph gold label: supported_by_verification_signal\nRepo: yasharora1398-create/NetStart\nThread: yasharora1398-create/NetStart#1\nEvidence:\nGraph motif: Feedback or fix context exposes missing test/CI guardrails\nMotif id: test_ci_gap_after_feedback\nPolarity: bad\nTraining usage: hard_negative\nSeverity: high\nRepo: yasharora1398-create/NetStart\nThread: yasharora1398-create/NetStart#1\nGraph gold label: supported_by_verification_signal\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: yasharora1398-create/NetStart#1\nRepo: yasharora1398-create/NetStart\nIssue/PR number: 1\nGraph consistency label: supported_by_verification_signal\nNodes: 107\nEdges: 155\nNode types: {'pr_file': 85, 'link_quality': 6, 'commit': 5, 'comment': 2, 'com"}, "properties": {"scanner": "foundry_dataset", "category": "testing", "severity": "high", "confidence": 0.78, "cwe": "", "owasp": ""}}, {"id": "foundry_schema_ui_api_gap", "name": "Foundry mined schema ui api mismatch: yasharora1398-create/NetStart", "shortDescription": {"text": "Foundry mined schema ui api mismatch: yasharora1398-create/NetStart"}, "fullDescription": {"text": "Graph query export: Schema, UI, and API mismatch\nQuery id: schema_ui_api_mismatch\nQuery type: motif_query\nIntent: Assumption-check examples for data-path consistency across layers.\nMotif: schema_ui_api_mismatch\nTraining usage: assumption_check\nGraph gold label: supported_by_verification_signal\nRepo: yasharora1398-create/NetStart\nThread: yasharora1398-create/NetStart#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: yasharora1398-create/NetStart\nThread: yasharora1398-create/NetStart#1\nGraph gold label: supported_by_verification_signal\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: yasharora1398-create/NetStart#1\nRepo: yasharora1398-create/NetStart\nIssue/PR number: 1\nGraph consistency label: supported_by_verification_signal\nNodes: 107\nEdges: 155\nNode types: {'pr_file': 85, 'link_quality': 6, 'commit': 5, 'comment': 2, 'comment_chain': 2, 'alignment': 2"}, "properties": {"scanner": "foundry_dataset", "category": "quality", "severity": "high", "confidence": 0.76, "cwe": "", "owasp": ""}}, {"id": "scanner-bead75b0f9233e05", "name": "No API endpoints detected", "shortDescription": {"text": "No API endpoints detected"}, "fullDescription": {"text": "The scanner did not find FastAPI/Flask/Express/NestJS/GraphQL/gRPC routes. If this repo exposes APIs, the framework may be unsupported."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "info", "confidence": 1.0}}, {"id": "scanner-3e67327d36ecf20c", "name": "Stray `console.log` in TS/JS \u2014 scripts/kill-gradients-and-green-on-green.js:117", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/kill-gradients-and-green-on-green.js:117"}, "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-e92f9b1db39fe854", "name": "Stray `console.log` in TS/JS \u2014 scripts/strip-translucency.js:169", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/strip-translucency.js:169"}, "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-a5ed6403f729d61d", "name": "Stray `console.log` in TS/JS \u2014 scripts/add-use-client-to-views.js:23", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/add-use-client-to-views.js:23"}, "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-5e1c09e5d034eab1", "name": "Stray `console.log` in TS/JS \u2014 scripts/fix-button-contrast.js:117", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/fix-button-contrast.js:117"}, "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-4aa4d707e0fccb6e", "name": "Stray `console.log` in TS/JS \u2014 scripts/strip-orphan-smartquotes.js:75", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/strip-orphan-smartquotes.js:75"}, "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-bbd08d3dccf74e2e", "name": "Stray `console.log` in TS/JS \u2014 scripts/create-route-wrappers.js:49", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/create-route-wrappers.js:49"}, "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-b4a040618cb3fb08", "name": "Stray `console.log` in TS/JS \u2014 scripts/strip-orphan-modifiers.js:126", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/strip-orphan-modifiers.js:126"}, "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-195668e1162f37c2", "name": "Stray `console.log` in TS/JS \u2014 scripts/rename-builder-to-partner.js:110", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/rename-builder-to-partner.js:110"}, "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-7b686368dcfb0420", "name": "Stray `console.log` in TS/JS \u2014 scripts/rename-roles.js:48", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/rename-roles.js: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-99ee608d7728b71c", "name": "Stray `console.log` in TS/JS \u2014 scripts/fix-mojibake.js:104", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/fix-mojibake.js:104"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-504be59115f7acd1", "name": "Stray `console.log` in TS/JS \u2014 scripts/migrate-router-imports.js:88", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/migrate-router-imports.js:88"}, "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-4a04b9ade70018a5", "name": "Stray `console.log` in TS/JS \u2014 mobile/scripts/reset-project.js:53", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 mobile/scripts/reset-project.js:53"}, "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-07ae84849cc18a8e", "name": "Stray `console.log` in TS/JS \u2014 mobile/scripts/patch-web-html.js:57", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 mobile/scripts/patch-web-html.js:57"}, "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-0d7a5084a53c0988", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 mobile/app/+html.tsx:51", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 mobile/app/+html.tsx:51"}, "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-7c411066fc1b0811", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/ui/autocomplete.tsx:138", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/ui/autocomplete.tsx:138"}, "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-a52cbeed8abc2e70", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/chat/ChatConversation.tsx:796", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/chat/ChatConversation.tsx:796"}, "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-1ae24bdebde993ff", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/netstart/AppLeftPanel.tsx:409", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/netstart/AppLeftPanel.tsx:409"}, "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-f3e279a342b49a27", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/netstart/AppShell.tsx:215", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/netstart/AppShell.tsx:215"}, "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-b884a7de49329894", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/netstart/NotificationsBell.tsx:201", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/netstart/NotificationsBell.tsx:201"}, "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-22f237c26ec3eefa", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/netstart/UserMenu.tsx:42", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/netstart/UserMenu.tsx:42"}, "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-8a33f85d9062783a", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/marketing/demo/DemoApp.tsx:195", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/marketing/demo/DemoApp.tsx:195"}, "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-5275c1330a3fa797", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/mynet/ProfileWizard.tsx:1151", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/mynet/ProfileWizard.tsx:1151"}, "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-5be061273f86e80f", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/mynet/ProjectCard.tsx:69", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/mynet/ProjectCard.tsx:69"}, "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-23996d04160f1844", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/mynet/ApplicationsPanel.tsx:242", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/mynet/ApplicationsPanel.tsx:242"}, "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-c050376fe150fffa", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/mynet/FindPeopleSheet.tsx:214", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/mynet/FindPeopleSheet.tsx:214"}, "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-f0177e3fe4091933", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/mynet/ApplyDialog.tsx:103", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/mynet/ApplyDialog.tsx:103"}, "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-7953dd91079706e9", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/mynet/ProfileCard.tsx:450", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/mynet/ProfileCard.tsx:450"}, "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-7a6413809553f8e9", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/mynet/SavedPeopleList.tsx:218", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/mynet/SavedPeopleList.tsx:218"}, "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-b262baa02f162588", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/mynet/ProfileDashboard.tsx:567", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/mynet/ProfileDashboard.tsx:567"}, "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-f9aa9823aca2650d", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/mynet/TagInput.tsx:159", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/mynet/TagInput.tsx:159"}, "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-1b6e6a84622876d9", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/layout.tsx:302", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/layout.tsx:302"}, "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-8bcd5fba07e7db11", "name": "`truncate` class without `title=` for hover reveal \u2014 src/views/Admin.tsx:559", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/views/Admin.tsx:559"}, "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-861348930d31dd88", "name": "`truncate` class without `title=` for hover reveal \u2014 src/views/FounderProfile.tsx:329", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/views/FounderProfile.tsx:329"}, "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-c87d7f35885ea3f4", "name": "`truncate` class without `title=` for hover reveal \u2014 src/views/Saved.tsx:438", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/views/Saved.tsx:438"}, "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-6db7c5c52e9e7e68", "name": "`truncate` class without `title=` for hover reveal \u2014 src/views/Reviews.tsx:227", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/views/Reviews.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-aa5ac93b6e9d06c0", "name": "`truncate` class without `title=` for hover reveal \u2014 src/views/Match.tsx:2214", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/views/Match.tsx:2214"}, "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-324c27d5f1c7c6ce", "name": "Insecure pattern 'dangerous_innerhtml' in mobile/app/+html.tsx:51", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in mobile/app/+html.tsx:51"}, "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-54f9b4a247007122", "name": "Insecure pattern 'cors_wildcard' in supabase/functions/embed/index.ts:25", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in supabase/functions/embed/index.ts:25"}, "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-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-d0b1e28e46146e0f", "name": "Insecure pattern 'dangerous_innerhtml' in src/app/layout.tsx:302", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/layout.tsx:302"}, "fullDescription": {"text": "Found a known-risky pattern (dangerous_innerhtml). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-4601e3ad3bb28677", "name": "No CI/CD pipelines detected", "shortDescription": {"text": "No CI/CD pipelines detected"}, "fullDescription": {"text": "No GitHub Actions, GitLab CI, or CircleCI configs found. Without CI you can't gate deploys on tests/lints."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-32266b39a615e5e1", "name": "Very large file: src/lib/mynet-storage.ts (2164 lines)", "shortDescription": {"text": "Very large file: src/lib/mynet-storage.ts (2164 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-c90b4212be1d3130", "name": "Very large file: src/views/Match.tsx (2473 lines)", "shortDescription": {"text": "Very large file: src/views/Match.tsx (2473 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": "3 test file(s) for 313 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 38 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 197 placeholder/mock markers across 59 source files. This often means the repo looks complete while core flows still use generated scaffolding or fake data."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-9d79c4077342a7d0", "name": "Runtime service client appears to use placeholder configuration", "shortDescription": {"text": "Runtime service client appears to use placeholder configuration"}, "fullDescription": {"text": "A runtime source file appears to wire Supabase/Firebase/AI/payment-style clients to placeholder URLs, keys, or fallback values. In the Fable corpus this often means the UI/API shape is present while the backend service is not actually configured."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-2d0c7b7ab8f8aacf", "name": "Critical user flow still appears backed by mock or placeholder data", "shortDescription": {"text": "Critical user flow still appears backed by mock or placeholder data"}, "fullDescription": {"text": "A payment/auth/admin/order/billing-style flow contains mock, fake, TODO, dummy, or placeholder markers in runtime source. In the Fable corpus this is a high-leverage completeness smell: the app can look finished while the money, identity, or tenant flow is still scaffolded."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-b9088664ace7f748", "name": "Composite production-readiness gap", "shortDescription": {"text": "Composite production-readiness gap"}, "fullDescription": {"text": "Multiple low-cost hardening controls are missing together: license, ci. Opus verification showed these co-occurring gaps are a better readiness signal than reading each flag in isolation."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-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. 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-9fbaff076fafe1cd", "name": "Commented-code block (8 lines) in next.config.ts:33", "shortDescription": {"text": "Commented-code block (8 lines) in next.config.ts:33"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-9510b8705bcc5537", "name": "Commented-code block (5 lines) in scripts/strip-translucency.js:56", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/strip-translucency.js:56"}, "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-bb28858cea9655fe", "name": "Commented-code block (5 lines) in scripts/fix-button-contrast.js:55", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/fix-button-contrast.js:55"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-1cf3e9b418c02ad5", "name": "Commented-code block (5 lines) in scripts/app-prefix-routes.cjs:46", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/app-prefix-routes.cjs:46"}, "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-20cb7ece47acbcad", "name": "Commented-code block (7 lines) in scripts/strip-orphan-modifiers.js:58", "shortDescription": {"text": "Commented-code block (7 lines) in scripts/strip-orphan-modifiers.js:58"}, "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-b700777a5176d772", "name": "Commented-code block (5 lines) in mobile/components/TutorialOverlay.tsx:274", "shortDescription": {"text": "Commented-code block (5 lines) in mobile/components/TutorialOverlay.tsx:274"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-a8a77378f1b7275c", "name": "Commented-code block (5 lines) in mobile/app/chat/[id].tsx:236", "shortDescription": {"text": "Commented-code block (5 lines) in mobile/app/chat/[id].tsx:236"}, "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-d747383c53aa3acc", "name": "Commented-code block (5 lines) in mobile/app/(tabs)/index.tsx:114", "shortDescription": {"text": "Commented-code block (5 lines) in mobile/app/(tabs)/index.tsx:114"}, "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-84cec0a1d2c43559", "name": "Commented-code block (6 lines) in mobile/app/(tabs)/mynet.tsx:167", "shortDescription": {"text": "Commented-code block (6 lines) in mobile/app/(tabs)/mynet.tsx:167"}, "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-98549edf2cf88d9a", "name": "Commented-code block (5 lines) in mobile/app/(tabs)/threads.tsx:236", "shortDescription": {"text": "Commented-code block (5 lines) in mobile/app/(tabs)/threads.tsx:236"}, "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-e9fe5aa1bd83646e", "name": "Commented-code block (7 lines) in mobile/app/(tabs)/_layout.tsx:256", "shortDescription": {"text": "Commented-code block (7 lines) in mobile/app/(tabs)/_layout.tsx:256"}, "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-1e503bf45c2fd96e", "name": "Commented-code block (5 lines) in mobile/app/project/[id].tsx:649", "shortDescription": {"text": "Commented-code block (5 lines) in mobile/app/project/[id].tsx:649"}, "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-087fd9ad225d95f3", "name": "Commented-code block (7 lines) in mobile/lib/auth.tsx:22", "shortDescription": {"text": "Commented-code block (7 lines) in mobile/lib/auth.tsx:22"}, "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-a8fc30d888cb35f4", "name": "Commented-code block (6 lines) in mobile/lib/api.ts:432", "shortDescription": {"text": "Commented-code block (6 lines) in mobile/lib/api.ts:432"}, "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-d7539cefe848008d", "name": "`fetch()` without try/.catch or AbortSignal \u2014 mobile/lib/api.ts:209", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 mobile/lib/api.ts:209"}, "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-23a7b735fc9c184c", "name": "Legacy-named symbol `netstart_tutorial_seen_match_v2` in mobile/lib/tutorial.ts:6", "shortDescription": {"text": "Legacy-named symbol `netstart_tutorial_seen_match_v2` in mobile/lib/tutorial.ts:6"}, "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-9ef542f41dac37ef", "name": "Legacy-named symbol `vettd_sent_requests_v2` in mobile/lib/sentRequests.ts:15", "shortDescription": {"text": "Legacy-named symbol `vettd_sent_requests_v2` in mobile/lib/sentRequests.ts:15"}, "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-d69b1cd47cca7fae", "name": "Commented-code block (5 lines) in mobile/lib/sentRequests.ts:1", "shortDescription": {"text": "Commented-code block (5 lines) in mobile/lib/sentRequests.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-3299056618659357", "name": "Commented-code block (5 lines) in mobile/lib/theme.ts:1", "shortDescription": {"text": "Commented-code block (5 lines) in mobile/lib/theme.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-d21b01b2206870af", "name": "Legacy-named symbol `vettd_saved_v1` in mobile/lib/savedCount.ts:15", "shortDescription": {"text": "Legacy-named symbol `vettd_saved_v1` in mobile/lib/savedCount.ts:15"}, "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-698ab5d522d663c2", "name": "Commented-code block (9 lines) in mobile/lib/supabase.ts:19", "shortDescription": {"text": "Commented-code block (9 lines) in mobile/lib/supabase.ts:19"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-f6e117f562dd4018", "name": "Commented-code block (6 lines) in supabase/functions/profile-reminders/index.ts:3", "shortDescription": {"text": "Commented-code block (6 lines) in supabase/functions/profile-reminders/index.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-8974a254b29df844", "name": "`fetch()` without try/.catch or AbortSignal \u2014 supabase/functions/profile-reminders/index.ts:241", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 supabase/functions/profile-reminders/index.ts:241"}, "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-c0145c455ae00118", "name": "Commented-code block (6 lines) in supabase/functions/notify-email/index.ts:3", "shortDescription": {"text": "Commented-code block (6 lines) in supabase/functions/notify-email/index.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-6d8b28d63628baee", "name": "`fetch()` without try/.catch or AbortSignal \u2014 supabase/functions/notify-email/index.ts:148", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 supabase/functions/notify-email/index.ts:148"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-0d155404ac4fa4dd", "name": "Commented-code block (6 lines) in src/components/ui/button.tsx:18", "shortDescription": {"text": "Commented-code block (6 lines) in src/components/ui/button.tsx:18"}, "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-8630104ef5df43ea", "name": "Commented-code block (7 lines) in src/components/chat/ChatConversation.tsx:145", "shortDescription": {"text": "Commented-code block (7 lines) in src/components/chat/ChatConversation.tsx:145"}, "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-796d94faed5149a6", "name": "Commented-code block (6 lines) in src/components/chat/ChatThreadList.tsx:292", "shortDescription": {"text": "Commented-code block (6 lines) in src/components/chat/ChatThreadList.tsx:292"}, "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-c1b0578cd76acd1c", "name": "Commented-code block (5 lines) in src/components/netstart/MobileSwipeCard.tsx:85", "shortDescription": {"text": "Commented-code block (5 lines) in src/components/netstart/MobileSwipeCard.tsx:85"}, "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-3e7d294d15a75876", "name": "Commented-code block (7 lines) in src/components/netstart/BoostPopup.tsx:8", "shortDescription": {"text": "Commented-code block (7 lines) in src/components/netstart/BoostPopup.tsx: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-d9c179dc9f032f6f", "name": "Commented-code block (7 lines) in src/components/netstart/SpotlightModal.tsx:10", "shortDescription": {"text": "Commented-code block (7 lines) in src/components/netstart/SpotlightModal.tsx: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-bff90f7ba0a7df21", "name": "Commented-code block (5 lines) in src/components/netstart/AppLeftPanel.tsx:70", "shortDescription": {"text": "Commented-code block (5 lines) in src/components/netstart/AppLeftPanel.tsx:70"}, "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-60fa2399170e499d", "name": "Commented-code block (7 lines) in src/components/netstart/ProfileSetupBanner.tsx:31", "shortDescription": {"text": "Commented-code block (7 lines) in src/components/netstart/ProfileSetupBanner.tsx:31"}, "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-ba97a8fef796d046", "name": "Commented-code block (6 lines) in src/components/netstart/MothEmptyState.tsx:622", "shortDescription": {"text": "Commented-code block (6 lines) in src/components/netstart/MothEmptyState.tsx:622"}, "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-f25b7b00519a0837", "name": "Commented-code block (5 lines) in src/components/netstart/Sidebar.tsx:36", "shortDescription": {"text": "Commented-code block (5 lines) in src/components/netstart/Sidebar.tsx:36"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-0671be19dfa7b719", "name": "Commented-code block (5 lines) in src/components/marketing/WhySection.tsx:70", "shortDescription": {"text": "Commented-code block (5 lines) in src/components/marketing/WhySection.tsx:70"}, "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-26563915e7f5fa52", "name": "Commented-code block (5 lines) in src/components/mynet/VerifiedBanner.tsx:107", "shortDescription": {"text": "Commented-code block (5 lines) in src/components/mynet/VerifiedBanner.tsx:107"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-d43685784b47c9f9", "name": "Commented-code block (5 lines) in src/components/mynet/ProfileSignupFlow.tsx:238", "shortDescription": {"text": "Commented-code block (5 lines) in src/components/mynet/ProfileSignupFlow.tsx:238"}, "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-e43bf63645f54f12", "name": "Commented-code block (5 lines) in src/components/mynet/ProfileDashboard.tsx:687", "shortDescription": {"text": "Commented-code block (5 lines) in src/components/mynet/ProfileDashboard.tsx:687"}, "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-3cf14330f255300e", "name": "Commented-code block (5 lines) in src/components/mynet/BannerCropper.tsx:95", "shortDescription": {"text": "Commented-code block (5 lines) in src/components/mynet/BannerCropper.tsx:95"}, "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-dceee4b9c7eec86f", "name": "Commented-code block (7 lines) in src/components/mockups/Steps.tsx:497", "shortDescription": {"text": "Commented-code block (7 lines) in src/components/mockups/Steps.tsx:497"}, "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-68d41fdd82511b9a", "name": "Legacy-named symbol `polln8_web_theme_v2` in src/app/layout.tsx:326", "shortDescription": {"text": "Legacy-named symbol `polln8_web_theme_v2` in src/app/layout.tsx:326"}, "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-be079fe964bebcff", "name": "Commented-code block (7 lines) in src/app/layout.tsx:33", "shortDescription": {"text": "Commented-code block (7 lines) in src/app/layout.tsx:33"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-fda234279573f782", "name": "Commented-code block (6 lines) in src/app/providers.tsx:31", "shortDescription": {"text": "Commented-code block (6 lines) in src/app/providers.tsx:31"}, "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-8af005840c9731f5", "name": "Commented-code block (5 lines) in src/app/api/unsubscribe-reminders/route.ts:134", "shortDescription": {"text": "Commented-code block (5 lines) in src/app/api/unsubscribe-reminders/route.ts:134"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-09de62a5c260b80c", "name": "Commented-code block (5 lines) in src/app/api/stripe/verify-session/route.ts:7", "shortDescription": {"text": "Commented-code block (5 lines) in src/app/api/stripe/verify-session/route.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-994a171b69b75b2a", "name": "Commented-code block (5 lines) in src/app/api/stripe/checkout/route.ts:6", "shortDescription": {"text": "Commented-code block (5 lines) in src/app/api/stripe/checkout/route.ts:6"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-d549112e4f361a22", "name": "Commented-code block (6 lines) in src/app/app/profile/edit/page.tsx:1", "shortDescription": {"text": "Commented-code block (6 lines) in src/app/app/profile/edit/page.tsx:1"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-1f522d01d19acc4d", "name": "Commented-code block (5 lines) in src/lib/ai.ts:1", "shortDescription": {"text": "Commented-code block (5 lines) in src/lib/ai.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-1a3a664f86fc37c6", "name": "Commented-code block (5 lines) in src/lib/analytics.ts:42", "shortDescription": {"text": "Commented-code block (5 lines) in src/lib/analytics.ts:42"}, "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-6337f2b338cd3e40", "name": "Commented-code block (5 lines) in src/lib/api-auth.ts:9", "shortDescription": {"text": "Commented-code block (5 lines) in src/lib/api-auth.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-f66167039c09f7c2", "name": "Commented-code block (6 lines) in src/lib/options.ts:27", "shortDescription": {"text": "Commented-code block (6 lines) in src/lib/options.ts:27"}, "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-2ccf86af3d8de589", "name": "Commented-code block (6 lines) in src/lib/mynet-storage.ts:527", "shortDescription": {"text": "Commented-code block (6 lines) in src/lib/mynet-storage.ts:527"}, "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-d7382074178164cb", "name": "Commented-code block (5 lines) in src/lib/reviews-storage.ts:3", "shortDescription": {"text": "Commented-code block (5 lines) in src/lib/reviews-storage.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-ee9552063b553a4d", "name": "Commented-code block (5 lines) in src/lib/mynet-types.ts:59", "shortDescription": {"text": "Commented-code block (5 lines) in src/lib/mynet-types.ts:59"}, "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-d39bcfd28b426ac5", "name": "Commented-code block (5 lines) in src/lib/supabase-admin.ts:8", "shortDescription": {"text": "Commented-code block (5 lines) in src/lib/supabase-admin.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-f4cd9595f4e25f8d", "name": "Commented-code block (5 lines) in src/hooks/useReviewStatus.ts:1", "shortDescription": {"text": "Commented-code block (5 lines) in src/hooks/useReviewStatus.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-1b89eb509c868187", "name": "Commented-code block (12 lines) in src/context/AuthContext.tsx:41", "shortDescription": {"text": "Commented-code block (12 lines) in src/context/AuthContext.tsx: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-2240c0a9cb639d2b", "name": "Commented-code block (5 lines) in src/views/Admin.tsx:1083", "shortDescription": {"text": "Commented-code block (5 lines) in src/views/Admin.tsx:1083"}, "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-f88f4af6865854cf", "name": "Commented-code block (5 lines) in src/views/Index.tsx:238", "shortDescription": {"text": "Commented-code block (5 lines) in src/views/Index.tsx:238"}, "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-91fb2123698e5015", "name": "Commented-code block (8 lines) in src/views/Chats.tsx:70", "shortDescription": {"text": "Commented-code block (8 lines) in src/views/Chats.tsx:70"}, "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-859b83f6c6b9b1a1", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/views/Verified.tsx:79", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/views/Verified.tsx:79"}, "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-5531bdc89e7fade9", "name": "Commented-code block (5 lines) in src/views/Profile.tsx:343", "shortDescription": {"text": "Commented-code block (5 lines) in src/views/Profile.tsx:343"}, "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-63c96ce51c6c482b", "name": "Commented-code block (5 lines) in src/views/ProfileEdit.tsx:29", "shortDescription": {"text": "Commented-code block (5 lines) in src/views/ProfileEdit.tsx:29"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-de50f5a2938fa683", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/views/Boost.tsx:61", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/views/Boost.tsx:61"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-6c7736cb35d5f38b", "name": "Commented-code block (6 lines) in src/views/Match.tsx:113", "shortDescription": {"text": "Commented-code block (6 lines) in src/views/Match.tsx:113"}, "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-ea9e68eadd747ba8", "name": "Commented-code block (5 lines) in src/views/Perks.tsx:16", "shortDescription": {"text": "Commented-code block (5 lines) in src/views/Perks.tsx:16"}, "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-3adb217189b4ac87", "name": "Commented-code block (8 lines) in src/views/Waitlist.tsx:56", "shortDescription": {"text": "Commented-code block (8 lines) in src/views/Waitlist.tsx:56"}, "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-1fcdc2782be1a3dd", "name": "Commented-code block (5 lines) in src/views/Settings.tsx:42", "shortDescription": {"text": "Commented-code block (5 lines) in src/views/Settings.tsx:42"}, "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-64acbec8a1d60999", "name": "Commented-code block (6 lines) in src/views/Home.tsx:163", "shortDescription": {"text": "Commented-code block (6 lines) in src/views/Home.tsx:163"}, "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-4c1ef67ec2dd2124", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/views/Spotlight.tsx:60", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/views/Spotlight.tsx:60"}, "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-77752214c0fead25", "name": "Commented-code block (6 lines) in src/views/SignUp.tsx:103", "shortDescription": {"text": "Commented-code block (6 lines) in src/views/SignUp.tsx:103"}, "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-b0b7578dd2a289b6", "name": "26 env vars used in code but missing from .env.example", "shortDescription": {"text": "26 env vars used in code but missing from .env.example"}, "fullDescription": {"text": "Drift between code and config docs. The first few: `CI`, `EXPO_OS`, `EXPO_PUBLIC_ENV`, `EXPO_PUBLIC_RELEASE`, `EXPO_PUBLIC_SENTRY_DSN`, `EXPO_PUBLIC_SUPABASE_ANON_KEY`, `EXPO_PUBLIC_SUPABASE_URL`, `NEXT_PUBLIC_APP_URL` + 18 more. Add them (with a placeholder/comment) to .env.example so onboarding doesn't break."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}]}}, "automationDetails": {"id": "repobility/23156"}, "properties": {"repository": "yasharora1398-create/NetStart", "repoUrl": "https://github.com/yasharora1398-create/NetStart", "branch": "main"}, "results": [{"ruleId": "foundry_blueprint_gap", "level": "warning", "message": {"text": "Foundry mined blueprint gap alignment: yasharora1398-create/NetStart"}, "properties": {"repobilityId": 357465, "scanner": "foundry_dataset", "fingerprint": "9b539956e835b7539f3af3df1dcbf6b230c06a4e4ea489bb721bfc8e7075e52c", "category": "tech_debt", "severity": "medium", "confidence": 0.7, "triageState": "open", "verdict": "needs_review", "isResolved": false, "reason": "Imported from mined Foundry/Fable5 evidence with real GitHub/source provenance. Review source_id before acting.", "evidence": {"meta": {"kind": "graph_query_record", "title": "Human feedback aligned with blueprint or architecture gaps", "intent": "Curriculum-gap examples connecting issue threads to helicopter-view gaps.", "labels": {"bug_fix": 2, "test_ci_gap": 1, "api_or_backend": 3, "commit_general": 1, "schema_or_data": 1, "ui_or_frontend": 65, "source_or_other": 8, "dependency_or_build": 8, "verification_or_tests": 2, "data_schema_persistence": 1, "mostly follows blueprint": 1, "issue_or_pull_request_thread": 1, "blueprint_human_gap_disagreement": 2, "thread_has_human_issue_and_fix_context": 2, "claimed_resolved_with_verification_signal": 4, "human_reported_issue_then_verified_fix_attempt": 2}, "source": "graph_query_export", "motif_id": "blueprint_gap_alignment", "outcomes": {"claimed_resolved_with_verification_signal": 8}, "polarity": "mixed", "query_id": "blueprint_gap_alignment", "severity": "medium", "ci_labels": {}, "synthetic": false, "edge_count": 155, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 2, "thread_has_comment": 2, "thread_touches_file": 85, "alignment_uses_comment": 2, "alignment_uses_finding": 2, "chain_has_link_quality": 6, "comment_aligns_finding": 2, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "issue_chain_touches_file": 12, "thread_has_comment_chain": 2, "comment_chain_links_commit": 10, "comment_chain_touches_file": 24, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 2}, "node_count": 107, "node_types": {"repo": 1, "commit": 5, "thread": 1, "comment": 2, "pr_file": 85, "alignment": 2, "fix_outcome": 1, "issue_chain": 1, "link_quality": 6, "comment_chain": 2, "blueprint_finding": 1}, "query_type": "motif_query", "thread_key": "yasharora1398-create/NetStart#1", "issue_number": "1", "quality_tiers": {"high_confidence": 3, "assumption_check": 2, "weak_supervision": 1}, "repo_full_name": "yasharora1398-create/NetStart", "training_usage": "curriculum_gap", "source_motif_id": "graph-pattern-motif-thread-e037745d4429104b", "graph_gold_label": "supported_by_verification_signal", "changed_file_labels": {"api_or_backend": 15, "schema_or_data": 5, "ui_or_frontend": 325, "source_or_other": 40, "dependency_or_build": 40}}, "text": "Graph query export: Human feedback aligned with blueprint or architecture gaps\nQuery id: blueprint_gap_alignment\nQuery type: motif_query\nIntent: Curriculum-gap examples connecting issue threads to helicopter-view gaps.\nMotif: blueprint_gap_alignment\nTraining usage: curriculum_gap\nGraph gold label: supported_by_verification_signal\nRepo: yasharora1398-create/NetStart\nThread: yasharora1398-create/NetStart#1\nEvidence:\nGraph motif: Human feedback aligns with blueprint or architecture gaps\nMotif id: blueprint_gap_alignment\nPolarity: mixed\nTraining usage: curriculum_gap\nSeverity: medium\nRepo: yasharora1398-create/NetStart\nThread: yasharora1398-create/NetStart#1\nGraph gold label: supported_by_verification_signal\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: yasharora1398-create/NetStart#1\nRepo: yasharora1398-create/NetStart\nIssue/PR number: 1\nGraph consistency label: supported_by_verification_signal\nNodes: 107\nEdges: 155\nNode types: {'pr_file': 85, 'link_quality': 6, 'commit': 5, 'comment': 2, 'comment_chain': 2, 'alignment': 2, 'thread': 1, 'repo': 1, 'issue_chain': 1, 'fix_outcome': 1, 'blueprint_finding': 1}\nEdge types: {'thread_touches_file': 85, 'comment_chain_touches_file': 24, 'issue_chain_touches_file': 12, 'comment_chain_links_commit': 10, 'chain_has_link_quality': 6, 'thread_has_comment': 2, 'thread_has_comment_chain': 2, 'comment_has_chain': 2, 'issue_chain_has_comment_chain': 2, 'alignment_uses_comment': 2, 'alignment_uses_finding': 2, 'comment_aligns_finding': 2, 'repo_has_thread': 1, 'thread_has_issue_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'ui_or_frontend': 65, 'source_or_other': 8, 'dependency_or_build': 8, 'claimed_resolved_with_verification_signal': 4, 'api_or_backend': 3, 'human_reported_issue_then_verified_fix_attempt': 2, 'bug_fix': 2, 'verification_or_tests': 2, 'thread_has_human_issue_and_fix_context': 2, 'blueprint_human_gap_disagreement': 2, 'issue_or_pull_request_thread': 1, 'test_ci_gap': 1, 'data_schema_persistence': 1, 'schema_or_data': 1, 'commit_general': 1, 'mostly follows blueprint': 1}\nOutcomes: {'claimed_resolved_with_verification_signal': 8}\nQuality tiers: {'high_confidence': 3, 'assumption_check': 2, 'weak_supervision': 1}\nCI labels: {}\nCurriculum targets:\n- Use helicopter-view architecture/schema/design evidence beside issue threads.\n- Teach models to compare requested product class against implementation layers.\nAssumption checks:\n- Which blueprint layer is absent: frontend, API, data, auth, tests, or deployment?\n- Does human feedback confirm the same architectural gap?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/yasharora1398-create/NetStart", "source_id": "graph-query-motif_query-f9ab147a703089b3", "synthetic": false, "gold_label": "", "graph_label": "", "source_path": "/data/distillate/foundry_data/graph_queries/blueprint_gap_alignment/shard-0.jsonl", "bundle_label": "", "priority_band": "", "priority_score": 0, "repo_full_name": "yasharora1398-create/NetStart", "source_dataset": "graph_queries/blueprint_gap_alignment", "training_usage": "curriculum_gap"}}}, {"ruleId": "foundry_test_ci_gap", "level": "error", "message": {"text": "Foundry mined test ci gap after feedback: yasharora1398-create/NetStart"}, "properties": {"repobilityId": 341590, "scanner": "foundry_dataset", "fingerprint": "720e710d08d300df6c12e60e63a59a090deb5a865f23b160dc368a30c56c8f02", "category": "testing", "severity": "high", "confidence": 0.78, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Imported from mined Foundry/Fable5 evidence with real GitHub/source provenance. Review source_id before acting.", "evidence": {"meta": {"kind": "graph_query_record", "title": "Feedback exposes missing tests or CI", "intent": "Hard negatives for feedback/fix chains without adequate guardrails.", "labels": {"bug_fix": 2, "test_ci_gap": 1, "api_or_backend": 3, "commit_general": 1, "schema_or_data": 1, "ui_or_frontend": 65, "source_or_other": 8, "dependency_or_build": 8, "verification_or_tests": 2, "data_schema_persistence": 1, "mostly follows blueprint": 1, "issue_or_pull_request_thread": 1, "blueprint_human_gap_disagreement": 2, "thread_has_human_issue_and_fix_context": 2, "claimed_resolved_with_verification_signal": 4, "human_reported_issue_then_verified_fix_attempt": 2}, "source": "graph_query_export", "motif_id": "test_ci_gap_after_feedback", "outcomes": {"claimed_resolved_with_verification_signal": 8}, "polarity": "bad", "query_id": "test_ci_gap_after_feedback", "severity": "high", "ci_labels": {}, "synthetic": false, "edge_count": 155, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 2, "thread_has_comment": 2, "thread_touches_file": 85, "alignment_uses_comment": 2, "alignment_uses_finding": 2, "chain_has_link_quality": 6, "comment_aligns_finding": 2, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "issue_chain_touches_file": 12, "thread_has_comment_chain": 2, "comment_chain_links_commit": 10, "comment_chain_touches_file": 24, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 2}, "node_count": 107, "node_types": {"repo": 1, "commit": 5, "thread": 1, "comment": 2, "pr_file": 85, "alignment": 2, "fix_outcome": 1, "issue_chain": 1, "link_quality": 6, "comment_chain": 2, "blueprint_finding": 1}, "query_type": "motif_query", "thread_key": "yasharora1398-create/NetStart#1", "issue_number": "1", "quality_tiers": {"high_confidence": 3, "assumption_check": 2, "weak_supervision": 1}, "repo_full_name": "yasharora1398-create/NetStart", "training_usage": "hard_negative", "source_motif_id": "graph-pattern-motif-thread-b2d5dda68f974534", "graph_gold_label": "supported_by_verification_signal", "changed_file_labels": {"api_or_backend": 15, "schema_or_data": 5, "ui_or_frontend": 325, "source_or_other": 40, "dependency_or_build": 40}}, "text": "Graph query export: Feedback exposes missing tests or CI\nQuery id: test_ci_gap_after_feedback\nQuery type: motif_query\nIntent: Hard negatives for feedback/fix chains without adequate guardrails.\nMotif: test_ci_gap_after_feedback\nTraining usage: hard_negative\nGraph gold label: supported_by_verification_signal\nRepo: yasharora1398-create/NetStart\nThread: yasharora1398-create/NetStart#1\nEvidence:\nGraph motif: Feedback or fix context exposes missing test/CI guardrails\nMotif id: test_ci_gap_after_feedback\nPolarity: bad\nTraining usage: hard_negative\nSeverity: high\nRepo: yasharora1398-create/NetStart\nThread: yasharora1398-create/NetStart#1\nGraph gold label: supported_by_verification_signal\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: yasharora1398-create/NetStart#1\nRepo: yasharora1398-create/NetStart\nIssue/PR number: 1\nGraph consistency label: supported_by_verification_signal\nNodes: 107\nEdges: 155\nNode types: {'pr_file': 85, 'link_quality': 6, 'commit': 5, 'comment': 2, 'comment_chain': 2, 'alignment': 2, 'thread': 1, 'repo': 1, 'issue_chain': 1, 'fix_outcome': 1, 'blueprint_finding': 1}\nEdge types: {'thread_touches_file': 85, 'comment_chain_touches_file': 24, 'issue_chain_touches_file': 12, 'comment_chain_links_commit': 10, 'chain_has_link_quality': 6, 'thread_has_comment': 2, 'thread_has_comment_chain': 2, 'comment_has_chain': 2, 'issue_chain_has_comment_chain': 2, 'alignment_uses_comment': 2, 'alignment_uses_finding': 2, 'comment_aligns_finding': 2, 'repo_has_thread': 1, 'thread_has_issue_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'ui_or_frontend': 65, 'source_or_other': 8, 'dependency_or_build': 8, 'claimed_resolved_with_verification_signal': 4, 'api_or_backend': 3, 'human_reported_issue_then_verified_fix_attempt': 2, 'bug_fix': 2, 'verification_or_tests': 2, 'thread_has_human_issue_and_fix_context': 2, 'blueprint_human_gap_disagreement': 2, 'issue_or_pull_request_thread': 1, 'test_ci_gap': 1, 'data_schema_persistence': 1, 'schema_or_data': 1, 'commit_general': 1, 'mostly follows blueprint': 1}\nOutcomes: {'claimed_resolved_with_verification_signal': 8}\nQuality tiers: {'high_confidence': 3, 'assumption_check': 2, 'weak_supervision': 1}\nCI labels: {}\nCurriculum targets:\n- Turn human feedback into regression tests and CI gates.\n- Penalize fixes that do not add or exercise verification for affected workflows.\nAssumption checks:\n- Did the fix add tests for the exact complaint?\n- Does CI run those tests, or is verification only implied?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/yasharora1398-create/NetStart", "source_id": "graph-query-motif_query-b5ede38bd97b9da0", "synthetic": false, "gold_label": "", "graph_label": "", "source_path": "/data/distillate/foundry_data/graph_queries/test_ci_gap_after_feedback/shard-0.jsonl", "bundle_label": "", "priority_band": "", "priority_score": 0, "repo_full_name": "yasharora1398-create/NetStart", "source_dataset": "graph_queries/test_ci_gap_after_feedback", "training_usage": "hard_negative"}}}, {"ruleId": "foundry_schema_ui_api_gap", "level": "error", "message": {"text": "Foundry mined schema ui api mismatch: yasharora1398-create/NetStart"}, "properties": {"repobilityId": 331208, "scanner": "foundry_dataset", "fingerprint": "ec65e157313cd4a509ea02dbaec837235e96c226a5777ada91b02f3cd61033c7", "category": "quality", "severity": "high", "confidence": 0.76, "triageState": "open", "verdict": "needs_review", "isResolved": false, "reason": "Imported from mined Foundry/Fable5 evidence with real GitHub/source provenance. Review source_id before acting.", "evidence": {"meta": {"kind": "graph_query_record", "title": "Schema, UI, and API mismatch", "intent": "Assumption-check examples for data-path consistency across layers.", "labels": {"bug_fix": 2, "test_ci_gap": 1, "api_or_backend": 3, "commit_general": 1, "schema_or_data": 1, "ui_or_frontend": 65, "source_or_other": 8, "dependency_or_build": 8, "verification_or_tests": 2, "data_schema_persistence": 1, "mostly follows blueprint": 1, "issue_or_pull_request_thread": 1, "blueprint_human_gap_disagreement": 2, "thread_has_human_issue_and_fix_context": 2, "claimed_resolved_with_verification_signal": 4, "human_reported_issue_then_verified_fix_attempt": 2}, "source": "graph_query_export", "motif_id": "schema_ui_api_mismatch", "outcomes": {"claimed_resolved_with_verification_signal": 8}, "polarity": "bad", "query_id": "schema_ui_api_mismatch", "severity": "high", "ci_labels": {}, "synthetic": false, "edge_count": 155, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 2, "thread_has_comment": 2, "thread_touches_file": 85, "alignment_uses_comment": 2, "alignment_uses_finding": 2, "chain_has_link_quality": 6, "comment_aligns_finding": 2, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "issue_chain_touches_file": 12, "thread_has_comment_chain": 2, "comment_chain_links_commit": 10, "comment_chain_touches_file": 24, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 2}, "node_count": 107, "node_types": {"repo": 1, "commit": 5, "thread": 1, "comment": 2, "pr_file": 85, "alignment": 2, "fix_outcome": 1, "issue_chain": 1, "link_quality": 6, "comment_chain": 2, "blueprint_finding": 1}, "query_type": "motif_query", "thread_key": "yasharora1398-create/NetStart#1", "issue_number": "1", "quality_tiers": {"high_confidence": 3, "assumption_check": 2, "weak_supervision": 1}, "repo_full_name": "yasharora1398-create/NetStart", "training_usage": "assumption_check", "source_motif_id": "graph-pattern-motif-thread-4c628229929cfa3a", "graph_gold_label": "supported_by_verification_signal", "changed_file_labels": {"api_or_backend": 15, "schema_or_data": 5, "ui_or_frontend": 325, "source_or_other": 40, "dependency_or_build": 40}}, "text": "Graph query export: Schema, UI, and API mismatch\nQuery id: schema_ui_api_mismatch\nQuery type: motif_query\nIntent: Assumption-check examples for data-path consistency across layers.\nMotif: schema_ui_api_mismatch\nTraining usage: assumption_check\nGraph gold label: supported_by_verification_signal\nRepo: yasharora1398-create/NetStart\nThread: yasharora1398-create/NetStart#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: yasharora1398-create/NetStart\nThread: yasharora1398-create/NetStart#1\nGraph gold label: supported_by_verification_signal\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: yasharora1398-create/NetStart#1\nRepo: yasharora1398-create/NetStart\nIssue/PR number: 1\nGraph consistency label: supported_by_verification_signal\nNodes: 107\nEdges: 155\nNode types: {'pr_file': 85, 'link_quality': 6, 'commit': 5, 'comment': 2, 'comment_chain': 2, 'alignment': 2, 'thread': 1, 'repo': 1, 'issue_chain': 1, 'fix_outcome': 1, 'blueprint_finding': 1}\nEdge types: {'thread_touches_file': 85, 'comment_chain_touches_file': 24, 'issue_chain_touches_file': 12, 'comment_chain_links_commit': 10, 'chain_has_link_quality': 6, 'thread_has_comment': 2, 'thread_has_comment_chain': 2, 'comment_has_chain': 2, 'issue_chain_has_comment_chain': 2, 'alignment_uses_comment': 2, 'alignment_uses_finding': 2, 'comment_aligns_finding': 2, 'repo_has_thread': 1, 'thread_has_issue_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'ui_or_frontend': 65, 'source_or_other': 8, 'dependency_or_build': 8, 'claimed_resolved_with_verification_signal': 4, 'api_or_backend': 3, 'human_reported_issue_then_verified_fix_attempt': 2, 'bug_fix': 2, 'verification_or_tests': 2, 'thread_has_human_issue_and_fix_context': 2, 'blueprint_human_gap_disagreement': 2, 'issue_or_pull_request_thread': 1, 'test_ci_gap': 1, 'data_schema_persistence': 1, 'schema_or_data': 1, 'commit_general': 1, 'mostly follows blueprint': 1}\nOutcomes: {'claimed_resolved_with_verification_signal': 8}\nQuality tiers: {'high_confidence': 3, 'assumption_check': 2, 'weak_supervision': 1}\nCI labels: {}\nCurriculum targets:\n- Create schema-to-API-to-UI consistency tasks with migrations and tests.\n- Teach models to verify persistence, route contracts, and UI state together.\nAssumption checks:\n- Do schema changes have matching API and UI handling?\n- Are migrations and tests present for the data path?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/yasharora1398-create/NetStart", "source_id": "graph-query-motif_query-2c400b23daf5450d", "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": "yasharora1398-create/NetStart", "source_dataset": "graph_queries/schema_ui_api_mismatch", "training_usage": "assumption_check"}}}, {"ruleId": "scanner-bead75b0f9233e05", "level": "none", "message": {"text": "No API endpoints detected"}, "properties": {"repobilityId": "0f8bb852027c38f8", "scanner": "scanner-primary", "fingerprint": "bead75b0f9233e05", "layer": "api", "severity": "info", "confidence": 1.0, "tags": ["coverage"]}}, {"ruleId": "scanner-3e67327d36ecf20c", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/kill-gradients-and-green-on-green.js:117"}, "properties": {"repobilityId": "706642cbf76759db", "scanner": "scanner-primary", "fingerprint": "3e67327d36ecf20c", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-e92f9b1db39fe854", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/strip-translucency.js:169"}, "properties": {"repobilityId": "a84dc9959acb2c96", "scanner": "scanner-primary", "fingerprint": "e92f9b1db39fe854", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-a5ed6403f729d61d", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/add-use-client-to-views.js:23"}, "properties": {"repobilityId": "0ed5a04907f464da", "scanner": "scanner-primary", "fingerprint": "a5ed6403f729d61d", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-5e1c09e5d034eab1", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/fix-button-contrast.js:117"}, "properties": {"repobilityId": "c2b62a04411e0281", "scanner": "scanner-primary", "fingerprint": "5e1c09e5d034eab1", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-4aa4d707e0fccb6e", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/strip-orphan-smartquotes.js:75"}, "properties": {"repobilityId": "ac42b07324e74978", "scanner": "scanner-primary", "fingerprint": "4aa4d707e0fccb6e", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-bbd08d3dccf74e2e", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/create-route-wrappers.js:49"}, "properties": {"repobilityId": "b6ccfaa093ba0209", "scanner": "scanner-primary", "fingerprint": "bbd08d3dccf74e2e", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b4a040618cb3fb08", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/strip-orphan-modifiers.js:126"}, "properties": {"repobilityId": "248a6230dbbc8bc5", "scanner": "scanner-primary", "fingerprint": "b4a040618cb3fb08", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-195668e1162f37c2", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/rename-builder-to-partner.js:110"}, "properties": {"repobilityId": "b6e05a0c9c868b41", "scanner": "scanner-primary", "fingerprint": "195668e1162f37c2", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-7b686368dcfb0420", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/rename-roles.js:48"}, "properties": {"repobilityId": "19e9e7f866963e6b", "scanner": "scanner-primary", "fingerprint": "7b686368dcfb0420", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-99ee608d7728b71c", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/fix-mojibake.js:104"}, "properties": {"repobilityId": "a0a09a8b6cd70739", "scanner": "scanner-primary", "fingerprint": "99ee608d7728b71c", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-504be59115f7acd1", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/migrate-router-imports.js:88"}, "properties": {"repobilityId": "89c9359bcc9b87b0", "scanner": "scanner-primary", "fingerprint": "504be59115f7acd1", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-4a04b9ade70018a5", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 mobile/scripts/reset-project.js:53"}, "properties": {"repobilityId": "767b6ff24bbb7290", "scanner": "scanner-primary", "fingerprint": "4a04b9ade70018a5", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-07ae84849cc18a8e", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 mobile/scripts/patch-web-html.js:57"}, "properties": {"repobilityId": "1cc336e69673d7e0", "scanner": "scanner-primary", "fingerprint": "07ae84849cc18a8e", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-0d7a5084a53c0988", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 mobile/app/+html.tsx:51"}, "properties": {"repobilityId": "f02ec3b5ac8fea6c", "scanner": "scanner-primary", "fingerprint": "0d7a5084a53c0988", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-7c411066fc1b0811", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/ui/autocomplete.tsx:138"}, "properties": {"repobilityId": "9a22c62fa55595f1", "scanner": "scanner-primary", "fingerprint": "7c411066fc1b0811", "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-a52cbeed8abc2e70", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/chat/ChatConversation.tsx:796"}, "properties": {"repobilityId": "8b6f775fa677938f", "scanner": "scanner-primary", "fingerprint": "a52cbeed8abc2e70", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-1ae24bdebde993ff", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/netstart/AppLeftPanel.tsx:409"}, "properties": {"repobilityId": "c1e9028b68fd1b4c", "scanner": "scanner-primary", "fingerprint": "1ae24bdebde993ff", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-f3e279a342b49a27", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/netstart/AppShell.tsx:215"}, "properties": {"repobilityId": "b08665de7e6b1c7e", "scanner": "scanner-primary", "fingerprint": "f3e279a342b49a27", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-b884a7de49329894", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/netstart/NotificationsBell.tsx:201"}, "properties": {"repobilityId": "2e0dd2bd2d3b795b", "scanner": "scanner-primary", "fingerprint": "b884a7de49329894", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-22f237c26ec3eefa", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/netstart/UserMenu.tsx:42"}, "properties": {"repobilityId": "7a805091ccca9d46", "scanner": "scanner-primary", "fingerprint": "22f237c26ec3eefa", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-8a33f85d9062783a", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/marketing/demo/DemoApp.tsx:195"}, "properties": {"repobilityId": "93d8a76089045816", "scanner": "scanner-primary", "fingerprint": "8a33f85d9062783a", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-5275c1330a3fa797", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/mynet/ProfileWizard.tsx:1151"}, "properties": {"repobilityId": "81e12d5abf90cf12", "scanner": "scanner-primary", "fingerprint": "5275c1330a3fa797", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-5be061273f86e80f", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/mynet/ProjectCard.tsx:69"}, "properties": {"repobilityId": "064d7003f2573f81", "scanner": "scanner-primary", "fingerprint": "5be061273f86e80f", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-23996d04160f1844", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/mynet/ApplicationsPanel.tsx:242"}, "properties": {"repobilityId": "50890789e4176c0d", "scanner": "scanner-primary", "fingerprint": "23996d04160f1844", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-c050376fe150fffa", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/mynet/FindPeopleSheet.tsx:214"}, "properties": {"repobilityId": "41a70045a2432136", "scanner": "scanner-primary", "fingerprint": "c050376fe150fffa", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-f0177e3fe4091933", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/mynet/ApplyDialog.tsx:103"}, "properties": {"repobilityId": "f657544f21042317", "scanner": "scanner-primary", "fingerprint": "f0177e3fe4091933", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-7953dd91079706e9", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/mynet/ProfileCard.tsx:450"}, "properties": {"repobilityId": "d1b914b8071e4582", "scanner": "scanner-primary", "fingerprint": "7953dd91079706e9", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-7a6413809553f8e9", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/mynet/SavedPeopleList.tsx:218"}, "properties": {"repobilityId": "45774116fab61e21", "scanner": "scanner-primary", "fingerprint": "7a6413809553f8e9", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-b262baa02f162588", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/mynet/ProfileDashboard.tsx:567"}, "properties": {"repobilityId": "e8378c83e69e8488", "scanner": "scanner-primary", "fingerprint": "b262baa02f162588", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-f9aa9823aca2650d", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/mynet/TagInput.tsx:159"}, "properties": {"repobilityId": "9dd077bc90129aa8", "scanner": "scanner-primary", "fingerprint": "f9aa9823aca2650d", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-1b6e6a84622876d9", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/layout.tsx:302"}, "properties": {"repobilityId": "0d72350965068f5b", "scanner": "scanner-primary", "fingerprint": "1b6e6a84622876d9", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-8bcd5fba07e7db11", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/views/Admin.tsx:559"}, "properties": {"repobilityId": "ec170aaf9615c83f", "scanner": "scanner-primary", "fingerprint": "8bcd5fba07e7db11", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-861348930d31dd88", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/views/FounderProfile.tsx:329"}, "properties": {"repobilityId": "d3f25e6647080861", "scanner": "scanner-primary", "fingerprint": "861348930d31dd88", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-c87d7f35885ea3f4", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/views/Saved.tsx:438"}, "properties": {"repobilityId": "f72ef212d06106b1", "scanner": "scanner-primary", "fingerprint": "c87d7f35885ea3f4", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-6db7c5c52e9e7e68", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/views/Reviews.tsx:227"}, "properties": {"repobilityId": "80ec8085967209c7", "scanner": "scanner-primary", "fingerprint": "6db7c5c52e9e7e68", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-aa5ac93b6e9d06c0", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/views/Match.tsx:2214"}, "properties": {"repobilityId": "8a176957bac4a5fb", "scanner": "scanner-primary", "fingerprint": "aa5ac93b6e9d06c0", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-324c27d5f1c7c6ce", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in mobile/app/+html.tsx:51"}, "properties": {"repobilityId": "56149ef2a646bb83", "scanner": "scanner-primary", "fingerprint": "324c27d5f1c7c6ce", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "mobile/app/+html.tsx"}, "region": {"startLine": 51}}}]}, {"ruleId": "scanner-54f9b4a247007122", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in supabase/functions/embed/index.ts:25"}, "properties": {"repobilityId": "de8538838d3c1dfa", "scanner": "scanner-primary", "fingerprint": "54f9b4a247007122", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "supabase/functions/embed/index.ts"}, "region": {"startLine": 25}}}]}, {"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-d0b1e28e46146e0f", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/layout.tsx:302"}, "properties": {"repobilityId": "0bca654fa2052eb0", "scanner": "scanner-primary", "fingerprint": "d0b1e28e46146e0f", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/layout.tsx"}, "region": {"startLine": 302}}}]}, {"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-32266b39a615e5e1", "level": "note", "message": {"text": "Very large file: src/lib/mynet-storage.ts (2164 lines)"}, "properties": {"repobilityId": "f2440d38c4235735", "scanner": "scanner-primary", "fingerprint": "32266b39a615e5e1", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-c90b4212be1d3130", "level": "note", "message": {"text": "Very large file: src/views/Match.tsx (2473 lines)"}, "properties": {"repobilityId": "bb4725d73ab9d589", "scanner": "scanner-primary", "fingerprint": "c90b4212be1d3130", "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": "5a3e096ded84363b", "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": "cf52b4904361dff7", "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": "f34952a1f0f93e9f", "scanner": "scanner-primary", "fingerprint": "72b2a6250083a784", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["placeholder", "mock-data", "incomplete", "generated-repo-pattern"]}}, {"ruleId": "scanner-9d79c4077342a7d0", "level": "warning", "message": {"text": "Runtime service client appears to use placeholder configuration"}, "properties": {"repobilityId": "54eb3413c815a2a1", "scanner": "scanner-primary", "fingerprint": "9d79c4077342a7d0", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["placeholder", "runtime-config", "service-client", "generated-repo-pattern"]}}, {"ruleId": "scanner-2d0c7b7ab8f8aacf", "level": "warning", "message": {"text": "Critical user flow still appears backed by mock or placeholder data"}, "properties": {"repobilityId": "45f442b05821df8c", "scanner": "scanner-primary", "fingerprint": "2d0c7b7ab8f8aacf", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["placeholder", "mock-data", "critical-flow", "generated-repo-pattern"]}}, {"ruleId": "scanner-b9088664ace7f748", "level": "note", "message": {"text": "Composite production-readiness gap"}, "properties": {"repobilityId": "abb9cfc4cb30d252", "scanner": "scanner-primary", "fingerprint": "b9088664ace7f748", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["production-readiness", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-749d4bc1bd66df5f", "level": "warning", "message": {"text": "Agent instructions exist but release-hardening basics are missing"}, "properties": {"repobilityId": "ac44083a9358107f", "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": "187b7fe44a28a860", "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": "60434a85456b55a6", "scanner": "scanner-primary", "fingerprint": "8424db9c75e04ba4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["provenance", "git-history", "generated-repo-pattern"]}}, {"ruleId": "scanner-9fbaff076fafe1cd", "level": "none", "message": {"text": "Commented-code block (8 lines) in next.config.ts:33"}, "properties": {"repobilityId": "75b58252c76c35a8", "scanner": "scanner-primary", "fingerprint": "9fbaff076fafe1cd", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-9510b8705bcc5537", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/strip-translucency.js:56"}, "properties": {"repobilityId": "d25b846b1a8a577a", "scanner": "scanner-primary", "fingerprint": "9510b8705bcc5537", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-bb28858cea9655fe", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/fix-button-contrast.js:55"}, "properties": {"repobilityId": "a5ce1f74a7dde740", "scanner": "scanner-primary", "fingerprint": "bb28858cea9655fe", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1cf3e9b418c02ad5", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/app-prefix-routes.cjs:46"}, "properties": {"repobilityId": "a5fbe38f3e16c77f", "scanner": "scanner-primary", "fingerprint": "1cf3e9b418c02ad5", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-20cb7ece47acbcad", "level": "none", "message": {"text": "Commented-code block (7 lines) in scripts/strip-orphan-modifiers.js:58"}, "properties": {"repobilityId": "4a00d8c4ce1ab278", "scanner": "scanner-primary", "fingerprint": "20cb7ece47acbcad", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b700777a5176d772", "level": "none", "message": {"text": "Commented-code block (5 lines) in mobile/components/TutorialOverlay.tsx:274"}, "properties": {"repobilityId": "8692d96bcc3d9656", "scanner": "scanner-primary", "fingerprint": "b700777a5176d772", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a8a77378f1b7275c", "level": "none", "message": {"text": "Commented-code block (5 lines) in mobile/app/chat/[id].tsx:236"}, "properties": {"repobilityId": "ba83beec36780a4c", "scanner": "scanner-primary", "fingerprint": "a8a77378f1b7275c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d747383c53aa3acc", "level": "none", "message": {"text": "Commented-code block (5 lines) in mobile/app/(tabs)/index.tsx:114"}, "properties": {"repobilityId": "e2ba205b8debbc71", "scanner": "scanner-primary", "fingerprint": "d747383c53aa3acc", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-84cec0a1d2c43559", "level": "none", "message": {"text": "Commented-code block (6 lines) in mobile/app/(tabs)/mynet.tsx:167"}, "properties": {"repobilityId": "554e752ff5f8bb3f", "scanner": "scanner-primary", "fingerprint": "84cec0a1d2c43559", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-98549edf2cf88d9a", "level": "none", "message": {"text": "Commented-code block (5 lines) in mobile/app/(tabs)/threads.tsx:236"}, "properties": {"repobilityId": "a106848c499c9a21", "scanner": "scanner-primary", "fingerprint": "98549edf2cf88d9a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e9fe5aa1bd83646e", "level": "none", "message": {"text": "Commented-code block (7 lines) in mobile/app/(tabs)/_layout.tsx:256"}, "properties": {"repobilityId": "3654417844bc6872", "scanner": "scanner-primary", "fingerprint": "e9fe5aa1bd83646e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1e503bf45c2fd96e", "level": "none", "message": {"text": "Commented-code block (5 lines) in mobile/app/project/[id].tsx:649"}, "properties": {"repobilityId": "ffeb5ec8385b3970", "scanner": "scanner-primary", "fingerprint": "1e503bf45c2fd96e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-087fd9ad225d95f3", "level": "none", "message": {"text": "Commented-code block (7 lines) in mobile/lib/auth.tsx:22"}, "properties": {"repobilityId": "482d053830cb9243", "scanner": "scanner-primary", "fingerprint": "087fd9ad225d95f3", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a8fc30d888cb35f4", "level": "none", "message": {"text": "Commented-code block (6 lines) in mobile/lib/api.ts:432"}, "properties": {"repobilityId": "42dfc9861d82830a", "scanner": "scanner-primary", "fingerprint": "a8fc30d888cb35f4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d7539cefe848008d", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 mobile/lib/api.ts:209"}, "properties": {"repobilityId": "b2223ef997f4a118", "scanner": "scanner-primary", "fingerprint": "d7539cefe848008d", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-23a7b735fc9c184c", "level": "note", "message": {"text": "Legacy-named symbol `netstart_tutorial_seen_match_v2` in mobile/lib/tutorial.ts:6"}, "properties": {"repobilityId": "2099670bb8b60e96", "scanner": "scanner-primary", "fingerprint": "23a7b735fc9c184c", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-9ef542f41dac37ef", "level": "note", "message": {"text": "Legacy-named symbol `vettd_sent_requests_v2` in mobile/lib/sentRequests.ts:15"}, "properties": {"repobilityId": "112c03a80311c85b", "scanner": "scanner-primary", "fingerprint": "9ef542f41dac37ef", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-d69b1cd47cca7fae", "level": "none", "message": {"text": "Commented-code block (5 lines) in mobile/lib/sentRequests.ts:1"}, "properties": {"repobilityId": "3544d0da0c343fbf", "scanner": "scanner-primary", "fingerprint": "d69b1cd47cca7fae", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-3299056618659357", "level": "none", "message": {"text": "Commented-code block (5 lines) in mobile/lib/theme.ts:1"}, "properties": {"repobilityId": "ce68ceb6472f67b1", "scanner": "scanner-primary", "fingerprint": "3299056618659357", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d21b01b2206870af", "level": "note", "message": {"text": "Legacy-named symbol `vettd_saved_v1` in mobile/lib/savedCount.ts:15"}, "properties": {"repobilityId": "91122d9ec32f261e", "scanner": "scanner-primary", "fingerprint": "d21b01b2206870af", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-698ab5d522d663c2", "level": "none", "message": {"text": "Commented-code block (9 lines) in mobile/lib/supabase.ts:19"}, "properties": {"repobilityId": "935ec34703c22c6c", "scanner": "scanner-primary", "fingerprint": "698ab5d522d663c2", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f6e117f562dd4018", "level": "none", "message": {"text": "Commented-code block (6 lines) in supabase/functions/profile-reminders/index.ts:3"}, "properties": {"repobilityId": "849831a641b991a5", "scanner": "scanner-primary", "fingerprint": "f6e117f562dd4018", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8974a254b29df844", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 supabase/functions/profile-reminders/index.ts:241"}, "properties": {"repobilityId": "8de9cdc811222dc0", "scanner": "scanner-primary", "fingerprint": "8974a254b29df844", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-c0145c455ae00118", "level": "none", "message": {"text": "Commented-code block (6 lines) in supabase/functions/notify-email/index.ts:3"}, "properties": {"repobilityId": "716f1c8ea45a4dba", "scanner": "scanner-primary", "fingerprint": "c0145c455ae00118", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6d8b28d63628baee", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 supabase/functions/notify-email/index.ts:148"}, "properties": {"repobilityId": "06897cae07777cc1", "scanner": "scanner-primary", "fingerprint": "6d8b28d63628baee", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-0d155404ac4fa4dd", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/components/ui/button.tsx:18"}, "properties": {"repobilityId": "6461cfa9d40f0af9", "scanner": "scanner-primary", "fingerprint": "0d155404ac4fa4dd", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8630104ef5df43ea", "level": "none", "message": {"text": "Commented-code block (7 lines) in src/components/chat/ChatConversation.tsx:145"}, "properties": {"repobilityId": "50d531f185f49ce0", "scanner": "scanner-primary", "fingerprint": "8630104ef5df43ea", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-796d94faed5149a6", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/components/chat/ChatThreadList.tsx:292"}, "properties": {"repobilityId": "97f7f2c46552ab4c", "scanner": "scanner-primary", "fingerprint": "796d94faed5149a6", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c1b0578cd76acd1c", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/components/netstart/MobileSwipeCard.tsx:85"}, "properties": {"repobilityId": "5b1bca5bdc006c2d", "scanner": "scanner-primary", "fingerprint": "c1b0578cd76acd1c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-3e7d294d15a75876", "level": "none", "message": {"text": "Commented-code block (7 lines) in src/components/netstart/BoostPopup.tsx:8"}, "properties": {"repobilityId": "fa039e31174d0b1b", "scanner": "scanner-primary", "fingerprint": "3e7d294d15a75876", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d9c179dc9f032f6f", "level": "none", "message": {"text": "Commented-code block (7 lines) in src/components/netstart/SpotlightModal.tsx:10"}, "properties": {"repobilityId": "48e604113e325430", "scanner": "scanner-primary", "fingerprint": "d9c179dc9f032f6f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-bff90f7ba0a7df21", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/components/netstart/AppLeftPanel.tsx:70"}, "properties": {"repobilityId": "1e23c4ec7e46d027", "scanner": "scanner-primary", "fingerprint": "bff90f7ba0a7df21", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-60fa2399170e499d", "level": "none", "message": {"text": "Commented-code block (7 lines) in src/components/netstart/ProfileSetupBanner.tsx:31"}, "properties": {"repobilityId": "af1494f86e1317b3", "scanner": "scanner-primary", "fingerprint": "60fa2399170e499d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ba97a8fef796d046", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/components/netstart/MothEmptyState.tsx:622"}, "properties": {"repobilityId": "0896b3eab76ab46d", "scanner": "scanner-primary", "fingerprint": "ba97a8fef796d046", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f25b7b00519a0837", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/components/netstart/Sidebar.tsx:36"}, "properties": {"repobilityId": "095937b6f82053ff", "scanner": "scanner-primary", "fingerprint": "f25b7b00519a0837", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0671be19dfa7b719", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/components/marketing/WhySection.tsx:70"}, "properties": {"repobilityId": "ea4430dbaaca56a5", "scanner": "scanner-primary", "fingerprint": "0671be19dfa7b719", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-26563915e7f5fa52", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/components/mynet/VerifiedBanner.tsx:107"}, "properties": {"repobilityId": "4f8da4ead0988da8", "scanner": "scanner-primary", "fingerprint": "26563915e7f5fa52", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d43685784b47c9f9", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/components/mynet/ProfileSignupFlow.tsx:238"}, "properties": {"repobilityId": "9ea2c0952d44c109", "scanner": "scanner-primary", "fingerprint": "d43685784b47c9f9", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e43bf63645f54f12", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/components/mynet/ProfileDashboard.tsx:687"}, "properties": {"repobilityId": "5e17fd5bcc1ad4dd", "scanner": "scanner-primary", "fingerprint": "e43bf63645f54f12", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-3cf14330f255300e", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/components/mynet/BannerCropper.tsx:95"}, "properties": {"repobilityId": "4685395f03c6820d", "scanner": "scanner-primary", "fingerprint": "3cf14330f255300e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-dceee4b9c7eec86f", "level": "none", "message": {"text": "Commented-code block (7 lines) in src/components/mockups/Steps.tsx:497"}, "properties": {"repobilityId": "8a7f2f5a789f9c09", "scanner": "scanner-primary", "fingerprint": "dceee4b9c7eec86f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-68d41fdd82511b9a", "level": "note", "message": {"text": "Legacy-named symbol `polln8_web_theme_v2` in src/app/layout.tsx:326"}, "properties": {"repobilityId": "a54aa8314dd36db6", "scanner": "scanner-primary", "fingerprint": "68d41fdd82511b9a", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-be079fe964bebcff", "level": "none", "message": {"text": "Commented-code block (7 lines) in src/app/layout.tsx:33"}, "properties": {"repobilityId": "945f77650ce7c847", "scanner": "scanner-primary", "fingerprint": "be079fe964bebcff", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-fda234279573f782", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/app/providers.tsx:31"}, "properties": {"repobilityId": "f2d4f2434b3a3d5c", "scanner": "scanner-primary", "fingerprint": "fda234279573f782", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8af005840c9731f5", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/app/api/unsubscribe-reminders/route.ts:134"}, "properties": {"repobilityId": "e4729868364e47ad", "scanner": "scanner-primary", "fingerprint": "8af005840c9731f5", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-09de62a5c260b80c", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/app/api/stripe/verify-session/route.ts:7"}, "properties": {"repobilityId": "728251fb37e8cef9", "scanner": "scanner-primary", "fingerprint": "09de62a5c260b80c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-994a171b69b75b2a", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/app/api/stripe/checkout/route.ts:6"}, "properties": {"repobilityId": "fa1c77314258dc8b", "scanner": "scanner-primary", "fingerprint": "994a171b69b75b2a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d549112e4f361a22", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/app/app/profile/edit/page.tsx:1"}, "properties": {"repobilityId": "11186207341f8e5e", "scanner": "scanner-primary", "fingerprint": "d549112e4f361a22", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1f522d01d19acc4d", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/lib/ai.ts:1"}, "properties": {"repobilityId": "8bf9c31ec0c65ca6", "scanner": "scanner-primary", "fingerprint": "1f522d01d19acc4d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1a3a664f86fc37c6", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/lib/analytics.ts:42"}, "properties": {"repobilityId": "11d8cedaa8716d30", "scanner": "scanner-primary", "fingerprint": "1a3a664f86fc37c6", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6337f2b338cd3e40", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/lib/api-auth.ts:9"}, "properties": {"repobilityId": "fb6f119b927a1fb7", "scanner": "scanner-primary", "fingerprint": "6337f2b338cd3e40", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f66167039c09f7c2", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/lib/options.ts:27"}, "properties": {"repobilityId": "c21db22199618109", "scanner": "scanner-primary", "fingerprint": "f66167039c09f7c2", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2ccf86af3d8de589", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/lib/mynet-storage.ts:527"}, "properties": {"repobilityId": "b580982db9558c7a", "scanner": "scanner-primary", "fingerprint": "2ccf86af3d8de589", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d7382074178164cb", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/lib/reviews-storage.ts:3"}, "properties": {"repobilityId": "9329722a44547f07", "scanner": "scanner-primary", "fingerprint": "d7382074178164cb", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ee9552063b553a4d", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/lib/mynet-types.ts:59"}, "properties": {"repobilityId": "3b35ed5cfbb03789", "scanner": "scanner-primary", "fingerprint": "ee9552063b553a4d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d39bcfd28b426ac5", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/lib/supabase-admin.ts:8"}, "properties": {"repobilityId": "7c03d100ef9c61b6", "scanner": "scanner-primary", "fingerprint": "d39bcfd28b426ac5", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f4cd9595f4e25f8d", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/hooks/useReviewStatus.ts:1"}, "properties": {"repobilityId": "ded27b7b89584c53", "scanner": "scanner-primary", "fingerprint": "f4cd9595f4e25f8d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1b89eb509c868187", "level": "none", "message": {"text": "Commented-code block (12 lines) in src/context/AuthContext.tsx:41"}, "properties": {"repobilityId": "3ee334815ac2db3a", "scanner": "scanner-primary", "fingerprint": "1b89eb509c868187", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2240c0a9cb639d2b", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/views/Admin.tsx:1083"}, "properties": {"repobilityId": "561993b2236c936e", "scanner": "scanner-primary", "fingerprint": "2240c0a9cb639d2b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f88f4af6865854cf", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/views/Index.tsx:238"}, "properties": {"repobilityId": "ceef8ffdcb485683", "scanner": "scanner-primary", "fingerprint": "f88f4af6865854cf", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-91fb2123698e5015", "level": "none", "message": {"text": "Commented-code block (8 lines) in src/views/Chats.tsx:70"}, "properties": {"repobilityId": "21922ffd5fc61f85", "scanner": "scanner-primary", "fingerprint": "91fb2123698e5015", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-859b83f6c6b9b1a1", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/views/Verified.tsx:79"}, "properties": {"repobilityId": "9e90d1ad5765621e", "scanner": "scanner-primary", "fingerprint": "859b83f6c6b9b1a1", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-5531bdc89e7fade9", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/views/Profile.tsx:343"}, "properties": {"repobilityId": "9a07c2015617b604", "scanner": "scanner-primary", "fingerprint": "5531bdc89e7fade9", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-63c96ce51c6c482b", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/views/ProfileEdit.tsx:29"}, "properties": {"repobilityId": "b14f926ce7506cd7", "scanner": "scanner-primary", "fingerprint": "63c96ce51c6c482b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-de50f5a2938fa683", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/views/Boost.tsx:61"}, "properties": {"repobilityId": "ec3bff0e887581fc", "scanner": "scanner-primary", "fingerprint": "de50f5a2938fa683", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-6c7736cb35d5f38b", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/views/Match.tsx:113"}, "properties": {"repobilityId": "abcea78bc56ff546", "scanner": "scanner-primary", "fingerprint": "6c7736cb35d5f38b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ea9e68eadd747ba8", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/views/Perks.tsx:16"}, "properties": {"repobilityId": "124c7c513add35f1", "scanner": "scanner-primary", "fingerprint": "ea9e68eadd747ba8", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-3adb217189b4ac87", "level": "none", "message": {"text": "Commented-code block (8 lines) in src/views/Waitlist.tsx:56"}, "properties": {"repobilityId": "9da2b79b129275a8", "scanner": "scanner-primary", "fingerprint": "3adb217189b4ac87", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1fcdc2782be1a3dd", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/views/Settings.tsx:42"}, "properties": {"repobilityId": "504cc2a764374238", "scanner": "scanner-primary", "fingerprint": "1fcdc2782be1a3dd", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-64acbec8a1d60999", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/views/Home.tsx:163"}, "properties": {"repobilityId": "033330532d4c13a8", "scanner": "scanner-primary", "fingerprint": "64acbec8a1d60999", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4c1ef67ec2dd2124", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/views/Spotlight.tsx:60"}, "properties": {"repobilityId": "7c897592345cdbcd", "scanner": "scanner-primary", "fingerprint": "4c1ef67ec2dd2124", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-77752214c0fead25", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/views/SignUp.tsx:103"}, "properties": {"repobilityId": "8cbf24cf7bb312e6", "scanner": "scanner-primary", "fingerprint": "77752214c0fead25", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b0b7578dd2a289b6", "level": "note", "message": {"text": "26 env vars used in code but missing from .env.example"}, "properties": {"repobilityId": "8099a5c5713d37b9", "scanner": "scanner-primary", "fingerprint": "b0b7578dd2a289b6", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "config-drift"]}}]}]}