{"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": "scanner-cb4ff98b52ab9f0f", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/app/pages/StudyRoom.tsx:128", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/app/pages/StudyRoom.tsx:128"}, "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-ffaf06302d0a8d38", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/app/pages/Dashboard.tsx:174", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/app/pages/Dashboard.tsx:174"}, "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-6893a6c8b0861585", "name": "Very low test-to-source ratio", "shortDescription": {"text": "Very low test-to-source ratio"}, "fullDescription": {"text": "0 test file(s) for 95 source file(s) (ratio 0.00). 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-72b2a6250083a784", "name": "Placeholder or mock-heavy implementation detected", "shortDescription": {"text": "Placeholder or mock-heavy implementation detected"}, "fullDescription": {"text": "Found 71 placeholder/mock markers across 36 source files. This often means the repo looks complete while core flows still use generated scaffolding or fake data."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-2d0c7b7ab8f8aacf", "name": "Critical user flow still appears backed by mock or placeholder data", "shortDescription": {"text": "Critical user flow still appears backed by mock or placeholder data"}, "fullDescription": {"text": "A payment/auth/admin/order/billing-style flow contains mock, fake, TODO, dummy, or placeholder markers in runtime source. In the Fable corpus this is a high-leverage completeness smell: the app can look finished while the money, identity, or tenant flow is still scaffolded."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-b9088664ace7f748", "name": "Composite production-readiness gap", "shortDescription": {"text": "Composite production-readiness gap"}, "fullDescription": {"text": "Multiple low-cost hardening controls are missing together: license, ci, tests. Opus verification showed these co-occurring gaps are a better readiness signal than reading each flag in isolation."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-3a2e2cfd6ee94905", "name": "Frontend route `/onboarding` has no Link/navigate to it \u2014 src/App.tsx", "shortDescription": {"text": "Frontend route `/onboarding` has no Link/navigate to it \u2014 src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-5e68b7b8198c6646", "name": "Frontend route `/app` has no Link/navigate to it \u2014 src/App.tsx", "shortDescription": {"text": "Frontend route `/app` has no Link/navigate to it \u2014 src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-cef386312d50c26d", "name": "Frontend route `dashboard` has no Link/navigate to it \u2014 src/App.tsx", "shortDescription": {"text": "Frontend route `dashboard` has no Link/navigate to it \u2014 src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-9119e30762f3e070", "name": "Frontend route `problems` has no Link/navigate to it \u2014 src/App.tsx", "shortDescription": {"text": "Frontend route `problems` has no Link/navigate to it \u2014 src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-96ec3ccfcfca5285", "name": "Frontend route `daily` has no Link/navigate to it \u2014 src/App.tsx", "shortDescription": {"text": "Frontend route `daily` has no Link/navigate to it \u2014 src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-07fbf95d17fb6494", "name": "Frontend route `interview` has no Link/navigate to it \u2014 src/App.tsx", "shortDescription": {"text": "Frontend route `interview` has no Link/navigate to it \u2014 src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-708a3a4005425ba9", "name": "Frontend route `leaderboard` has no Link/navigate to it \u2014 src/App.tsx", "shortDescription": {"text": "Frontend route `leaderboard` has no Link/navigate to it \u2014 src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-c64d4c091e63dc21", "name": "Frontend route `forum` has no Link/navigate to it \u2014 src/App.tsx", "shortDescription": {"text": "Frontend route `forum` has no Link/navigate to it \u2014 src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-6892ff26fa632096", "name": "Frontend route `groups` has no Link/navigate to it \u2014 src/App.tsx", "shortDescription": {"text": "Frontend route `groups` has no Link/navigate to it \u2014 src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-5951f0d59dfb2852", "name": "Frontend route `groups/:roomId` has no Link/navigate to it \u2014 src/App.tsx", "shortDescription": {"text": "Frontend route `groups/:roomId` has no Link/navigate to it \u2014 src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-c02a4c3710292689", "name": "Frontend route `skills` has no Link/navigate to it \u2014 src/App.tsx", "shortDescription": {"text": "Frontend route `skills` has no Link/navigate to it \u2014 src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-6c88a66c990a9a5b", "name": "Frontend route `readiness` has no Link/navigate to it \u2014 src/App.tsx", "shortDescription": {"text": "Frontend route `readiness` has no Link/navigate to it \u2014 src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-09e6875741657ac0", "name": "Frontend route `certifications` has no Link/navigate to it \u2014 src/App.tsx", "shortDescription": {"text": "Frontend route `certifications` has no Link/navigate to it \u2014 src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-7c7dd32c18c03b9d", "name": "Frontend route `assignments` has no Link/navigate to it \u2014 src/App.tsx", "shortDescription": {"text": "Frontend route `assignments` has no Link/navigate to it \u2014 src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-9ef140e9f01ecea2", "name": "Frontend route `roadmap` has no Link/navigate to it \u2014 src/App.tsx", "shortDescription": {"text": "Frontend route `roadmap` has no Link/navigate to it \u2014 src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-11feb210c2f50b50", "name": "Frontend route `profile` has no Link/navigate to it \u2014 src/App.tsx", "shortDescription": {"text": "Frontend route `profile` has no Link/navigate to it \u2014 src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-cbd62c978dd9c852", "name": "Frontend route `/jobs` has no Link/navigate to it \u2014 src/App.tsx", "shortDescription": {"text": "Frontend route `/jobs` has no Link/navigate to it \u2014 src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-4ece163c12e8d42c", "name": "Frontend route `gap` has no Link/navigate to it \u2014 src/App.tsx", "shortDescription": {"text": "Frontend route `gap` has no Link/navigate to it \u2014 src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-97bd27b2a9dade1d", "name": "Frontend route `/resume` has no Link/navigate to it \u2014 src/App.tsx", "shortDescription": {"text": "Frontend route `/resume` has no Link/navigate to it \u2014 src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-3183297b503bec04", "name": "Frontend route `recruiter-view` has no Link/navigate to it \u2014 src/App.tsx", "shortDescription": {"text": "Frontend route `recruiter-view` has no Link/navigate to it \u2014 src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-ca6dd6373757471f", "name": "Frontend route `/faculty` has no Link/navigate to it \u2014 src/App.tsx", "shortDescription": {"text": "Frontend route `/faculty` has no Link/navigate to it \u2014 src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}]}}, "automationDetails": {"id": "repobility/24302"}, "properties": {"repository": "arjunj08/edusphere", "repoUrl": "https://github.com/arjunj08/edusphere", "branch": "main"}, "results": [{"ruleId": "scanner-cb4ff98b52ab9f0f", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/app/pages/StudyRoom.tsx:128"}, "properties": {"repobilityId": "b38355b58f5edf64", "scanner": "scanner-primary", "fingerprint": "cb4ff98b52ab9f0f", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-ffaf06302d0a8d38", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/app/pages/Dashboard.tsx:174"}, "properties": {"repobilityId": "d78266f2491b0ba8", "scanner": "scanner-primary", "fingerprint": "ffaf06302d0a8d38", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"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": "153ecbb98fe99a2c", "scanner": "scanner-primary", "fingerprint": "141b30a41e03817b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["license", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-72b2a6250083a784", "level": "warning", "message": {"text": "Placeholder or mock-heavy implementation detected"}, "properties": {"repobilityId": "a55b23a6d5f5959d", "scanner": "scanner-primary", "fingerprint": "72b2a6250083a784", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["placeholder", "mock-data", "incomplete", "generated-repo-pattern"]}}, {"ruleId": "scanner-2d0c7b7ab8f8aacf", "level": "warning", "message": {"text": "Critical user flow still appears backed by mock or placeholder data"}, "properties": {"repobilityId": "58e7edb4b6946379", "scanner": "scanner-primary", "fingerprint": "2d0c7b7ab8f8aacf", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["placeholder", "mock-data", "critical-flow", "generated-repo-pattern"]}}, {"ruleId": "scanner-b9088664ace7f748", "level": "warning", "message": {"text": "Composite production-readiness gap"}, "properties": {"repobilityId": "e61ccfc1190b47ec", "scanner": "scanner-primary", "fingerprint": "b9088664ace7f748", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["production-readiness", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-3a2e2cfd6ee94905", "level": "warning", "message": {"text": "Frontend route `/onboarding` has no Link/navigate to it \u2014 src/App.tsx"}, "properties": {"repobilityId": "cee19b1206f168bf", "scanner": "scanner-primary", "fingerprint": "3a2e2cfd6ee94905", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-5e68b7b8198c6646", "level": "warning", "message": {"text": "Frontend route `/app` has no Link/navigate to it \u2014 src/App.tsx"}, "properties": {"repobilityId": "d043a1e5f8377e90", "scanner": "scanner-primary", "fingerprint": "5e68b7b8198c6646", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-cef386312d50c26d", "level": "warning", "message": {"text": "Frontend route `dashboard` has no Link/navigate to it \u2014 src/App.tsx"}, "properties": {"repobilityId": "7176b9e63e301c9b", "scanner": "scanner-primary", "fingerprint": "cef386312d50c26d", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-9119e30762f3e070", "level": "warning", "message": {"text": "Frontend route `problems` has no Link/navigate to it \u2014 src/App.tsx"}, "properties": {"repobilityId": "75aa67355e2a7a6b", "scanner": "scanner-primary", "fingerprint": "9119e30762f3e070", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-96ec3ccfcfca5285", "level": "warning", "message": {"text": "Frontend route `daily` has no Link/navigate to it \u2014 src/App.tsx"}, "properties": {"repobilityId": "e1a4333e7a73dd93", "scanner": "scanner-primary", "fingerprint": "96ec3ccfcfca5285", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-07fbf95d17fb6494", "level": "warning", "message": {"text": "Frontend route `interview` has no Link/navigate to it \u2014 src/App.tsx"}, "properties": {"repobilityId": "c1d233f7901d7664", "scanner": "scanner-primary", "fingerprint": "07fbf95d17fb6494", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-708a3a4005425ba9", "level": "warning", "message": {"text": "Frontend route `leaderboard` has no Link/navigate to it \u2014 src/App.tsx"}, "properties": {"repobilityId": "5be37ffc393f1c3c", "scanner": "scanner-primary", "fingerprint": "708a3a4005425ba9", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-c64d4c091e63dc21", "level": "warning", "message": {"text": "Frontend route `forum` has no Link/navigate to it \u2014 src/App.tsx"}, "properties": {"repobilityId": "dfe760b6bf6c013e", "scanner": "scanner-primary", "fingerprint": "c64d4c091e63dc21", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-6892ff26fa632096", "level": "warning", "message": {"text": "Frontend route `groups` has no Link/navigate to it \u2014 src/App.tsx"}, "properties": {"repobilityId": "98332eb263cbb115", "scanner": "scanner-primary", "fingerprint": "6892ff26fa632096", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-5951f0d59dfb2852", "level": "warning", "message": {"text": "Frontend route `groups/:roomId` has no Link/navigate to it \u2014 src/App.tsx"}, "properties": {"repobilityId": "a47dc9d4f6790b1e", "scanner": "scanner-primary", "fingerprint": "5951f0d59dfb2852", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-c02a4c3710292689", "level": "warning", "message": {"text": "Frontend route `skills` has no Link/navigate to it \u2014 src/App.tsx"}, "properties": {"repobilityId": "1e323a68565b6623", "scanner": "scanner-primary", "fingerprint": "c02a4c3710292689", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-6c88a66c990a9a5b", "level": "warning", "message": {"text": "Frontend route `readiness` has no Link/navigate to it \u2014 src/App.tsx"}, "properties": {"repobilityId": "9600533cc18cc710", "scanner": "scanner-primary", "fingerprint": "6c88a66c990a9a5b", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-09e6875741657ac0", "level": "warning", "message": {"text": "Frontend route `certifications` has no Link/navigate to it \u2014 src/App.tsx"}, "properties": {"repobilityId": "d4daa2c8e6c61fce", "scanner": "scanner-primary", "fingerprint": "09e6875741657ac0", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-7c7dd32c18c03b9d", "level": "warning", "message": {"text": "Frontend route `assignments` has no Link/navigate to it \u2014 src/App.tsx"}, "properties": {"repobilityId": "97ede350e01e8d86", "scanner": "scanner-primary", "fingerprint": "7c7dd32c18c03b9d", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-9ef140e9f01ecea2", "level": "warning", "message": {"text": "Frontend route `roadmap` has no Link/navigate to it \u2014 src/App.tsx"}, "properties": {"repobilityId": "d751e255588f09f9", "scanner": "scanner-primary", "fingerprint": "9ef140e9f01ecea2", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-11feb210c2f50b50", "level": "warning", "message": {"text": "Frontend route `profile` has no Link/navigate to it \u2014 src/App.tsx"}, "properties": {"repobilityId": "96c44ef5fce161fb", "scanner": "scanner-primary", "fingerprint": "11feb210c2f50b50", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-cbd62c978dd9c852", "level": "warning", "message": {"text": "Frontend route `/jobs` has no Link/navigate to it \u2014 src/App.tsx"}, "properties": {"repobilityId": "4e8ccc9c30bb9090", "scanner": "scanner-primary", "fingerprint": "cbd62c978dd9c852", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-4ece163c12e8d42c", "level": "warning", "message": {"text": "Frontend route `gap` has no Link/navigate to it \u2014 src/App.tsx"}, "properties": {"repobilityId": "4556cbd950d6d823", "scanner": "scanner-primary", "fingerprint": "4ece163c12e8d42c", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-97bd27b2a9dade1d", "level": "warning", "message": {"text": "Frontend route `/resume` has no Link/navigate to it \u2014 src/App.tsx"}, "properties": {"repobilityId": "db0330fc10fcbf67", "scanner": "scanner-primary", "fingerprint": "97bd27b2a9dade1d", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-3183297b503bec04", "level": "warning", "message": {"text": "Frontend route `recruiter-view` has no Link/navigate to it \u2014 src/App.tsx"}, "properties": {"repobilityId": "c6c43dc1672d08bf", "scanner": "scanner-primary", "fingerprint": "3183297b503bec04", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-ca6dd6373757471f", "level": "warning", "message": {"text": "Frontend route `/faculty` has no Link/navigate to it \u2014 src/App.tsx"}, "properties": {"repobilityId": "c7772618ed959348", "scanner": "scanner-primary", "fingerprint": "ca6dd6373757471f", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}]}]}