{"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-bfbc0b01d003ef3b", "name": "Stray `console.log` in TS/JS \u2014 supabase/functions/admin-api/index.ts:4100", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 supabase/functions/admin-api/index.ts:4100"}, "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-ff28b5266c6a26d7", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/dashboard/PoliciesTable.tsx:632", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/dashboard/PoliciesTable.tsx:632"}, "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-de1cb7155c2a8171", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/dashboard/AgentLeaderboard.tsx:259", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/dashboard/AgentLeaderboard.tsx:259"}, "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-44246e63768891f2", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/agent/AgentBookTab.tsx:302", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/agent/AgentBookTab.tsx:302"}, "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-de7d8d412ce6a578", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/leaderboard/IncentivesPanel.tsx:106", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/leaderboard/IncentivesPanel.tsx:106"}, "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-1672f05457050fc9", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/leaderboard/ActiveBattles.tsx:26", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/leaderboard/ActiveBattles.tsx:26"}, "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-9c688c27f29b5f2d", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/leaderboard/PlayerHUD.tsx:144", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/leaderboard/PlayerHUD.tsx:144"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-780d91569ad6c6d8", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/leaderboard/LeaderboardTable.tsx:173", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/leaderboard/LeaderboardTable.tsx:173"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-605a3d8735917eb3", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/production/BreakdownTable.tsx:78", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/production/BreakdownTable.tsx:78"}, "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-2a3a8013203602c3", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/production/ProductionPieChart.tsx:140", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/production/ProductionPieChart.tsx:140"}, "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-d988ef95c1515e06", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/production/AgentProductionPanel.tsx:182", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/production/AgentProductionPanel.tsx:182"}, "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-43751bfdd8e7471f", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/admin/RosterHistory.tsx:140", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/admin/RosterHistory.tsx:140"}, "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-9bab6a8a5f5bf0a4", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/admin/IntakeSubmissionEditDrawer.tsx:224", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/admin/IntakeSubmissionEditDrawer.tsx:224"}, "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-ed46676dd2046898", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/admin/ColumnMapper.tsx:240", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/admin/ColumnMapper.tsx:240"}, "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-b97f2cad3e59a518", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/admin/AuditPanel.tsx:335", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/admin/AuditPanel.tsx:335"}, "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-f1b70b172cd6f719", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/admin/SourceRecordsTable.tsx:345", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/admin/SourceRecordsTable.tsx:345"}, "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-f4b20a2e1ee19ff8", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/admin/DataSourcesPanel.tsx:1166", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/admin/DataSourcesPanel.tsx:1166"}, "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-7684691fc8ad6a7d", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/admin/NameFixPreviewModal.tsx:167", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/admin/NameFixPreviewModal.tsx:167"}, "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-1f0af33bd75db506", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/admin/DuplicatePoliciesPanel.tsx:225", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/admin/DuplicatePoliciesPanel.tsx:225"}, "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-4019c3063c00626b", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/admin/SqlImportFlow.tsx:369", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/admin/SqlImportFlow.tsx:369"}, "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-2a999a1b6936966d", "name": "Insecure pattern 'cors_wildcard' in supabase/functions/agent-webhook/index.ts:4", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in supabase/functions/agent-webhook/index.ts:4"}, "fullDescription": {"text": "Found a known-risky pattern (cors_wildcard). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-9255c8478c265e24", "name": "Insecure pattern 'cors_wildcard' in supabase/functions/leaderboard-api/index.ts:5", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in supabase/functions/leaderboard-api/index.ts:5"}, "fullDescription": {"text": "Found a known-risky pattern (cors_wildcard). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-08d14f81c6b6c4bc", "name": "Possible secret in supabase/functions/sql-import-cron/index.ts", "shortDescription": {"text": "Possible secret in supabase/functions/sql-import-cron/index.ts"}, "fullDescription": {"text": "Detected pattern matching password_literal. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-63d5a352e4a6a25a", "name": "Insecure pattern 'cors_wildcard' in supabase/functions/sql-import-cron/index.ts:5", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in supabase/functions/sql-import-cron/index.ts:5"}, "fullDescription": {"text": "Found a known-risky pattern (cors_wildcard). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-793fc58ad15cbcf0", "name": "Insecure pattern 'cors_wildcard' in supabase/functions/public-api/index.ts:4", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in supabase/functions/public-api/index.ts:4"}, "fullDescription": {"text": "Found a known-risky pattern (cors_wildcard). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-3d226aa6547f89f8", "name": "Insecure pattern 'cors_wildcard' in supabase/functions/enrollhere-poll/index.ts:5", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in supabase/functions/enrollhere-poll/index.ts:5"}, "fullDescription": {"text": "Found a known-risky pattern (cors_wildcard). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-ec8172de3a858317", "name": "Insecure pattern 'cors_wildcard' in supabase/functions/poll-data-sources/index.ts:5", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in supabase/functions/poll-data-sources/index.ts:5"}, "fullDescription": {"text": "Found a known-risky pattern (cors_wildcard). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-10e5b348b50ea4e5", "name": "Possible secret in supabase/functions/admin-api/index.ts", "shortDescription": {"text": "Possible secret in supabase/functions/admin-api/index.ts"}, "fullDescription": {"text": "Detected pattern matching password_literal. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-1e5bdcf421897be7", "name": "Insecure pattern 'cors_wildcard' in supabase/functions/admin-api/index.ts:4", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in supabase/functions/admin-api/index.ts:4"}, "fullDescription": {"text": "Found a known-risky pattern (cors_wildcard). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-db6072acdd343517", "name": "Possible secret in src/components/admin/AgencyCredentialsPanel.tsx", "shortDescription": {"text": "Possible secret in src/components/admin/AgencyCredentialsPanel.tsx"}, "fullDescription": {"text": "Detected pattern matching password_literal. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-54806a890bb9c275", "name": "Possible secret in src/pages/AdminLogin.tsx", "shortDescription": {"text": "Possible secret in src/pages/AdminLogin.tsx"}, "fullDescription": {"text": "Detected pattern matching password_literal. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-6372cebde0220094", "name": "No auth library detected", "shortDescription": {"text": "No auth library detected"}, "fullDescription": {"text": "The scanner did not find any standard auth library (JWT, OAuth, NextAuth, Auth0, etc.). The repo has auth/admin/session surface indicators, so auth may live in custom code, in a separate service, or be missing."}, "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-ccc7b895ec8240bc", "name": "Very large file: supabase/functions/leaderboard-api/index.ts (1687 lines)", "shortDescription": {"text": "Very large file: supabase/functions/leaderboard-api/index.ts (1687 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-f6465a4d277993b0", "name": "Very large file: supabase/functions/admin-api/index.ts (4665 lines)", "shortDescription": {"text": "Very large file: supabase/functions/admin-api/index.ts (4665 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-c79117be5a07b068", "name": "Very large file: src/components/admin/DataSourcesPanel.tsx (1217 lines)", "shortDescription": {"text": "Very large file: src/components/admin/DataSourcesPanel.tsx (1217 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": "0 test file(s) for 115 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 106 placeholder/mock markers across 28 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-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-c4904b1f98d24f27", "name": "Commented-code block (5 lines) in supabase/functions/leaderboard-api/index.ts:213", "shortDescription": {"text": "Commented-code block (5 lines) in supabase/functions/leaderboard-api/index.ts:213"}, "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-4d6191464ec840e8", "name": "Commented-code block (5 lines) in supabase/functions/sql-import-cron/index.ts:823", "shortDescription": {"text": "Commented-code block (5 lines) in supabase/functions/sql-import-cron/index.ts:823"}, "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-f9496ec0d920e74b", "name": "`fetch()` without try/.catch or AbortSignal \u2014 supabase/functions/enrollhere-poll/index.ts:74", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 supabase/functions/enrollhere-poll/index.ts:74"}, "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-cbfd95ac57a130bb", "name": "`fetch()` without try/.catch or AbortSignal \u2014 supabase/functions/poll-data-sources/index.ts:50", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 supabase/functions/poll-data-sources/index.ts:50"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-364f58a250f9c1da", "name": "Legacy-named symbol `ssiOld` in supabase/functions/admin-api/index.ts:4239", "shortDescription": {"text": "Legacy-named symbol `ssiOld` in supabase/functions/admin-api/index.ts:4239"}, "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-a39959d70b1e945f", "name": "`fetch()` without try/.catch or AbortSignal \u2014 supabase/functions/admin-api/index.ts:1880", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 supabase/functions/admin-api/index.ts:1880"}, "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-ba3a8dfe8ef45560", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/lib/api.ts:554", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/lib/api.ts:554"}, "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-eb32324540e537d4", "name": "Frontend route `/admin/dashboard/:agencySlug` has no Link/navigate to it \u2014 src/App.tsx", "shortDescription": {"text": "Frontend route `/admin/dashboard/:agencySlug` 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/22589"}, "properties": {"repository": "wcoatney-fym/hi-sales-tracker", "repoUrl": "https://github.com/wcoatney-fym/hi-sales-tracker", "branch": "main"}, "results": [{"ruleId": "scanner-bfbc0b01d003ef3b", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 supabase/functions/admin-api/index.ts:4100"}, "properties": {"repobilityId": "90d77906075d0fce", "scanner": "scanner-primary", "fingerprint": "bfbc0b01d003ef3b", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-ff28b5266c6a26d7", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/dashboard/PoliciesTable.tsx:632"}, "properties": {"repobilityId": "05a6356ebb72fd63", "scanner": "scanner-primary", "fingerprint": "ff28b5266c6a26d7", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-de1cb7155c2a8171", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/dashboard/AgentLeaderboard.tsx:259"}, "properties": {"repobilityId": "1ff5ecb6ed9cc73b", "scanner": "scanner-primary", "fingerprint": "de1cb7155c2a8171", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-44246e63768891f2", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/agent/AgentBookTab.tsx:302"}, "properties": {"repobilityId": "3e5f35f464d3142d", "scanner": "scanner-primary", "fingerprint": "44246e63768891f2", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-de7d8d412ce6a578", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/leaderboard/IncentivesPanel.tsx:106"}, "properties": {"repobilityId": "b7c012428306fef8", "scanner": "scanner-primary", "fingerprint": "de7d8d412ce6a578", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-1672f05457050fc9", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/leaderboard/ActiveBattles.tsx:26"}, "properties": {"repobilityId": "072677531c236ded", "scanner": "scanner-primary", "fingerprint": "1672f05457050fc9", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-9c688c27f29b5f2d", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/leaderboard/PlayerHUD.tsx:144"}, "properties": {"repobilityId": "b24d8939bc398744", "scanner": "scanner-primary", "fingerprint": "9c688c27f29b5f2d", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-780d91569ad6c6d8", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/leaderboard/LeaderboardTable.tsx:173"}, "properties": {"repobilityId": "9c1e754a2022bcb7", "scanner": "scanner-primary", "fingerprint": "780d91569ad6c6d8", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-605a3d8735917eb3", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/production/BreakdownTable.tsx:78"}, "properties": {"repobilityId": "63351a4e2e9a83b3", "scanner": "scanner-primary", "fingerprint": "605a3d8735917eb3", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-2a3a8013203602c3", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/production/ProductionPieChart.tsx:140"}, "properties": {"repobilityId": "f49cd339921d02e4", "scanner": "scanner-primary", "fingerprint": "2a3a8013203602c3", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-d988ef95c1515e06", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/production/AgentProductionPanel.tsx:182"}, "properties": {"repobilityId": "2de48a8b45a7abdb", "scanner": "scanner-primary", "fingerprint": "d988ef95c1515e06", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-43751bfdd8e7471f", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/admin/RosterHistory.tsx:140"}, "properties": {"repobilityId": "fab13945ffcd381d", "scanner": "scanner-primary", "fingerprint": "43751bfdd8e7471f", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-9bab6a8a5f5bf0a4", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/admin/IntakeSubmissionEditDrawer.tsx:224"}, "properties": {"repobilityId": "9ef81b2a445cc2d0", "scanner": "scanner-primary", "fingerprint": "9bab6a8a5f5bf0a4", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-ed46676dd2046898", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/admin/ColumnMapper.tsx:240"}, "properties": {"repobilityId": "f20c802b84076473", "scanner": "scanner-primary", "fingerprint": "ed46676dd2046898", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-b97f2cad3e59a518", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/admin/AuditPanel.tsx:335"}, "properties": {"repobilityId": "a4f0477dc85b1900", "scanner": "scanner-primary", "fingerprint": "b97f2cad3e59a518", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-f1b70b172cd6f719", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/admin/SourceRecordsTable.tsx:345"}, "properties": {"repobilityId": "1a01eca665ecc33d", "scanner": "scanner-primary", "fingerprint": "f1b70b172cd6f719", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-f4b20a2e1ee19ff8", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/admin/DataSourcesPanel.tsx:1166"}, "properties": {"repobilityId": "ab0ec6effdedc54e", "scanner": "scanner-primary", "fingerprint": "f4b20a2e1ee19ff8", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-7684691fc8ad6a7d", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/admin/NameFixPreviewModal.tsx:167"}, "properties": {"repobilityId": "94ee2f03e0a2ada2", "scanner": "scanner-primary", "fingerprint": "7684691fc8ad6a7d", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-1f0af33bd75db506", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/admin/DuplicatePoliciesPanel.tsx:225"}, "properties": {"repobilityId": "97181040b295782a", "scanner": "scanner-primary", "fingerprint": "1f0af33bd75db506", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-4019c3063c00626b", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/admin/SqlImportFlow.tsx:369"}, "properties": {"repobilityId": "48691fce29d5d82d", "scanner": "scanner-primary", "fingerprint": "4019c3063c00626b", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-2a999a1b6936966d", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in supabase/functions/agent-webhook/index.ts:4"}, "properties": {"repobilityId": "0ebb81fb21f18481", "scanner": "scanner-primary", "fingerprint": "2a999a1b6936966d", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "supabase/functions/agent-webhook/index.ts"}, "region": {"startLine": 4}}}]}, {"ruleId": "scanner-9255c8478c265e24", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in supabase/functions/leaderboard-api/index.ts:5"}, "properties": {"repobilityId": "f77c933f6d5866e1", "scanner": "scanner-primary", "fingerprint": "9255c8478c265e24", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "supabase/functions/leaderboard-api/index.ts"}, "region": {"startLine": 5}}}]}, {"ruleId": "scanner-08d14f81c6b6c4bc", "level": "error", "message": {"text": "Possible secret in supabase/functions/sql-import-cron/index.ts"}, "properties": {"repobilityId": "71a93f24782f249f", "scanner": "scanner-primary", "fingerprint": "08d14f81c6b6c4bc", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "supabase/functions/sql-import-cron/index.ts"}, "region": {"startLine": 40}}}]}, {"ruleId": "scanner-63d5a352e4a6a25a", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in supabase/functions/sql-import-cron/index.ts:5"}, "properties": {"repobilityId": "851f2a9e60bcbfbd", "scanner": "scanner-primary", "fingerprint": "63d5a352e4a6a25a", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "supabase/functions/sql-import-cron/index.ts"}, "region": {"startLine": 5}}}]}, {"ruleId": "scanner-793fc58ad15cbcf0", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in supabase/functions/public-api/index.ts:4"}, "properties": {"repobilityId": "6eb582f0a6762d60", "scanner": "scanner-primary", "fingerprint": "793fc58ad15cbcf0", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "supabase/functions/public-api/index.ts"}, "region": {"startLine": 4}}}]}, {"ruleId": "scanner-3d226aa6547f89f8", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in supabase/functions/enrollhere-poll/index.ts:5"}, "properties": {"repobilityId": "615154248355a7e8", "scanner": "scanner-primary", "fingerprint": "3d226aa6547f89f8", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "supabase/functions/enrollhere-poll/index.ts"}, "region": {"startLine": 5}}}]}, {"ruleId": "scanner-ec8172de3a858317", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in supabase/functions/poll-data-sources/index.ts:5"}, "properties": {"repobilityId": "9a8786d9e8d7309e", "scanner": "scanner-primary", "fingerprint": "ec8172de3a858317", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "supabase/functions/poll-data-sources/index.ts"}, "region": {"startLine": 5}}}]}, {"ruleId": "scanner-10e5b348b50ea4e5", "level": "error", "message": {"text": "Possible secret in supabase/functions/admin-api/index.ts"}, "properties": {"repobilityId": "184a6961494e02bc", "scanner": "scanner-primary", "fingerprint": "10e5b348b50ea4e5", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "supabase/functions/admin-api/index.ts"}, "region": {"startLine": 37}}}]}, {"ruleId": "scanner-1e5bdcf421897be7", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in supabase/functions/admin-api/index.ts:4"}, "properties": {"repobilityId": "cc00ee5fa3175e5e", "scanner": "scanner-primary", "fingerprint": "1e5bdcf421897be7", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "supabase/functions/admin-api/index.ts"}, "region": {"startLine": 4}}}]}, {"ruleId": "scanner-db6072acdd343517", "level": "error", "message": {"text": "Possible secret in src/components/admin/AgencyCredentialsPanel.tsx"}, "properties": {"repobilityId": "0d3aa3994ffe1a64", "scanner": "scanner-primary", "fingerprint": "db6072acdd343517", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/components/admin/AgencyCredentialsPanel.tsx"}, "region": {"startLine": 251}}}]}, {"ruleId": "scanner-54806a890bb9c275", "level": "error", "message": {"text": "Possible secret in src/pages/AdminLogin.tsx"}, "properties": {"repobilityId": "c7af217c147aee32", "scanner": "scanner-primary", "fingerprint": "54806a890bb9c275", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/pages/AdminLogin.tsx"}, "region": {"startLine": 37}}}]}, {"ruleId": "scanner-6372cebde0220094", "level": "warning", "message": {"text": "No auth library detected"}, "properties": {"repobilityId": "a5b6035a5bbf8054", "scanner": "scanner-primary", "fingerprint": "6372cebde0220094", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["coverage", "auth"]}}, {"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-ccc7b895ec8240bc", "level": "note", "message": {"text": "Very large file: supabase/functions/leaderboard-api/index.ts (1687 lines)"}, "properties": {"repobilityId": "eecc26fa6a8678ca", "scanner": "scanner-primary", "fingerprint": "ccc7b895ec8240bc", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-f6465a4d277993b0", "level": "note", "message": {"text": "Very large file: supabase/functions/admin-api/index.ts (4665 lines)"}, "properties": {"repobilityId": "d8c0873cb4a2c822", "scanner": "scanner-primary", "fingerprint": "f6465a4d277993b0", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-c79117be5a07b068", "level": "note", "message": {"text": "Very large file: src/components/admin/DataSourcesPanel.tsx (1217 lines)"}, "properties": {"repobilityId": "f75079e308105247", "scanner": "scanner-primary", "fingerprint": "c79117be5a07b068", "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": "3ecf86971e2e64d9", "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": "52f25f84d2ac5ad1", "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": "f76ea605bcc5dc1f", "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": "0580a9261d3ebb7f", "scanner": "scanner-primary", "fingerprint": "b9088664ace7f748", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["production-readiness", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-ea8f3013f588db25", "level": "note", "message": {"text": "Shallow git history limits provenance confidence"}, "properties": {"repobilityId": "cee669a7651c4e9a", "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": "03927a887be192a9", "scanner": "scanner-primary", "fingerprint": "8424db9c75e04ba4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["provenance", "git-history", "generated-repo-pattern"]}}, {"ruleId": "scanner-c4904b1f98d24f27", "level": "none", "message": {"text": "Commented-code block (5 lines) in supabase/functions/leaderboard-api/index.ts:213"}, "properties": {"repobilityId": "986c882bd0cc987b", "scanner": "scanner-primary", "fingerprint": "c4904b1f98d24f27", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4d6191464ec840e8", "level": "none", "message": {"text": "Commented-code block (5 lines) in supabase/functions/sql-import-cron/index.ts:823"}, "properties": {"repobilityId": "159e7bf5d40a0fe9", "scanner": "scanner-primary", "fingerprint": "4d6191464ec840e8", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f9496ec0d920e74b", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 supabase/functions/enrollhere-poll/index.ts:74"}, "properties": {"repobilityId": "5d45bcf841f5b6e1", "scanner": "scanner-primary", "fingerprint": "f9496ec0d920e74b", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-cbfd95ac57a130bb", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 supabase/functions/poll-data-sources/index.ts:50"}, "properties": {"repobilityId": "68a828e634931d4d", "scanner": "scanner-primary", "fingerprint": "cbfd95ac57a130bb", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-364f58a250f9c1da", "level": "note", "message": {"text": "Legacy-named symbol `ssiOld` in supabase/functions/admin-api/index.ts:4239"}, "properties": {"repobilityId": "0337bf567e1ac321", "scanner": "scanner-primary", "fingerprint": "364f58a250f9c1da", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-a39959d70b1e945f", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 supabase/functions/admin-api/index.ts:1880"}, "properties": {"repobilityId": "015e8dde5f1cb181", "scanner": "scanner-primary", "fingerprint": "a39959d70b1e945f", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-ba3a8dfe8ef45560", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/lib/api.ts:554"}, "properties": {"repobilityId": "badf7a1b8462a498", "scanner": "scanner-primary", "fingerprint": "ba3a8dfe8ef45560", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-eb32324540e537d4", "level": "warning", "message": {"text": "Frontend route `/admin/dashboard/:agencySlug` has no Link/navigate to it \u2014 src/App.tsx"}, "properties": {"repobilityId": "54cb80a07db15a47", "scanner": "scanner-primary", "fingerprint": "eb32324540e537d4", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}]}]}