{"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-1688813a91ce7c72", "name": "Stray `console.log` in TS/JS \u2014 apps/api/scripts/test-invoice-pdf.ts:63", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 apps/api/scripts/test-invoice-pdf.ts:63"}, "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-6b2d5e9bd64257a9", "name": "Stray `console.log` in TS/JS \u2014 apps/api/scripts/generate-salary-invoice-samples.ts:165", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 apps/api/scripts/generate-salary-invoice-samples.ts:165"}, "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-7a777fff53b21b06", "name": "Stray `console.log` in TS/JS \u2014 apps/api/src/database/seed.ts:539", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 apps/api/src/database/seed.ts:539"}, "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-183475f302264166", "name": "`truncate` class without `title=` for hover reveal \u2014 apps/web/app/components/users/UserRow.tsx:107", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/web/app/components/users/UserRow.tsx:107"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-7f0ce2d7a6b693bc", "name": "`truncate` class without `title=` for hover reveal \u2014 apps/web/app/components/archive/CascadeUnarchiveModal.tsx:64", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/web/app/components/archive/CascadeUnarchiveModal.tsx:64"}, "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-875bcb1281a682f9", "name": "`truncate` class without `title=` for hover reveal \u2014 apps/web/app/components/projects/ProjectRow.tsx:95", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/web/app/components/projects/ProjectRow.tsx:95"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-8f9a6e794d0eb94e", "name": "`truncate` class without `title=` for hover reveal \u2014 apps/web/app/components/projects/ProjectCredentialsSection.tsx:346", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/web/app/components/projects/ProjectCredentialsSection.tsx:346"}, "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-3e8c690b21f41914", "name": "`truncate` class without `title=` for hover reveal \u2014 apps/web/app/components/ui/tech-autocomplete-input.tsx:218", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/web/app/components/ui/tech-autocomplete-input.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-ea0fc266cea37dea", "name": "`truncate` class without `title=` for hover reveal \u2014 apps/web/app/components/ui/date-picker.tsx:41", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/web/app/components/ui/date-picker.tsx:41"}, "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-ee7ce08573ca0468", "name": "`truncate` class without `title=` for hover reveal \u2014 apps/web/app/components/onboarding/SignContractStep.tsx:246", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/web/app/components/onboarding/SignContractStep.tsx:246"}, "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-19c3530e2e9dd39a", "name": "`truncate` class without `title=` for hover reveal \u2014 apps/web/app/components/user-profile/UserProfileHeader.tsx:73", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/web/app/components/user-profile/UserProfileHeader.tsx:73"}, "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-6ceb23115be67ec5", "name": "`truncate` class without `title=` for hover reveal \u2014 apps/web/app/components/user-profile/ProfileCredentialsSection.tsx:", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/web/app/components/user-profile/ProfileCredentialsSection.tsx:126"}, "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-597b341c43e520ca", "name": "`truncate` class without `title=` for hover reveal \u2014 apps/web/app/components/user-profile/tabs/FinanceTab.tsx:236", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/web/app/components/user-profile/tabs/FinanceTab.tsx:236"}, "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-d4778cafc1b6a410", "name": "`truncate` class without `title=` for hover reveal \u2014 apps/web/app/components/user-profile/tabs/OverviewTab.tsx:111", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/web/app/components/user-profile/tabs/OverviewTab.tsx:111"}, "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-599fa90a479982be", "name": "`truncate` class without `title=` for hover reveal \u2014 apps/web/app/components/user-profile/tabs/TeamTab.tsx:72", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/web/app/components/user-profile/tabs/TeamTab.tsx:72"}, "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-f327c41c2d97e3a0", "name": "`truncate` class without `title=` for hover reveal \u2014 apps/web/app/components/user-profile/tabs/ProjectsTab.tsx:114", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/web/app/components/user-profile/tabs/ProjectsTab.tsx:114"}, "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-5e5d802702f2a301", "name": "`truncate` class without `title=` for hover reveal \u2014 apps/web/app/routes/crm/stats.tsx:253", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/web/app/routes/crm/stats.tsx:253"}, "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-4ee3443ea59a9c02", "name": "`truncate` class without `title=` for hover reveal \u2014 apps/web/app/routes/crm/project.tsx:298", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/web/app/routes/crm/project.tsx:298"}, "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-8e5c4f491fce9555", "name": "`truncate` class without `title=` for hover reveal \u2014 apps/web/app/routes/crm/routing/components/DropActionRequiredBlock.", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/web/app/routes/crm/routing/components/DropActionRequiredBlock.tsx:87"}, "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-c2ff85a6144a42fd", "name": "`truncate` class without `title=` for hover reveal \u2014 apps/web/app/routes/crm/routing/components/DropProjectsList.tsx:59", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/web/app/routes/crm/routing/components/DropProjectsList.tsx:59"}, "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-f5b1ff02f0a13f8c", "name": "`truncate` class without `title=` for hover reveal \u2014 apps/web/app/routes/crm/projects/$projectId.tsx:740", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/web/app/routes/crm/projects/$projectId.tsx:740"}, "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-0b76f66ee55a11ba", "name": "`truncate` class without `title=` for hover reveal \u2014 apps/web/app/routes/crm/team/$teamId.tsx:626", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/web/app/routes/crm/team/$teamId.tsx:626"}, "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-d2a0cef5de56ce99", "name": "`truncate` class without `title=` for hover reveal \u2014 apps/web/app/routes/crm/team/index.tsx:743", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/web/app/routes/crm/team/index.tsx:743"}, "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-32a40442403f84a8", "name": "`truncate` class without `title=` for hover reveal \u2014 apps/web/app/routes/crm/finance/components/MyProjectShares.tsx:94", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/web/app/routes/crm/finance/components/MyProjectShares.tsx:94"}, "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-dcf271b05e446fa7", "name": "`truncate` class without `title=` for hover reveal \u2014 apps/web/app/routes/crm/finance/components/PendingSettlementSeniorC", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/web/app/routes/crm/finance/components/PendingSettlementSeniorCard.tsx:67"}, "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-ebd09b8dc6baab7c", "name": "`truncate` class without `title=` for hover reveal \u2014 apps/web/app/routes/crm/finance/components/TransactionRow.tsx:365", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/web/app/routes/crm/finance/components/TransactionRow.tsx:365"}, "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-0d88814c1cca15b2", "name": "`truncate` class without `title=` for hover reveal \u2014 apps/web/app/routes/crm/finance/components/ReceiptInput.tsx:248", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/web/app/routes/crm/finance/components/ReceiptInput.tsx:248"}, "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-1d031fb3f6b7224c", "name": "`truncate` class without `title=` for hover reveal \u2014 apps/web/app/routes/crm/finance/components/DropFinancePage.tsx:399", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/web/app/routes/crm/finance/components/DropFinancePage.tsx:399"}, "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-f239920ecb410264", "name": "`truncate` class without `title=` for hover reveal \u2014 apps/web/app/routes/crm/finance/components/PendingSettlementCompany", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/web/app/routes/crm/finance/components/PendingSettlementCompanyCard.tsx:99"}, "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-a688b5b53107472d", "name": "`truncate` class without `title=` for hover reveal \u2014 apps/web/app/routes/crm/finance/components/dialogs/PayoutDialog.tsx", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/web/app/routes/crm/finance/components/dialogs/PayoutDialog.tsx:184"}, "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-79f9ad54cec2413c", "name": "`truncate` class without `title=` for hover reveal \u2014 apps/web/app/routes/crm/finance/components/dialogs/PayoutDetailDial", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/web/app/routes/crm/finance/components/dialogs/PayoutDetailDialog.tsx:278"}, "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-616d7a948c9bf98a", "name": "`truncate` class without `title=` for hover reveal \u2014 apps/web/app/routes/crm/payments/initiate.$incomeId.tsx:125", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/web/app/routes/crm/payments/initiate.$incomeId.tsx:125"}, "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-cdfc1fe21a2d64c4", "name": "`truncate` class without `title=` for hover reveal \u2014 apps/web/app/routes/crm/interviews/components/KanbanColumn.tsx:40", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/web/app/routes/crm/interviews/components/KanbanColumn.tsx:40"}, "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-19d22007fd6907b5", "name": "Privileged port 11 in use", "shortDescription": {"text": "Privileged port 11 in use"}, "fullDescription": {"text": "Port 11 is privileged (<1024). Make sure the service runs with the right caps or front it with a non-privileged port via a load balancer."}, "properties": {"scanner": "scanner-primary", "layer": "network", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-aa5acaa49eb8315b", "name": "Containers defined but no K8s/orchestration manifest found", "shortDescription": {"text": "Containers defined but no K8s/orchestration manifest found"}, "fullDescription": {"text": "Repo has Dockerfiles/compose but no Kubernetes/Nomad manifests. If the target deployment is K8s, the manifests may live in a separate ops repo."}, "properties": {"scanner": "scanner-primary", "layer": "hardware", "severity": "low", "confidence": 1.0}}, {"id": "scanner-112a07063b5c615f", "name": "Possible secret in apps/api/src/credentials/user-credentials.rbac.integration.spec.ts", "shortDescription": {"text": "Possible secret in apps/api/src/credentials/user-credentials.rbac.integration.spec.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-99290f0d7578680a", "name": "Possible secret in apps/api/src/credentials/credentials.rbac.integration.spec.ts", "shortDescription": {"text": "Possible secret in apps/api/src/credentials/credentials.rbac.integration.spec.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-2e541d7f65efde23", "name": "Insecure pattern 'node_child_process' in hooks/README.md:239", "shortDescription": {"text": "Insecure pattern 'node_child_process' in hooks/README.md:239"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-ea906bdaacbab3e5", "name": "Insecure pattern 'node_child_process' in hooks/hooks.json:267", "shortDescription": {"text": "Insecure pattern 'node_child_process' in hooks/hooks.json:267"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-f367ef60175e8919", "name": "Insecure pattern 'eval_used' in skills/ecc/security-bounty-hunter/SKILL.md:41", "shortDescription": {"text": "Insecure pattern 'eval_used' in skills/ecc/security-bounty-hunter/SKILL.md:41"}, "fullDescription": {"text": "Found a known-risky pattern (eval_used). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-058a3c6683905e9b", "name": "Insecure pattern 'exec_used' in skills/ecc/security-bounty-hunter/SKILL.md:41", "shortDescription": {"text": "Insecure pattern 'exec_used' in skills/ecc/security-bounty-hunter/SKILL.md:41"}, "fullDescription": {"text": "Found a known-risky pattern (exec_used). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-d23043fcc6cc7701", "name": "Insecure pattern 'subprocess_shell_true' in skills/ecc/security-bounty-hunter/SKILL.md:42", "shortDescription": {"text": "Insecure pattern 'subprocess_shell_true' in skills/ecc/security-bounty-hunter/SKILL.md:42"}, "fullDescription": {"text": "Found a known-risky pattern (subprocess_shell_true). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-f7e1e7a709020798", "name": "Possible secret in skills/ecc/security-review/SKILL.md", "shortDescription": {"text": "Possible secret in skills/ecc/security-review/SKILL.md"}, "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-98ffed73baf49628", "name": "Insecure pattern 'dangerous_innerhtml' in skills/ecc/security-review/SKILL.md:210", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in skills/ecc/security-review/SKILL.md:210"}, "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-c7743e3d89e36e6f", "name": "Insecure pattern 'local_storage_auth_token' in skills/ecc/security-review/SKILL.md:148", "shortDescription": {"text": "Insecure pattern 'local_storage_auth_token' in skills/ecc/security-review/SKILL.md:148"}, "fullDescription": {"text": "Found a known-risky pattern (local_storage_auth_token). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-df283cb0cfc2b895", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/checkout@v4 can move without a code change in this repo. Pin third-party actions to a reviewed 40-character commit SHA."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "low", "confidence": 1.0}}, {"id": "scanner-2ce27a159e3c0eb0", "name": "GitHub Actions workflow grants broad write permissions", "shortDescription": {"text": "GitHub Actions workflow grants broad write permissions"}, "fullDescription": {"text": "CI tokens with write permissions increase blast radius when an action, dependency, or PR workflow is compromised. Prefer job-level least-privilege permissions."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-2aedd257a2f0871c", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "crazy-max/ghaction-github-labeler@v5 can move without a code change in this repo. Pin third-party actions to a reviewed 40-character commit SHA."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-6c6a4105f82ca769", "name": "GitHub Actions workflow grants broad write permissions", "shortDescription": {"text": "GitHub Actions workflow grants broad write permissions"}, "fullDescription": {"text": "CI tokens with write permissions increase blast radius when an action, dependency, or PR workflow is compromised. Prefer job-level least-privilege permissions."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-27924aa79fa4a517", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "dorny/paths-filter@v3 can move without a code change in this repo. Pin third-party actions to a reviewed 40-character commit SHA."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-64192a3c67110d01", "name": "GitHub Actions workflow grants broad write permissions", "shortDescription": {"text": "GitHub Actions workflow grants broad write permissions"}, "fullDescription": {"text": "CI tokens with write permissions increase blast radius when an action, dependency, or PR workflow is compromised. Prefer job-level least-privilege permissions."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-65c9bd56493a81d3", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/cache@v4 can move without a code change in this repo. Pin third-party actions to a reviewed 40-character commit SHA."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "low", "confidence": 1.0}}, {"id": "scanner-bcbd1290ffb3759c", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/github-script@v7 can move without a code change in this repo. Pin third-party actions to a reviewed 40-character commit SHA."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "low", "confidence": 1.0}}, {"id": "scanner-49a9f38e19bb7e89", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "anthropics/claude-code-action@beta can move without a code change in this repo. Pin third-party actions to a reviewed 40-character commit SHA."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-2950e9411cb04a66", "name": "GitHub Actions workflow grants broad write permissions", "shortDescription": {"text": "GitHub Actions workflow grants broad write permissions"}, "fullDescription": {"text": "CI tokens with write permissions increase blast radius when an action, dependency, or PR workflow is compromised. Prefer job-level least-privilege permissions."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-b0d1c7c92d4f3969", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "anthropics/claude-code-action@beta can move without a code change in this repo. Pin third-party actions to a reviewed 40-character commit SHA."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-fe3fa580edfa4445", "name": "GitHub Actions workflow grants broad write permissions", "shortDescription": {"text": "GitHub Actions workflow grants broad write permissions"}, "fullDescription": {"text": "CI tokens with write permissions increase blast radius when an action, dependency, or PR workflow is compromised. Prefer job-level least-privilege permissions."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-29dc4d975b24984d", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "anthropics/claude-code-action@beta can move without a code change in this repo. Pin third-party actions to a reviewed 40-character commit SHA."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-2f1092c8751eb412", "name": "GitHub Actions workflow grants broad write permissions", "shortDescription": {"text": "GitHub Actions workflow grants broad write permissions"}, "fullDescription": {"text": "CI tokens with write permissions increase blast radius when an action, dependency, or PR workflow is compromised. Prefer job-level least-privilege permissions."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-8227020f851f268c", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "anthropics/claude-code-action@beta can move without a code change in this repo. Pin third-party actions to a reviewed 40-character commit SHA."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-49d7f44687844f32", "name": "GitHub Actions workflow grants broad write permissions", "shortDescription": {"text": "GitHub Actions workflow grants broad write permissions"}, "fullDescription": {"text": "CI tokens with write permissions increase blast radius when an action, dependency, or PR workflow is compromised. Prefer job-level least-privilege permissions."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-cb639d9a10a47b23", "name": "package.json defines install-time lifecycle scripts", "shortDescription": {"text": "package.json defines install-time lifecycle scripts"}, "fullDescription": {"text": "preinstall/install/postinstall/prepare scripts execute during dependency installation. Review them carefully for network calls, obfuscation, shell execution, or credential access."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "low", "confidence": 1.0}}, {"id": "scanner-d67e5b8d21784b07", "name": "Very large file: apps/api/src/users/users.service.ts (1818 lines)", "shortDescription": {"text": "Very large file: apps/api/src/users/users.service.ts (1818 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-f42fa02c35fd6096", "name": "Very large file: apps/api/src/users/users.service.spec.ts (1519 lines)", "shortDescription": {"text": "Very large file: apps/api/src/users/users.service.spec.ts (1519 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-7a6a6b13290ae8e3", "name": "Very large file: apps/api/src/projects/projects.service.ts (1306 lines)", "shortDescription": {"text": "Very large file: apps/api/src/projects/projects.service.ts (1306 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-782c091cd8eb4b87", "name": "Very large file: apps/api/src/finance/transactions.service.ts (2730 lines)", "shortDescription": {"text": "Very large file: apps/api/src/finance/transactions.service.ts (2730 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-181286a1ec8a9f04", "name": "Very large file: apps/api/src/database/schema.ts (1297 lines)", "shortDescription": {"text": "Very large file: apps/api/src/database/schema.ts (1297 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-7412fa5d7c0f3a12", "name": "Very large file: apps/api/src/database/seed.ts (1979 lines)", "shortDescription": {"text": "Very large file: apps/api/src/database/seed.ts (1979 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-15cf3fdf1f4542c0", "name": "Very large file: apps/api/src/documents/documents.service.spec.ts (1527 lines)", "shortDescription": {"text": "Very large file: apps/api/src/documents/documents.service.spec.ts (1527 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-7cfa3be28b0f7bd3", "name": "Very large file: apps/web/app/components/users/UserDialog.tsx (2300 lines)", "shortDescription": {"text": "Very large file: apps/web/app/components/users/UserDialog.tsx (2300 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-bf627af90e80c6df", "name": "Very large file: apps/web/app/routes/crm/projects/$projectId.tsx (1809 lines)", "shortDescription": {"text": "Very large file: apps/web/app/routes/crm/projects/$projectId.tsx (1809 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-f481d428779676f3", "name": "Very large file: apps/web/app/routes/crm/team/$teamId.tsx (1189 lines)", "shortDescription": {"text": "Very large file: apps/web/app/routes/crm/team/$teamId.tsx (1189 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-8c16b9448167d6e5", "name": "Very large file: apps/e2e/tests/fixtures.ts (2202 lines)", "shortDescription": {"text": "Very large file: apps/e2e/tests/fixtures.ts (2202 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-64d3b35d8311c7dc", "name": "Very large file: apps/e2e/tests/team.spec.ts (1325 lines)", "shortDescription": {"text": "Very large file: apps/e2e/tests/team.spec.ts (1325 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-c49f951da94601ee", "name": "Very large file: skills/ecc/continuous-learning-v2/scripts/instinct-cli.py (1826 lines)", "shortDescription": {"text": "Very large file: skills/ecc/continuous-learning-v2/scripts/instinct-cli.py (1826 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-b06b8d86f24c77f9", "name": "Node manifest has dependencies but no lockfile: apps/api/package.json", "shortDescription": {"text": "Node manifest has dependencies but no lockfile: apps/api/package.json"}, "fullDescription": {"text": "`package.json` declares dependencies, but no same-directory npm/pnpm/yarn/bun lockfile was found. Generated projects without lockfiles are less reproducible and harder to secure-scan precisely."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-4a9eb7dc7c6e3880", "name": "Node manifest has dependencies but no lockfile: apps/web/package.json", "shortDescription": {"text": "Node manifest has dependencies but no lockfile: apps/web/package.json"}, "fullDescription": {"text": "`package.json` declares dependencies, but no same-directory npm/pnpm/yarn/bun lockfile was found. Generated projects without lockfiles are less reproducible and harder to secure-scan precisely."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-13c399c461b261dc", "name": "Node manifest has dependencies but no lockfile: apps/e2e/package.json", "shortDescription": {"text": "Node manifest has dependencies but no lockfile: apps/e2e/package.json"}, "fullDescription": {"text": "`package.json` declares dependencies, but no same-directory npm/pnpm/yarn/bun lockfile was found. Generated projects without lockfiles are less reproducible and harder to secure-scan precisely."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-2699d5f16ae11282", "name": "Node manifest has dependencies but no lockfile: packages/shared/package.json", "shortDescription": {"text": "Node manifest has dependencies but no lockfile: packages/shared/package.json"}, "fullDescription": {"text": "`package.json` declares dependencies, but no same-directory npm/pnpm/yarn/bun lockfile was found. Generated projects without lockfiles are less reproducible and harder to secure-scan precisely."}, "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 233 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 226 placeholder/mock markers across 78 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-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 lockfile. 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-b6b3541c7ac7d09c", "name": "Agent instruction/config may expose a secret: .claude/briefs/pm-brief-invoice-signing.md", "shortDescription": {"text": "Agent instruction/config may expose a secret: .claude/briefs/pm-brief-invoice-signing.md"}, "fullDescription": {"text": "Agent-facing files are routinely pasted into LLM/tool contexts. Move literal tokens, keys, and passwords into a secret manager or document them as placeholders only."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-bd664417d2ee1ea0", "name": "Agent instruction/config may expose a secret: .claude/briefs/2026-05-21-users-archive-refactor-design.md", "shortDescription": {"text": "Agent instruction/config may expose a secret: .claude/briefs/2026-05-21-users-archive-refactor-design.md"}, "fullDescription": {"text": "Agent-facing files are routinely pasted into LLM/tool contexts. Move literal tokens, keys, and passwords into a secret manager or document them as placeholders only."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-39bb103dd83e7d41", "name": "Agent instruction/config may expose a secret: .claude/briefs/2026-05-20-profile-pages-plan.md", "shortDescription": {"text": "Agent instruction/config may expose a secret: .claude/briefs/2026-05-20-profile-pages-plan.md"}, "fullDescription": {"text": "Agent-facing files are routinely pasted into LLM/tool contexts. Move literal tokens, keys, and passwords into a secret manager or document them as placeholders only."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-2b2fd92bf6101395", "name": "Agent instruction/config may expose a secret: .claude/state/pm-state.json", "shortDescription": {"text": "Agent instruction/config may expose a secret: .claude/state/pm-state.json"}, "fullDescription": {"text": "Agent-facing files are routinely pasted into LLM/tool contexts. Move literal tokens, keys, and passwords into a secret manager or document them as placeholders only."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-05bddb4289b4e2b5", "name": "Agent authority lacks a verifier contract: .claude/state/archive/2026-05-18-active-task.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: .claude/state/archive/2026-05-18-active-task.md"}, "fullDescription": {"text": "This agent instruction grants code or shell authority but does not state the verification gate that decides promotion. The recurring safe pattern is: LLM proposes; deterministic tests/build/security checks verify; only verified code promotes."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-f395e33afedc6327", "name": "Agent authority lacks a verifier contract: .claude/state/archive/2026-05-18-active-devops-task.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: .claude/state/archive/2026-05-18-active-devops-task.md"}, "fullDescription": {"text": "This agent instruction grants code or shell authority but does not state the verification gate that decides promotion. The recurring safe pattern is: LLM proposes; deterministic tests/build/security checks verify; only verified code promotes."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-b596a826fca41511", "name": "Agent authority lacks a verifier contract: .claude/rules/common/zone-of-write.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: .claude/rules/common/zone-of-write.md"}, "fullDescription": {"text": "This agent instruction grants code or shell authority but does not state the verification gate that decides promotion. The recurring safe pattern is: LLM proposes; deterministic tests/build/security checks verify; only verified code promotes."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-d1738bb9fa873a5a", "name": "Agent authority lacks a verifier contract: .claude/rules/ecc/common/patterns.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: .claude/rules/ecc/common/patterns.md"}, "fullDescription": {"text": "This agent instruction grants code or shell authority but does not state the verification gate that decides promotion. The recurring safe pattern is: LLM proposes; deterministic tests/build/security checks verify; only verified code promotes."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-6c3634b53220d072", "name": "Agent instruction/config may expose a secret: .claude/rules/ecc/typescript/security.md", "shortDescription": {"text": "Agent instruction/config may expose a secret: .claude/rules/ecc/typescript/security.md"}, "fullDescription": {"text": "Agent-facing files are routinely pasted into LLM/tool contexts. Move literal tokens, keys, and passwords into a secret manager or document them as placeholders only."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-222ef98adb2cb182", "name": "Agent instruction/config may expose a secret: .claude/tasks/task-fix-junior-ut-round5.progress.md", "shortDescription": {"text": "Agent instruction/config may expose a secret: .claude/tasks/task-fix-junior-ut-round5.progress.md"}, "fullDescription": {"text": "Agent-facing files are routinely pasted into LLM/tool contexts. Move literal tokens, keys, and passwords into a secret manager or document them as placeholders only."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-92921eb4c6cd6053", "name": "Agent instruction/config may expose a secret: .claude/tasks/task-hr-rbac-teammate-access.progress.md", "shortDescription": {"text": "Agent instruction/config may expose a secret: .claude/tasks/task-hr-rbac-teammate-access.progress.md"}, "fullDescription": {"text": "Agent-facing files are routinely pasted into LLM/tool contexts. Move literal tokens, keys, and passwords into a secret manager or document them as placeholders only."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-64616daffc0574ee", "name": "Agent authority lacks a verifier contract: .claude/tasks/task-admin-as-senior.progress.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: .claude/tasks/task-admin-as-senior.progress.md"}, "fullDescription": {"text": "This agent instruction grants code or shell authority but does not state the verification gate that decides promotion. The recurring safe pattern is: LLM proposes; deterministic tests/build/security checks verify; only verified code promotes."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-79113bc1663cb901", "name": "Agent instruction/config may expose a secret: .claude/tasks/task-drop-phase3-frontend.progress.md", "shortDescription": {"text": "Agent instruction/config may expose a secret: .claude/tasks/task-drop-phase3-frontend.progress.md"}, "fullDescription": {"text": "Agent-facing files are routinely pasted into LLM/tool contexts. Move literal tokens, keys, and passwords into a secret manager or document them as placeholders only."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-9a45846171773538", "name": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-payout-auto-on-validate.md", "shortDescription": {"text": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-payout-auto-on-validate.md"}, "fullDescription": {"text": "Agent-facing files are routinely pasted into LLM/tool contexts. Move literal tokens, keys, and passwords into a secret manager or document them as placeholders only."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-4635f40d153dfc1d", "name": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-drop-phase4c-pending-settlement.md", "shortDescription": {"text": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-drop-phase4c-pending-settlement.md"}, "fullDescription": {"text": "Agent-facing files are routinely pasted into LLM/tool contexts. Move literal tokens, keys, and passwords into a secret manager or document them as placeholders only."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-76270f4a53da9b22", "name": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-junior-ux-3-cleanup.md", "shortDescription": {"text": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-junior-ux-3-cleanup.md"}, "fullDescription": {"text": "Agent-facing files are routinely pasted into LLM/tool contexts. Move literal tokens, keys, and passwords into a secret manager or document them as placeholders only."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-0a5ac07dcb6826c8", "name": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-drop-phase2-backend.progress.md", "shortDescription": {"text": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-drop-phase2-backend.progress.md"}, "fullDescription": {"text": "Agent-facing files are routinely pasted into LLM/tool contexts. Move literal tokens, keys, and passwords into a secret manager or document them as placeholders only."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-44dd2953095ebe16", "name": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-fix-pr34-user-testing-round6.md", "shortDescription": {"text": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-fix-pr34-user-testing-round6.md"}, "fullDescription": {"text": "Agent-facing files are routinely pasted into LLM/tool contexts. Move literal tokens, keys, and passwords into a secret manager or document them as placeholders only."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-17d5a6c71f7b7f46", "name": "Agent instruction/config may expose a secret: .claude/tasks/archive/2026-05-19-task-fix-teams-telegram-validation.md", "shortDescription": {"text": "Agent instruction/config may expose a secret: .claude/tasks/archive/2026-05-19-task-fix-teams-telegram-validation.md"}, "fullDescription": {"text": "Agent-facing files are routinely pasted into LLM/tool contexts. Move literal tokens, keys, and passwords into a secret manager or document them as placeholders only."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-1b82699992b36bb1", "name": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-drop-phase2-frontend.md", "shortDescription": {"text": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-drop-phase2-frontend.md"}, "fullDescription": {"text": "Agent-facing files are routinely pasted into LLM/tool contexts. Move literal tokens, keys, and passwords into a secret manager or document them as placeholders only."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-5e834fa7703fd2c0", "name": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-fix-e2e-unit-tests-after-batch2.md", "shortDescription": {"text": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-fix-e2e-unit-tests-after-batch2.md"}, "fullDescription": {"text": "Agent-facing files are routinely pasted into LLM/tool contexts. Move literal tokens, keys, and passwords into a secret manager or document them as placeholders only."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-820e978a58906eb0", "name": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-autotest-strengthen-e2e-pr56-flows.md", "shortDescription": {"text": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-autotest-strengthen-e2e-pr56-flows.md"}, "fullDescription": {"text": "Agent-facing files are routinely pasted into LLM/tool contexts. Move literal tokens, keys, and passwords into a secret manager or document them as placeholders only."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-4f9eea2885990623", "name": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-fix-pr22-ui-round2.md", "shortDescription": {"text": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-fix-pr22-ui-round2.md"}, "fullDescription": {"text": "Agent-facing files are routinely pasted into LLM/tool contexts. Move literal tokens, keys, and passwords into a secret manager or document them as placeholders only."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-e13a9ea74ef46943", "name": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-pr56-batch-fixes.md", "shortDescription": {"text": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-pr56-batch-fixes.md"}, "fullDescription": {"text": "Agent-facing files are routinely pasted into LLM/tool contexts. Move literal tokens, keys, and passwords into a secret manager or document them as placeholders only."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-f20a7dcbee71feab", "name": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-documents-ui.md", "shortDescription": {"text": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-documents-ui.md"}, "fullDescription": {"text": "Agent-facing files are routinely pasted into LLM/tool contexts. Move literal tokens, keys, and passwords into a secret manager or document them as placeholders only."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-043bf42764c37479", "name": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-junior-ux-1-backend.progress.md", "shortDescription": {"text": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-junior-ux-1-backend.progress.md"}, "fullDescription": {"text": "Agent-facing files are routinely pasted into LLM/tool contexts. Move literal tokens, keys, and passwords into a secret manager or document them as placeholders only."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-a30e565ca9fd62e1", "name": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-junior-ut-round2.progress.md", "shortDescription": {"text": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-junior-ut-round2.progress.md"}, "fullDescription": {"text": "Agent-facing files are routinely pasted into LLM/tool contexts. Move literal tokens, keys, and passwords into a secret manager or document them as placeholders only."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-13f6ec7ae7e18649", "name": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-e2e-testid-selectors.md", "shortDescription": {"text": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-e2e-testid-selectors.md"}, "fullDescription": {"text": "Agent-facing files are routinely pasted into LLM/tool contexts. Move literal tokens, keys, and passwords into a secret manager or document them as placeholders only."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-0ccfdd5d47216739", "name": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-infra-labels-yml-sync.md", "shortDescription": {"text": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-infra-labels-yml-sync.md"}, "fullDescription": {"text": "Agent-facing files are routinely pasted into LLM/tool contexts. Move literal tokens, keys, and passwords into a secret manager or document them as placeholders only."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-e25fd61597bf3f04", "name": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-fix-reviewer-findings-pr28.md", "shortDescription": {"text": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-fix-reviewer-findings-pr28.md"}, "fullDescription": {"text": "Agent-facing files are routinely pasted into LLM/tool contexts. Move literal tokens, keys, and passwords into a secret manager or document them as placeholders only."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-b8c4574fc9171bdc", "name": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-invoice-e2e.md", "shortDescription": {"text": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-invoice-e2e.md"}, "fullDescription": {"text": "Agent-facing files are routinely pasted into LLM/tool contexts. Move literal tokens, keys, and passwords into a secret manager or document them as placeholders only."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-7e9e9df2c2e3a79a", "name": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-fix-finance-ui-polish.md", "shortDescription": {"text": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-fix-finance-ui-polish.md"}, "fullDescription": {"text": "Agent-facing files are routinely pasted into LLM/tool contexts. Move literal tokens, keys, and passwords into a secret manager or document them as placeholders only."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-6bb06d60da0f41d4", "name": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-junior-ux-3-cleanup.progress.md", "shortDescription": {"text": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-junior-ux-3-cleanup.progress.md"}, "fullDescription": {"text": "Agent-facing files are routinely pasted into LLM/tool contexts. Move literal tokens, keys, and passwords into a secret manager or document them as placeholders only."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-1fd948e2ad779122", "name": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-coder-watchdog-progress-markers.md", "shortDescription": {"text": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-coder-watchdog-progress-markers.md"}, "fullDescription": {"text": "Agent-facing files are routinely pasted into LLM/tool contexts. Move literal tokens, keys, and passwords into a secret manager or document them as placeholders only."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-bc796456122eb457", "name": "Agent authority lacks a verifier contract: .claude/tasks/archive/task-coder-watchdog-progress-markers.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: .claude/tasks/archive/task-coder-watchdog-progress-markers.md"}, "fullDescription": {"text": "This agent instruction grants code or shell authority but does not state the verification gate that decides promotion. The recurring safe pattern is: LLM proposes; deterministic tests/build/security checks verify; only verified code promotes."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-babd3bb3bca42699", "name": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-fix-pr22-ui-round5.md", "shortDescription": {"text": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-fix-pr22-ui-round5.md"}, "fullDescription": {"text": "Agent-facing files are routinely pasted into LLM/tool contexts. Move literal tokens, keys, and passwords into a secret manager or document them as placeholders only."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-ee506383f4842a59", "name": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-autotest-polish-coverage.md", "shortDescription": {"text": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-autotest-polish-coverage.md"}, "fullDescription": {"text": "Agent-facing files are routinely pasted into LLM/tool contexts. Move literal tokens, keys, and passwords into a secret manager or document them as placeholders only."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-ed3ea7c1bd09ed17", "name": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-fix-e2e-team-selectors.md", "shortDescription": {"text": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-fix-e2e-team-selectors.md"}, "fullDescription": {"text": "Agent-facing files are routinely pasted into LLM/tool contexts. Move literal tokens, keys, and passwords into a secret manager or document them as placeholders only."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-1924c8479a25ced2", "name": "Agent authority lacks a verifier contract: .claude/tasks/archive/task-fix-e2e-team-selectors.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: .claude/tasks/archive/task-fix-e2e-team-selectors.md"}, "fullDescription": {"text": "This agent instruction grants code or shell authority but does not state the verification gate that decides promotion. The recurring safe pattern is: LLM proposes; deterministic tests/build/security checks verify; only verified code promotes."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-72689890b7d99535", "name": "Agent instruction/config may expose a secret: .claude/tasks/archive/2026-05-19-task-infra-branch-protection.md", "shortDescription": {"text": "Agent instruction/config may expose a secret: .claude/tasks/archive/2026-05-19-task-infra-branch-protection.md"}, "fullDescription": {"text": "Agent-facing files are routinely pasted into LLM/tool contexts. Move literal tokens, keys, and passwords into a secret manager or document them as placeholders only."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-730fc8ccd91a1a28", "name": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-harness-schedule-wakeup-persistence.md", "shortDescription": {"text": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-harness-schedule-wakeup-persistence.md"}, "fullDescription": {"text": "Agent-facing files are routinely pasted into LLM/tool contexts. Move literal tokens, keys, and passwords into a secret manager or document them as placeholders only."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-e066301c669bd52b", "name": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-fix-e2e-profile-pr28.md", "shortDescription": {"text": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-fix-e2e-profile-pr28.md"}, "fullDescription": {"text": "Agent-facing files are routinely pasted into LLM/tool contexts. Move literal tokens, keys, and passwords into a secret manager or document them as placeholders only."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-deaeb5140372ed4b", "name": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-team-senior-share-override.md", "shortDescription": {"text": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-team-senior-share-override.md"}, "fullDescription": {"text": "Agent-facing files are routinely pasted into LLM/tool contexts. Move literal tokens, keys, and passwords into a secret manager or document them as placeholders only."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-612f239380a7934d", "name": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-drop-company-debt-and-invoices.md", "shortDescription": {"text": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-drop-company-debt-and-invoices.md"}, "fullDescription": {"text": "Agent-facing files are routinely pasted into LLM/tool contexts. Move literal tokens, keys, and passwords into a secret manager or document them as placeholders only."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-a5dd364178b5cfae", "name": "Agent instruction/config may expose a secret: .claude/tasks/archive/2026-05-19-task-fix-teams-critical.md", "shortDescription": {"text": "Agent instruction/config may expose a secret: .claude/tasks/archive/2026-05-19-task-fix-teams-critical.md"}, "fullDescription": {"text": "Agent-facing files are routinely pasted into LLM/tool contexts. Move literal tokens, keys, and passwords into a secret manager or document them as placeholders only."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-ba6238f2504bd667", "name": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-fix-avatar-cropper-and-pill.md", "shortDescription": {"text": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-fix-avatar-cropper-and-pill.md"}, "fullDescription": {"text": "Agent-facing files are routinely pasted into LLM/tool contexts. Move literal tokens, keys, and passwords into a secret manager or document them as placeholders only."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-08a03ce97c376aa4", "name": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-finance-receipt-integration.progress.md", "shortDescription": {"text": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-finance-receipt-integration.progress.md"}, "fullDescription": {"text": "Agent-facing files are routinely pasted into LLM/tool contexts. Move literal tokens, keys, and passwords into a secret manager or document them as placeholders only."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-9b4e253e5de3b2c4", "name": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-fix-invoice-pdf-polish.progress.md", "shortDescription": {"text": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-fix-invoice-pdf-polish.progress.md"}, "fullDescription": {"text": "Agent-facing files are routinely pasted into LLM/tool contexts. Move literal tokens, keys, and passwords into a secret manager or document them as placeholders only."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-4af4e4954e38fef9", "name": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-fix-junior-ut-round1.md", "shortDescription": {"text": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-fix-junior-ut-round1.md"}, "fullDescription": {"text": "Agent-facing files are routinely pasted into LLM/tool contexts. Move literal tokens, keys, and passwords into a secret manager or document them as placeholders only."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-6a2f96a3c3fe1391", "name": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-invoice-data-layer.md", "shortDescription": {"text": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-invoice-data-layer.md"}, "fullDescription": {"text": "Agent-facing files are routinely pasted into LLM/tool contexts. Move literal tokens, keys, and passwords into a secret manager or document them as placeholders only."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-978156f238f03b09", "name": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-infra-dev-flow-scripts.md", "shortDescription": {"text": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-infra-dev-flow-scripts.md"}, "fullDescription": {"text": "Agent-facing files are routinely pasted into LLM/tool contexts. Move literal tokens, keys, and passwords into a secret manager or document them as placeholders only."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-6585cced2d657bce", "name": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-rbac-senior-junior-visibility.progress.md", "shortDescription": {"text": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-rbac-senior-junior-visibility.progress.md"}, "fullDescription": {"text": "Agent-facing files are routinely pasted into LLM/tool contexts. Move literal tokens, keys, and passwords into a secret manager or document them as placeholders only."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-ed68eb0bfb701b5a", "name": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-fix-pr22-ui-round1.md", "shortDescription": {"text": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-fix-pr22-ui-round1.md"}, "fullDescription": {"text": "Agent-facing files are routinely pasted into LLM/tool contexts. Move literal tokens, keys, and passwords into a secret manager or document them as placeholders only."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-997c2b67bd9a92fe", "name": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-fix-profile-round3.md", "shortDescription": {"text": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-fix-profile-round3.md"}, "fullDescription": {"text": "Agent-facing files are routinely pasted into LLM/tool contexts. Move literal tokens, keys, and passwords into a secret manager or document them as placeholders only."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-db1670c97bad5953", "name": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-fix-junior-ut-round1.progress.md", "shortDescription": {"text": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-fix-junior-ut-round1.progress.md"}, "fullDescription": {"text": "Agent-facing files are routinely pasted into LLM/tool contexts. Move literal tokens, keys, and passwords into a secret manager or document them as placeholders only."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-7f565eb9c4e5eee8", "name": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-fix-tech-tab-and-requisites-ui.md", "shortDescription": {"text": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-fix-tech-tab-and-requisites-ui.md"}, "fullDescription": {"text": "Agent-facing files are routinely pasted into LLM/tool contexts. Move literal tokens, keys, and passwords into a secret manager or document them as placeholders only."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-566608db50e69d7c", "name": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-multiagent-docs-architect.md", "shortDescription": {"text": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-multiagent-docs-architect.md"}, "fullDescription": {"text": "Agent-facing files are routinely pasted into LLM/tool contexts. Move literal tokens, keys, and passwords into a secret manager or document them as placeholders only."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-41603ac6f0d07af7", "name": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-fix-profile-revisions-batch2.md", "shortDescription": {"text": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-fix-profile-revisions-batch2.md"}, "fullDescription": {"text": "Agent-facing files are routinely pasted into LLM/tool contexts. Move literal tokens, keys, and passwords into a secret manager or document them as placeholders only."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-81c036b8a63ed2ee", "name": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-fix-pr22-ui-round3.md", "shortDescription": {"text": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-fix-pr22-ui-round3.md"}, "fullDescription": {"text": "Agent-facing files are routinely pasted into LLM/tool contexts. Move literal tokens, keys, and passwords into a secret manager or document them as placeholders only."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-2421fa7a22d13980", "name": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-drop-phase2-backend.md", "shortDescription": {"text": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-drop-phase2-backend.md"}, "fullDescription": {"text": "Agent-facing files are routinely pasted into LLM/tool contexts. Move literal tokens, keys, and passwords into a secret manager or document them as placeholders only."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-aa884941ddf629eb", "name": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-payout-dev-simulate-toggle.md", "shortDescription": {"text": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-payout-dev-simulate-toggle.md"}, "fullDescription": {"text": "Agent-facing files are routinely pasted into LLM/tool contexts. Move literal tokens, keys, and passwords into a secret manager or document them as placeholders only."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-5f0a89b137d5ba78", "name": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-documents-e2e.md", "shortDescription": {"text": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-documents-e2e.md"}, "fullDescription": {"text": "Agent-facing files are routinely pasted into LLM/tool contexts. Move literal tokens, keys, and passwords into a secret manager or document them as placeholders only."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-01d9dfb55639c0b5", "name": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-housekeeping-cleanup.progress.md", "shortDescription": {"text": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-housekeeping-cleanup.progress.md"}, "fullDescription": {"text": "Agent-facing files are routinely pasted into LLM/tool contexts. Move literal tokens, keys, and passwords into a secret manager or document them as placeholders only."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-dfae97572d377486", "name": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-documents-fixes-batch1.md", "shortDescription": {"text": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-documents-fixes-batch1.md"}, "fullDescription": {"text": "Agent-facing files are routinely pasted into LLM/tool contexts. Move literal tokens, keys, and passwords into a secret manager or document them as placeholders only."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-40568e63fc3e49ac", "name": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-fix-transactions-sort-timestamps.md", "shortDescription": {"text": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-fix-transactions-sort-timestamps.md"}, "fullDescription": {"text": "Agent-facing files are routinely pasted into LLM/tool contexts. Move literal tokens, keys, and passwords into a secret manager or document them as placeholders only."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-270fafe06a6f2ea8", "name": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-drop-phase1-frontend.md", "shortDescription": {"text": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-drop-phase1-frontend.md"}, "fullDescription": {"text": "Agent-facing files are routinely pasted into LLM/tool contexts. Move literal tokens, keys, and passwords into a secret manager or document them as placeholders only."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-83b1c0adbdd8fa8a", "name": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-fix-profile-scroll.md", "shortDescription": {"text": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-fix-profile-scroll.md"}, "fullDescription": {"text": "Agent-facing files are routinely pasted into LLM/tool contexts. Move literal tokens, keys, and passwords into a secret manager or document them as placeholders only."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-4b0c4adadac298dd", "name": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-fix-invoice-pdf-polish.md", "shortDescription": {"text": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-fix-invoice-pdf-polish.md"}, "fullDescription": {"text": "Agent-facing files are routinely pasted into LLM/tool contexts. Move literal tokens, keys, and passwords into a secret manager or document them as placeholders only."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-073abaccfc69b4f6", "name": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-invoice-api.md", "shortDescription": {"text": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-invoice-api.md"}, "fullDescription": {"text": "Agent-facing files are routinely pasted into LLM/tool contexts. Move literal tokens, keys, and passwords into a secret manager or document them as placeholders only."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-7c9e29fe26641f2c", "name": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-drop-phase4-refactor-remove-tov.md", "shortDescription": {"text": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-drop-phase4-refactor-remove-tov.md"}, "fullDescription": {"text": "Agent-facing files are routinely pasted into LLM/tool contexts. Move literal tokens, keys, and passwords into a secret manager or document them as placeholders only."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-42414ab9779c805a", "name": "Agent authority lacks a verifier contract: .claude/tasks/archive/2026-05-19-task-fix-ai-review-workflow-run.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: .claude/tasks/archive/2026-05-19-task-fix-ai-review-workflow-run.md"}, "fullDescription": {"text": "This agent instruction grants code or shell authority but does not state the verification gate that decides promotion. The recurring safe pattern is: LLM proposes; deterministic tests/build/security checks verify; only verified code promotes."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-348f389e61d5be27", "name": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-fix-pr-83-guard-order.progress.md", "shortDescription": {"text": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-fix-pr-83-guard-order.progress.md"}, "fullDescription": {"text": "Agent-facing files are routinely pasted into LLM/tool contexts. Move literal tokens, keys, and passwords into a secret manager or document them as placeholders only."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-cea780f1edadf08e", "name": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-fix-auth-localhost.md", "shortDescription": {"text": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-fix-auth-localhost.md"}, "fullDescription": {"text": "Agent-facing files are routinely pasted into LLM/tool contexts. Move literal tokens, keys, and passwords into a secret manager or document them as placeholders only."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-7c14c4b20b2620f3", "name": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-drop-phase1-backend.md", "shortDescription": {"text": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-drop-phase1-backend.md"}, "fullDescription": {"text": "Agent-facing files are routinely pasted into LLM/tool contexts. Move literal tokens, keys, and passwords into a secret manager or document them as placeholders only."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-31d6b557f7cd6d8c", "name": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-fix-drop-bugs-after-testing.md", "shortDescription": {"text": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-fix-drop-bugs-after-testing.md"}, "fullDescription": {"text": "Agent-facing files are routinely pasted into LLM/tool contexts. Move literal tokens, keys, and passwords into a secret manager or document them as placeholders only."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-141240309359a38f", "name": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-fix-phase4b-e2e-mock.md", "shortDescription": {"text": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-fix-phase4b-e2e-mock.md"}, "fullDescription": {"text": "Agent-facing files are routinely pasted into LLM/tool contexts. Move literal tokens, keys, and passwords into a secret manager or document them as placeholders only."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-3ab960ae87da9d1f", "name": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-drop-phase1-frontend.progress.md", "shortDescription": {"text": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-drop-phase1-frontend.progress.md"}, "fullDescription": {"text": "Agent-facing files are routinely pasted into LLM/tool contexts. Move literal tokens, keys, and passwords into a secret manager or document them as placeholders only."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-91a4e46acc47f33f", "name": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-fix-phase4b-bugs.md", "shortDescription": {"text": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-fix-phase4b-bugs.md"}, "fullDescription": {"text": "Agent-facing files are routinely pasted into LLM/tool contexts. Move literal tokens, keys, and passwords into a secret manager or document them as placeholders only."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-e088e20b4b97eab1", "name": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-onboarding-6a-data-backend.md", "shortDescription": {"text": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-onboarding-6a-data-backend.md"}, "fullDescription": {"text": "Agent-facing files are routinely pasted into LLM/tool contexts. Move literal tokens, keys, and passwords into a secret manager or document them as placeholders only."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-8ba37a4b16046819", "name": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-selftest-typo-fix.md", "shortDescription": {"text": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-selftest-typo-fix.md"}, "fullDescription": {"text": "Agent-facing files are routinely pasted into LLM/tool contexts. Move literal tokens, keys, and passwords into a secret manager or document them as placeholders only."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-625e4cef1571e7ab", "name": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-fix-teams-ui-polish.md", "shortDescription": {"text": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-fix-teams-ui-polish.md"}, "fullDescription": {"text": "Agent-facing files are routinely pasted into LLM/tool contexts. Move literal tokens, keys, and passwords into a secret manager or document them as placeholders only."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-5f0252b62b3d99a9", "name": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-invoice-pdf-gen.md", "shortDescription": {"text": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-invoice-pdf-gen.md"}, "fullDescription": {"text": "Agent-facing files are routinely pasted into LLM/tool contexts. Move literal tokens, keys, and passwords into a secret manager or document them as placeholders only."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-6c335f292ebf8c65", "name": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-drop-phase1-backend.progress.md", "shortDescription": {"text": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-drop-phase1-backend.progress.md"}, "fullDescription": {"text": "Agent-facing files are routinely pasted into LLM/tool contexts. Move literal tokens, keys, and passwords into a secret manager or document them as placeholders only."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-d91138e35b90592c", "name": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-fix-drop-archive-and-409.md", "shortDescription": {"text": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-fix-drop-archive-and-409.md"}, "fullDescription": {"text": "Agent-facing files are routinely pasted into LLM/tool contexts. Move literal tokens, keys, and passwords into a secret manager or document them as placeholders only."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-b7c16f5672c3e19a", "name": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-pr56-final-ut-batch.md", "shortDescription": {"text": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-pr56-final-ut-batch.md"}, "fullDescription": {"text": "Agent-facing files are routinely pasted into LLM/tool contexts. Move literal tokens, keys, and passwords into a secret manager or document them as placeholders only."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-49229d38547c2ab3", "name": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-project-credentials.progress.md", "shortDescription": {"text": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-project-credentials.progress.md"}, "fullDescription": {"text": "Agent-facing files are routinely pasted into LLM/tool contexts. Move literal tokens, keys, and passwords into a secret manager or document them as placeholders only."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-841421826fbd2c32", "name": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-drop-phase3-backend.md", "shortDescription": {"text": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-drop-phase3-backend.md"}, "fullDescription": {"text": "Agent-facing files are routinely pasted into LLM/tool contexts. Move literal tokens, keys, and passwords into a secret manager or document them as placeholders only."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-e067995f180712ab", "name": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-fix-pr33-user-testing-round3.md", "shortDescription": {"text": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-fix-pr33-user-testing-round3.md"}, "fullDescription": {"text": "Agent-facing files are routinely pasted into LLM/tool contexts. Move literal tokens, keys, and passwords into a secret manager or document them as placeholders only."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-32a5e78fa561ef94", "name": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-infra-drizzle-migrations-sync.md", "shortDescription": {"text": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-infra-drizzle-migrations-sync.md"}, "fullDescription": {"text": "Agent-facing files are routinely pasted into LLM/tool contexts. Move literal tokens, keys, and passwords into a secret manager or document them as placeholders only."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-f29f741ef4caa184", "name": "Agent authority lacks a verifier contract: .claude/tasks/archive/task-infra-drizzle-migrations-sync.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: .claude/tasks/archive/task-infra-drizzle-migrations-sync.md"}, "fullDescription": {"text": "This agent instruction grants code or shell authority but does not state the verification gate that decides promotion. The recurring safe pattern is: LLM proposes; deterministic tests/build/security checks verify; only verified code promotes."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-b3574ec62fb94195", "name": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-expand-drop-e2e-coverage.md", "shortDescription": {"text": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-expand-drop-e2e-coverage.md"}, "fullDescription": {"text": "Agent-facing files are routinely pasted into LLM/tool contexts. Move literal tokens, keys, and passwords into a secret manager or document them as placeholders only."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-806dbe5f24adc6b7", "name": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-infra-e2e-watchdog.md", "shortDescription": {"text": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-infra-e2e-watchdog.md"}, "fullDescription": {"text": "Agent-facing files are routinely pasted into LLM/tool contexts. Move literal tokens, keys, and passwords into a secret manager or document them as placeholders only."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-bf00a42910fd9bdf", "name": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-drop-phase3-frontend.md", "shortDescription": {"text": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-drop-phase3-frontend.md"}, "fullDescription": {"text": "Agent-facing files are routinely pasted into LLM/tool contexts. Move literal tokens, keys, and passwords into a secret manager or document them as placeholders only."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-c0c5f568b898d654", "name": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-fix-phase4c-e2e-mocks.md", "shortDescription": {"text": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-fix-phase4c-e2e-mocks.md"}, "fullDescription": {"text": "Agent-facing files are routinely pasted into LLM/tool contexts. Move literal tokens, keys, and passwords into a secret manager or document them as placeholders only."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-556daa7d0208dedb", "name": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-infra-hook-bypass-hardening.md", "shortDescription": {"text": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-infra-hook-bypass-hardening.md"}, "fullDescription": {"text": "Agent-facing files are routinely pasted into LLM/tool contexts. Move literal tokens, keys, and passwords into a secret manager or document them as placeholders only."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-393a0c8994421211", "name": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-fix-user-avatar-dropdown.md", "shortDescription": {"text": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-fix-user-avatar-dropdown.md"}, "fullDescription": {"text": "Agent-facing files are routinely pasted into LLM/tool contexts. Move literal tokens, keys, and passwords into a secret manager or document them as placeholders only."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-de9e5d3d97145d8d", "name": "Agent instruction/config may expose a secret: .claude/tasks/archive/2026-05-19-task-fix-team-detail-hooks.md", "shortDescription": {"text": "Agent instruction/config may expose a secret: .claude/tasks/archive/2026-05-19-task-fix-team-detail-hooks.md"}, "fullDescription": {"text": "Agent-facing files are routinely pasted into LLM/tool contexts. Move literal tokens, keys, and passwords into a secret manager or document them as placeholders only."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-b452add9449660a6", "name": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-drop-phase4b-payment-channels.progress.md", "shortDescription": {"text": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-drop-phase4b-payment-channels.progress.md"}, "fullDescription": {"text": "Agent-facing files are routinely pasted into LLM/tool contexts. Move literal tokens, keys, and passwords into a secret manager or document them as placeholders only."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-ba8188542b2d44d2", "name": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-fix-junior-ut-round3.progress.md", "shortDescription": {"text": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-fix-junior-ut-round3.progress.md"}, "fullDescription": {"text": "Agent-facing files are routinely pasted into LLM/tool contexts. Move literal tokens, keys, and passwords into a secret manager or document them as placeholders only."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-ab6bc9125ce00f8d", "name": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-fix-phase4b-round2.md", "shortDescription": {"text": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-fix-phase4b-round2.md"}, "fullDescription": {"text": "Agent-facing files are routinely pasted into LLM/tool contexts. Move literal tokens, keys, and passwords into a secret manager or document them as placeholders only."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-00debfbfdc3c17d2", "name": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-documents-fixes-batch2.md", "shortDescription": {"text": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-documents-fixes-batch2.md"}, "fullDescription": {"text": "Agent-facing files are routinely pasted into LLM/tool contexts. Move literal tokens, keys, and passwords into a secret manager or document them as placeholders only."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-541f1d55e8914f9d", "name": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-fix-pr22-ui-round4.md", "shortDescription": {"text": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-fix-pr22-ui-round4.md"}, "fullDescription": {"text": "Agent-facing files are routinely pasted into LLM/tool contexts. Move literal tokens, keys, and passwords into a secret manager or document them as placeholders only."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-9b16e0ec0016aef7", "name": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-project-credentials.md", "shortDescription": {"text": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-project-credentials.md"}, "fullDescription": {"text": "Agent-facing files are routinely pasted into LLM/tool contexts. Move literal tokens, keys, and passwords into a secret manager or document them as placeholders only."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-b41d40119aaa949f", "name": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-infra-e2e-watchdog.completed.md", "shortDescription": {"text": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-infra-e2e-watchdog.completed.md"}, "fullDescription": {"text": "Agent-facing files are routinely pasted into LLM/tool contexts. Move literal tokens, keys, and passwords into a secret manager or document them as placeholders only."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-8ff5eec737eb2e1c", "name": "Agent authority lacks a verifier contract: .claude/tasks/archive/task-infra-e2e-watchdog.completed.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: .claude/tasks/archive/task-infra-e2e-watchdog.completed.md"}, "fullDescription": {"text": "This agent instruction grants code or shell authority but does not state the verification gate that decides promotion. The recurring safe pattern is: LLM proposes; deterministic tests/build/security checks verify; only verified code promotes."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-75609e12630195e5", "name": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-fix-transactions-sort-by-createdat.md", "shortDescription": {"text": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-fix-transactions-sort-by-createdat.md"}, "fullDescription": {"text": "Agent-facing files are routinely pasted into LLM/tool contexts. Move literal tokens, keys, and passwords into a secret manager or document them as placeholders only."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-21889a0b27d25c70", "name": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-onboarding-6a-data-backend.progress.md", "shortDescription": {"text": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-onboarding-6a-data-backend.progress.md"}, "fullDescription": {"text": "Agent-facing files are routinely pasted into LLM/tool contexts. Move literal tokens, keys, and passwords into a secret manager or document them as placeholders only."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-151d2303c73b8e7e", "name": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-team-senior-share-override.progress.md", "shortDescription": {"text": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-team-senior-share-override.progress.md"}, "fullDescription": {"text": "Agent-facing files are routinely pasted into LLM/tool contexts. Move literal tokens, keys, and passwords into a secret manager or document them as placeholders only."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-3822aeaa5c2a017e", "name": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-finance-receipt-integration.md", "shortDescription": {"text": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-finance-receipt-integration.md"}, "fullDescription": {"text": "Agent-facing files are routinely pasted into LLM/tool contexts. Move literal tokens, keys, and passwords into a secret manager or document them as placeholders only."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-6968b6652afafe0c", "name": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-fix-refactor-tov-financetab-filter.md", "shortDescription": {"text": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-fix-refactor-tov-financetab-filter.md"}, "fullDescription": {"text": "Agent-facing files are routinely pasted into LLM/tool contexts. Move literal tokens, keys, and passwords into a secret manager or document them as placeholders only."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-617eefb9730ceda4", "name": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-aggregate-invoice-per-payout.md", "shortDescription": {"text": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-aggregate-invoice-per-payout.md"}, "fullDescription": {"text": "Agent-facing files are routinely pasted into LLM/tool contexts. Move literal tokens, keys, and passwords into a secret manager or document them as placeholders only."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-a47a0d4b15d081bb", "name": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-projects-senior-share-override.md", "shortDescription": {"text": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-projects-senior-share-override.md"}, "fullDescription": {"text": "Agent-facing files are routinely pasted into LLM/tool contexts. Move literal tokens, keys, and passwords into a secret manager or document them as placeholders only."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-1d01c3c9456328e2", "name": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-fix-round2-polish.md", "shortDescription": {"text": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-fix-round2-polish.md"}, "fullDescription": {"text": "Agent-facing files are routinely pasted into LLM/tool contexts. Move literal tokens, keys, and passwords into a secret manager or document them as placeholders only."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-e83da27598bbee97", "name": "Agent instruction/config may expose a secret: .claude/tasks/archive/2026-05-19-task-fix-teams-detail-ui.md", "shortDescription": {"text": "Agent instruction/config may expose a secret: .claude/tasks/archive/2026-05-19-task-fix-teams-detail-ui.md"}, "fullDescription": {"text": "Agent-facing files are routinely pasted into LLM/tool contexts. Move literal tokens, keys, and passwords into a secret manager or document them as placeholders only."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-345cdcb0d1586794", "name": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-drop-phase1-e2e.md", "shortDescription": {"text": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-drop-phase1-e2e.md"}, "fullDescription": {"text": "Agent-facing files are routinely pasted into LLM/tool contexts. Move literal tokens, keys, and passwords into a secret manager or document them as placeholders only."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-4bbfe224212a8616", "name": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-junior-ux-1-backend.md", "shortDescription": {"text": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-junior-ux-1-backend.md"}, "fullDescription": {"text": "Agent-facing files are routinely pasted into LLM/tool contexts. Move literal tokens, keys, and passwords into a secret manager or document them as placeholders only."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-3e6f4b5fa56e1cd7", "name": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-drop-phase4a-balances-backend.md", "shortDescription": {"text": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-drop-phase4a-balances-backend.md"}, "fullDescription": {"text": "Agent-facing files are routinely pasted into LLM/tool contexts. Move literal tokens, keys, and passwords into a secret manager or document them as placeholders only."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-abc574595758c8fe", "name": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-fix-drop-unify-dialog.md", "shortDescription": {"text": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-fix-drop-unify-dialog.md"}, "fullDescription": {"text": "Agent-facing files are routinely pasted into LLM/tool contexts. Move literal tokens, keys, and passwords into a secret manager or document them as placeholders only."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-7a1b8d2b5295c78c", "name": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-avatars-logos-integration.md", "shortDescription": {"text": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-avatars-logos-integration.md"}, "fullDescription": {"text": "Agent-facing files are routinely pasted into LLM/tool contexts. Move literal tokens, keys, and passwords into a secret manager or document them as placeholders only."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-6877b45fd25a571b", "name": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-drop-phase4b-payment-channels.md", "shortDescription": {"text": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-drop-phase4b-payment-channels.md"}, "fullDescription": {"text": "Agent-facing files are routinely pasted into LLM/tool contexts. Move literal tokens, keys, and passwords into a secret manager or document them as placeholders only."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-cee7dd2c60b3028a", "name": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-drop-phase2-frontend.progress.md", "shortDescription": {"text": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-drop-phase2-frontend.progress.md"}, "fullDescription": {"text": "Agent-facing files are routinely pasted into LLM/tool contexts. Move literal tokens, keys, and passwords into a secret manager or document them as placeholders only."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-4d0faddcbb9a0e45", "name": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-infra-merge-gate.md", "shortDescription": {"text": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-infra-merge-gate.md"}, "fullDescription": {"text": "Agent-facing files are routinely pasted into LLM/tool contexts. Move literal tokens, keys, and passwords into a secret manager or document them as placeholders only."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-f9ecedea958eb125", "name": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-archive-backend-foundation.md", "shortDescription": {"text": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-archive-backend-foundation.md"}, "fullDescription": {"text": "Agent-facing files are routinely pasted into LLM/tool contexts. Move literal tokens, keys, and passwords into a secret manager or document them as placeholders only."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-741c6b9018d3963e", "name": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-fix-phone-input-flake.md", "shortDescription": {"text": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-fix-phone-input-flake.md"}, "fullDescription": {"text": "Agent-facing files are routinely pasted into LLM/tool contexts. Move literal tokens, keys, and passwords into a secret manager or document them as placeholders only."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-4422773b29cc37ab", "name": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-arch-agents-md-fixes.md", "shortDescription": {"text": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-arch-agents-md-fixes.md"}, "fullDescription": {"text": "Agent-facing files are routinely pasted into LLM/tool contexts. Move literal tokens, keys, and passwords into a secret manager or document them as placeholders only."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-5a55471d3ba1908a", "name": "Agent authority lacks a verifier contract: .claude/tasks/templates/task-fix-e2e-broken.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: .claude/tasks/templates/task-fix-e2e-broken.md"}, "fullDescription": {"text": "This agent instruction grants code or shell authority but does not state the verification gate that decides promotion. The recurring safe pattern is: LLM proposes; deterministic tests/build/security checks verify; only verified code promotes."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-1cf528b3ec60830a", "name": "Agent instruction/config may expose a secret: .claude/agents/pm-snippets.md", "shortDescription": {"text": "Agent instruction/config may expose a secret: .claude/agents/pm-snippets.md"}, "fullDescription": {"text": "Agent-facing files are routinely pasted into LLM/tool contexts. Move literal tokens, keys, and passwords into a secret manager or document them as placeholders only."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-ea095cd99b5ea026", "name": "Agent instruction/config may expose a secret: .claude/agents/pm.md", "shortDescription": {"text": "Agent instruction/config may expose a secret: .claude/agents/pm.md"}, "fullDescription": {"text": "Agent-facing files are routinely pasted into LLM/tool contexts. Move literal tokens, keys, and passwords into a secret manager or document them as placeholders only."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-d59d316e358cf2a4", "name": "Agent authority lacks a verifier contract: .claude/agents/CLAUDE-tools.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: .claude/agents/CLAUDE-tools.md"}, "fullDescription": {"text": "This agent instruction grants code or shell authority but does not state the verification gate that decides promotion. The recurring safe pattern is: LLM proposes; deterministic tests/build/security checks verify; only verified code promotes."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-0c231845dfc926cf", "name": "Agent instruction/config may expose a secret: .claude/agents/devops.md", "shortDescription": {"text": "Agent instruction/config may expose a secret: .claude/agents/devops.md"}, "fullDescription": {"text": "Agent-facing files are routinely pasted into LLM/tool contexts. Move literal tokens, keys, and passwords into a secret manager or document them as placeholders only."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-cfe7476db2457805", "name": "Agent authority lacks a verifier contract: .claude/agents/CLAUDE-legal.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: .claude/agents/CLAUDE-legal.md"}, "fullDescription": {"text": "This agent instruction grants code or shell authority but does not state the verification gate that decides promotion. The recurring safe pattern is: LLM proposes; deterministic tests/build/security checks verify; only verified code promotes."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-f0f8e82f922303a5", "name": "Agent instruction/config may expose a secret: .claude/agents/memory/README.md", "shortDescription": {"text": "Agent instruction/config may expose a secret: .claude/agents/memory/README.md"}, "fullDescription": {"text": "Agent-facing files are routinely pasted into LLM/tool contexts. Move literal tokens, keys, and passwords into a secret manager or document them as placeholders only."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-164c74a768c9d679", "name": "Agent instruction/config may expose a secret: .claude/agents/memory/pm/lessons.md", "shortDescription": {"text": "Agent instruction/config may expose a secret: .claude/agents/memory/pm/lessons.md"}, "fullDescription": {"text": "Agent-facing files are routinely pasted into LLM/tool contexts. Move literal tokens, keys, and passwords into a secret manager or document them as placeholders only."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-510cc4347a150a8b", "name": "Agent instruction/config may expose a secret: .claude/agents/memory/coder/lessons.md", "shortDescription": {"text": "Agent instruction/config may expose a secret: .claude/agents/memory/coder/lessons.md"}, "fullDescription": {"text": "Agent-facing files are routinely pasted into LLM/tool contexts. Move literal tokens, keys, and passwords into a secret manager or document them as placeholders only."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-1cf354409f16f5f6", "name": "Agent instruction/config may expose a secret: .claude/agents/memory/devops/lessons.md", "shortDescription": {"text": "Agent instruction/config may expose a secret: .claude/agents/memory/devops/lessons.md"}, "fullDescription": {"text": "Agent-facing files are routinely pasted into LLM/tool contexts. Move literal tokens, keys, and passwords into a secret manager or document them as placeholders only."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-47fc5ef4ead65944", "name": "Agent instruction/config may expose a secret: .claude/agents/memory/autotest/lessons.md", "shortDescription": {"text": "Agent instruction/config may expose a secret: .claude/agents/memory/autotest/lessons.md"}, "fullDescription": {"text": "Agent-facing files are routinely pasted into LLM/tool contexts. Move literal tokens, keys, and passwords into a secret manager or document them as placeholders only."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-f51dc032ccbb5ac2", "name": "Agent instruction/config may expose a secret: .claude/agents/specs/2026-05-20-productive-pipeline-design.md", "shortDescription": {"text": "Agent instruction/config may expose a secret: .claude/agents/specs/2026-05-20-productive-pipeline-design.md"}, "fullDescription": {"text": "Agent-facing files are routinely pasted into LLM/tool contexts. Move literal tokens, keys, and passwords into a secret manager or document them as placeholders only."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-d612367921d55fdc", "name": "Agent authority lacks a verifier contract: .claude/skills/pm-dispatching/SKILL.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: .claude/skills/pm-dispatching/SKILL.md"}, "fullDescription": {"text": "This agent instruction grants code or shell authority but does not state the verification gate that decides promotion. The recurring safe pattern is: LLM proposes; deterministic tests/build/security checks verify; only verified code promotes."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-8bb09d7801d21aea", "name": "Agent authority lacks a verifier contract: .claude/skills/code-review-discipline/SKILL.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: .claude/skills/code-review-discipline/SKILL.md"}, "fullDescription": {"text": "This agent instruction grants code or shell authority but does not state the verification gate that decides promotion. The recurring safe pattern is: LLM proposes; deterministic tests/build/security checks verify; only verified code promotes."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-278fd0f9a9cb89d5", "name": "Agent instruction/config may expose a secret: .claude/knowledge/legal-consultations/2026-05-31-cash-crypto-undeclared-ri", "shortDescription": {"text": "Agent instruction/config may expose a secret: .claude/knowledge/legal-consultations/2026-05-31-cash-crypto-undeclared-risk-analysis.md"}, "fullDescription": {"text": "Agent-facing files are routinely pasted into LLM/tool contexts. Move literal tokens, keys, and passwords into a secret manager or document them as placeholders only."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-0312c5ac11ee35cf", "name": "Agent authority lacks a verifier contract: skills/ecc/security-scan/SKILL.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: skills/ecc/security-scan/SKILL.md"}, "fullDescription": {"text": "This agent instruction grants code or shell authority but does not state the verification gate that decides promotion. The recurring safe pattern is: LLM proposes; deterministic tests/build/security checks verify; only verified code promotes."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-e7f561b532fafbac", "name": "Agent instruction contains unpinned remote install: skills/ecc/security-scan/SKILL.md", "shortDescription": {"text": "Agent instruction contains unpinned remote install: skills/ecc/security-scan/SKILL.md"}, "fullDescription": {"text": "Remote install commands in agent instructions are a supply-chain risk, especially when an agent can execute shell commands."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-9085238bc61cca10", "name": "Agent authority lacks a verifier contract: skills/ecc/evm-token-decimals/SKILL.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: skills/ecc/evm-token-decimals/SKILL.md"}, "fullDescription": {"text": "This agent instruction grants code or shell authority but does not state the verification gate that decides promotion. The recurring safe pattern is: LLM proposes; deterministic tests/build/security checks verify; only verified code promotes."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-8627bc2264abbaa2", "name": "Agent instruction/config may expose a secret: skills/ecc/api-design/SKILL.md", "shortDescription": {"text": "Agent instruction/config may expose a secret: skills/ecc/api-design/SKILL.md"}, "fullDescription": {"text": "Agent-facing files are routinely pasted into LLM/tool contexts. Move literal tokens, keys, and passwords into a secret manager or document them as placeholders only."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-c395391dd393d806", "name": "Agent instruction/config may expose a secret: skills/ecc/backend-patterns/SKILL.md", "shortDescription": {"text": "Agent instruction/config may expose a secret: skills/ecc/backend-patterns/SKILL.md"}, "fullDescription": {"text": "Agent-facing files are routinely pasted into LLM/tool contexts. Move literal tokens, keys, and passwords into a secret manager or document them as placeholders only."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-edcba33d622e7fa3", "name": "Agent authority lacks a verifier contract: skills/ecc/backend-patterns/SKILL.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: skills/ecc/backend-patterns/SKILL.md"}, "fullDescription": {"text": "This agent instruction grants code or shell authority but does not state the verification gate that decides promotion. The recurring safe pattern is: LLM proposes; deterministic tests/build/security checks verify; only verified code promotes."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-3c06d2a4c7a523b5", "name": "Agent instruction/config may expose a secret: skills/ecc/security-review/SKILL.md", "shortDescription": {"text": "Agent instruction/config may expose a secret: skills/ecc/security-review/SKILL.md"}, "fullDescription": {"text": "Agent-facing files are routinely pasted into LLM/tool contexts. Move literal tokens, keys, and passwords into a secret manager or document them as placeholders only."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-3c45c9056690d801", "name": "Commented-code block (5 lines) in apps/api/scripts/generate-doc-fixtures.mjs:73", "shortDescription": {"text": "Commented-code block (5 lines) in apps/api/scripts/generate-doc-fixtures.mjs:73"}, "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-16f2accf50455cbb", "name": "Commented-code block (7 lines) in apps/api/src/main.ts:19", "shortDescription": {"text": "Commented-code block (7 lines) in apps/api/src/main.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-06086e7ada8cf791", "name": "Commented-code block (6 lines) in apps/api/src/app.module.ts:67", "shortDescription": {"text": "Commented-code block (6 lines) in apps/api/src/app.module.ts:67"}, "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-2006f6f275dd1670", "name": "Commented-code block (6 lines) in apps/api/src/users/users.archive.spec.ts:13", "shortDescription": {"text": "Commented-code block (6 lines) in apps/api/src/users/users.archive.spec.ts:13"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-febd3ba6106c3ecf", "name": "Commented-code block (13 lines) in apps/api/src/users/users.service.ts:41", "shortDescription": {"text": "Commented-code block (13 lines) in apps/api/src/users/users.service.ts:41"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-18c3961337599c3f", "name": "Commented-code block (5 lines) in apps/api/src/users/users.controller.ts:63", "shortDescription": {"text": "Commented-code block (5 lines) in apps/api/src/users/users.controller.ts:63"}, "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-0bedb2f765abcb7c", "name": "Commented-code block (5 lines) in apps/api/src/users/users.service.spec.ts:157", "shortDescription": {"text": "Commented-code block (5 lines) in apps/api/src/users/users.service.spec.ts:157"}, "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-4ded5df9ce5797ef", "name": "Commented-code block (5 lines) in apps/api/src/users/users-access.service.spec.ts:50", "shortDescription": {"text": "Commented-code block (5 lines) in apps/api/src/users/users-access.service.spec.ts:50"}, "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-70c15564cdeae5b9", "name": "Commented-code block (5 lines) in apps/api/src/users/users-access.service.ts:76", "shortDescription": {"text": "Commented-code block (5 lines) in apps/api/src/users/users-access.service.ts:76"}, "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-255a7f95b1053efe", "name": "Commented-code block (6 lines) in apps/api/src/notifications/notifications.controller.ts:80", "shortDescription": {"text": "Commented-code block (6 lines) in apps/api/src/notifications/notifications.controller.ts:80"}, "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-d9003f04737781ce", "name": "Commented-code block (5 lines) in apps/api/src/notifications/notifications.service.spec.ts:135", "shortDescription": {"text": "Commented-code block (5 lines) in apps/api/src/notifications/notifications.service.spec.ts:135"}, "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-1335c508fb220800", "name": "Commented-code block (5 lines) in apps/api/src/config/env.ts:14", "shortDescription": {"text": "Commented-code block (5 lines) in apps/api/src/config/env.ts:14"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-a88f09e704a26b31", "name": "`fetch()` without try/.catch or AbortSignal \u2014 apps/api/src/auth/auth.service.ts:43", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/api/src/auth/auth.service.ts:43"}, "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-f3233690c45ced32", "name": "Commented-code block (5 lines) in apps/api/src/auth/auth.service.spec.ts:17", "shortDescription": {"text": "Commented-code block (5 lines) in apps/api/src/auth/auth.service.spec.ts:17"}, "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-882001775a0e3cf8", "name": "Commented-code block (5 lines) in apps/api/src/auth/onboarding.guard.ts:46", "shortDescription": {"text": "Commented-code block (5 lines) in apps/api/src/auth/onboarding.guard.ts: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-c0579ae8196932aa", "name": "Commented-code block (5 lines) in apps/api/src/auth/auth.controller.ts:114", "shortDescription": {"text": "Commented-code block (5 lines) in apps/api/src/auth/auth.controller.ts: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-be80560d10e902b0", "name": "Commented-code block (6 lines) in apps/api/src/auth/onboarding.guard.integration.spec.ts:377", "shortDescription": {"text": "Commented-code block (6 lines) in apps/api/src/auth/onboarding.guard.integration.spec.ts:377"}, "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-ce799eb7febd983a", "name": "Commented-code block (7 lines) in apps/api/src/projects/projects-junior-masking.rbac.integration.spec.ts:715", "shortDescription": {"text": "Commented-code block (7 lines) in apps/api/src/projects/projects-junior-masking.rbac.integration.spec.ts:715"}, "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-312be85b02e7e53c", "name": "Commented-code block (5 lines) in apps/api/src/projects/admin-as-senior.rbac.integration.spec.ts:434", "shortDescription": {"text": "Commented-code block (5 lines) in apps/api/src/projects/admin-as-senior.rbac.integration.spec.ts:434"}, "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-278a6323b7a9e1d6", "name": "Commented-code block (5 lines) in apps/api/src/projects/projects.drop-feed.spec.ts:137", "shortDescription": {"text": "Commented-code block (5 lines) in apps/api/src/projects/projects.drop-feed.spec.ts:137"}, "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-99c5eda223c3214a", "name": "Commented-code block (5 lines) in apps/api/src/projects/projects.service.spec.ts:367", "shortDescription": {"text": "Commented-code block (5 lines) in apps/api/src/projects/projects.service.spec.ts:367"}, "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-f9cd93b56f0865ed", "name": "Commented-code block (6 lines) in apps/api/src/projects/projects.service.ts:82", "shortDescription": {"text": "Commented-code block (6 lines) in apps/api/src/projects/projects.service.ts:82"}, "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-baef236309122c6a", "name": "Commented-code block (5 lines) in apps/api/src/projects/projects.archive.spec.ts:267", "shortDescription": {"text": "Commented-code block (5 lines) in apps/api/src/projects/projects.archive.spec.ts:267"}, "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-a4eef27b7ca64e1b", "name": "Commented-code block (5 lines) in apps/api/src/teams/teams.service.spec.ts:337", "shortDescription": {"text": "Commented-code block (5 lines) in apps/api/src/teams/teams.service.spec.ts:337"}, "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-2935d6829e53c0b4", "name": "Commented-code block (6 lines) in apps/api/src/teams/teams.drop.spec.ts:497", "shortDescription": {"text": "Commented-code block (6 lines) in apps/api/src/teams/teams.drop.spec.ts: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-effdd64bb65a7639", "name": "Commented-code block (5 lines) in apps/api/src/teams/teams.archive.spec.ts:322", "shortDescription": {"text": "Commented-code block (5 lines) in apps/api/src/teams/teams.archive.spec.ts:322"}, "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-ac621e03920d65d4", "name": "Commented-code block (5 lines) in apps/api/src/teams/teams.service.ts:94", "shortDescription": {"text": "Commented-code block (5 lines) in apps/api/src/teams/teams.service.ts:94"}, "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-dad057f9e35e29a0", "name": "Commented-code block (7 lines) in apps/api/src/legends/legends.controller.integration.spec.ts:35", "shortDescription": {"text": "Commented-code block (7 lines) in apps/api/src/legends/legends.controller.integration.spec.ts:35"}, "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-7fe0e2ae0aecde7c", "name": "Commented-code block (6 lines) in apps/api/src/legends/legends.rbac.integration.spec.ts:81", "shortDescription": {"text": "Commented-code block (6 lines) in apps/api/src/legends/legends.rbac.integration.spec.ts:81"}, "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-f70ec3b0815e6cfb", "name": "Commented-code block (6 lines) in apps/api/src/legends/legends.controller.ts:6", "shortDescription": {"text": "Commented-code block (6 lines) in apps/api/src/legends/legends.controller.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-6f40af795284128d", "name": "Commented-code block (5 lines) in apps/api/src/audit/audit-removal.integration.spec.ts:53", "shortDescription": {"text": "Commented-code block (5 lines) in apps/api/src/audit/audit-removal.integration.spec.ts:53"}, "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-bf7fb1ff1786f6e8", "name": "Commented-code block (5 lines) in apps/api/src/finance/transactions.controller.ts:131", "shortDescription": {"text": "Commented-code block (5 lines) in apps/api/src/finance/transactions.controller.ts:131"}, "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-3e935943f4163254", "name": "Commented-code block (5 lines) in apps/api/src/finance/accountant-summary.integration.spec.ts:215", "shortDescription": {"text": "Commented-code block (5 lines) in apps/api/src/finance/accountant-summary.integration.spec.ts:215"}, "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-40509390ad33c9fb", "name": "Commented-code block (5 lines) in apps/api/src/finance/transactions.summary.rbac.integration.spec.ts:52", "shortDescription": {"text": "Commented-code block (5 lines) in apps/api/src/finance/transactions.summary.rbac.integration.spec.ts:52"}, "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-f37c1e0e0329425b", "name": "Commented-code block (6 lines) in apps/api/src/finance/transactions.confirm-payout.spec.ts:145", "shortDescription": {"text": "Commented-code block (6 lines) in apps/api/src/finance/transactions.confirm-payout.spec.ts: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-e1a06522c5301a97", "name": "Commented-code block (6 lines) in apps/api/src/finance/receipt-replace.integration.spec.ts:155", "shortDescription": {"text": "Commented-code block (6 lines) in apps/api/src/finance/receipt-replace.integration.spec.ts:155"}, "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-3ecea16409f5127c", "name": "Commented-code block (10 lines) in apps/api/src/finance/transactions.payout-flow.spec.ts:90", "shortDescription": {"text": "Commented-code block (10 lines) in apps/api/src/finance/transactions.payout-flow.spec.ts:90"}, "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-f85b45acbac7f29f", "name": "Commented-code block (7 lines) in apps/api/src/finance/payment-channel.service.ts:225", "shortDescription": {"text": "Commented-code block (7 lines) in apps/api/src/finance/payment-channel.service.ts:225"}, "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-8d9a96385a426e45", "name": "Commented-code block (5 lines) in apps/api/src/finance/transactions.expense-receipt.spec.ts:144", "shortDescription": {"text": "Commented-code block (5 lines) in apps/api/src/finance/transactions.expense-receipt.spec.ts:144"}, "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-dcb1095595f2eade", "name": "Commented-code block (6 lines) in apps/api/src/finance/total-earned.integration.spec.ts:296", "shortDescription": {"text": "Commented-code block (6 lines) in apps/api/src/finance/total-earned.integration.spec.ts:296"}, "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-fcb9b71ec2607b3f", "name": "Commented-code block (5 lines) in apps/api/src/finance/transactions.get-summary.spec.ts:61", "shortDescription": {"text": "Commented-code block (5 lines) in apps/api/src/finance/transactions.get-summary.spec.ts:61"}, "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-c644bf3fe3ba8545", "name": "`fetch()` without try/.catch or AbortSignal \u2014 apps/api/src/finance/etherscan.service.ts:54", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/api/src/finance/etherscan.service.ts:54"}, "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-dd0171c8c8494d55", "name": "Commented-code block (5 lines) in apps/api/src/finance/transactions.service.ts:160", "shortDescription": {"text": "Commented-code block (5 lines) in apps/api/src/finance/transactions.service.ts:160"}, "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-6b45b03c493711c7", "name": "Commented-code block (6 lines) in apps/api/src/database/schema.ts:70", "shortDescription": {"text": "Commented-code block (6 lines) in apps/api/src/database/schema.ts: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-c5c227cbdc1aa0dc", "name": "Commented-code block (7 lines) in apps/api/src/database/seed.ts:635", "shortDescription": {"text": "Commented-code block (7 lines) in apps/api/src/database/seed.ts:635"}, "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-e9ee6feb14c053d2", "name": "Commented-code block (7 lines) in apps/api/src/onboarding/onboarding-contract.integration.spec.ts:130", "shortDescription": {"text": "Commented-code block (7 lines) in apps/api/src/onboarding/onboarding-contract.integration.spec.ts:130"}, "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-118d343f63fab04e", "name": "Commented-code block (6 lines) in apps/api/src/onboarding/onboarding.service.ts:59", "shortDescription": {"text": "Commented-code block (6 lines) in apps/api/src/onboarding/onboarding.service.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-12c577f07ead1eb4", "name": "Commented-code block (6 lines) in apps/api/src/onboarding/onboarding.service.spec.ts:289", "shortDescription": {"text": "Commented-code block (6 lines) in apps/api/src/onboarding/onboarding.service.spec.ts:289"}, "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-162d3ce057bc1b01", "name": "Commented-code block (5 lines) in apps/api/src/contracts/contract-filename.util.ts:21", "shortDescription": {"text": "Commented-code block (5 lines) in apps/api/src/contracts/contract-filename.util.ts:21"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-74e7e5df7093210b", "name": "Commented-code block (6 lines) in apps/api/src/contracts/contract-rendering.ts:178", "shortDescription": {"text": "Commented-code block (6 lines) in apps/api/src/contracts/contract-rendering.ts:178"}, "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-642ba71f5621c960", "name": "Commented-code block (5 lines) in apps/api/src/contracts/contract-controllers.integration.spec.ts:89", "shortDescription": {"text": "Commented-code block (5 lines) in apps/api/src/contracts/contract-controllers.integration.spec.ts:89"}, "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-f6781682da3504c0", "name": "Commented-code block (5 lines) in apps/api/src/contracts/employee-contracts.service.ts:181", "shortDescription": {"text": "Commented-code block (5 lines) in apps/api/src/contracts/employee-contracts.service.ts:181"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-8b6a85cfdeb67489", "name": "Commented-code block (7 lines) in apps/api/src/contracts/contract-pdf.service.ts:270", "shortDescription": {"text": "Commented-code block (7 lines) in apps/api/src/contracts/contract-pdf.service.ts:270"}, "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-49983766afbad01e", "name": "Commented-code block (7 lines) in apps/api/src/contracts/signed-contracts.service.ts:83", "shortDescription": {"text": "Commented-code block (7 lines) in apps/api/src/contracts/signed-contracts.service.ts:83"}, "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-9ef928f6709798a6", "name": "Commented-code block (15 lines) in apps/api/src/documents/documents-unified.integration.spec.ts:704", "shortDescription": {"text": "Commented-code block (15 lines) in apps/api/src/documents/documents-unified.integration.spec.ts:704"}, "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-f51289b55022f275", "name": "Commented-code block (5 lines) in apps/api/src/documents/documents.service.ts:106", "shortDescription": {"text": "Commented-code block (5 lines) in apps/api/src/documents/documents.service.ts:106"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-47856cab2147910e", "name": "Commented-code block (6 lines) in apps/api/src/documents/compression.service.spec.ts:132", "shortDescription": {"text": "Commented-code block (6 lines) in apps/api/src/documents/compression.service.spec.ts:132"}, "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-442a168ab613d5e9", "name": "Commented-code block (6 lines) in apps/api/src/documents/documents.service.spec.ts:160", "shortDescription": {"text": "Commented-code block (6 lines) in apps/api/src/documents/documents.service.spec.ts:160"}, "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-6dd614c6e085a45f", "name": "Commented-code block (6 lines) in apps/api/src/interviews/interviews-rbac.integration.spec.ts:101", "shortDescription": {"text": "Commented-code block (6 lines) in apps/api/src/interviews/interviews-rbac.integration.spec.ts:101"}, "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-cee475931be1592f", "name": "Commented-code block (6 lines) in apps/api/src/interviews/hr-summary.integration.spec.ts:341", "shortDescription": {"text": "Commented-code block (6 lines) in apps/api/src/interviews/hr-summary.integration.spec.ts:341"}, "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-146147ce29ba21a7", "name": "Commented-code block (8 lines) in apps/api/src/credentials/credentials.service.ts:287", "shortDescription": {"text": "Commented-code block (8 lines) in apps/api/src/credentials/credentials.service.ts:287"}, "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-12e999ac61798a6b", "name": "Commented-code block (5 lines) in apps/api/src/credentials/user-credentials.rbac.integration.spec.ts:591", "shortDescription": {"text": "Commented-code block (5 lines) in apps/api/src/credentials/user-credentials.rbac.integration.spec.ts:591"}, "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-628b4ad1d8b9b8a3", "name": "Commented-code block (5 lines) in apps/api/src/invoices/invoice-pdf.service.ts:205", "shortDescription": {"text": "Commented-code block (5 lines) in apps/api/src/invoices/invoice-pdf.service.ts:205"}, "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-ee8ecdb3d11eb218", "name": "Commented-code block (9 lines) in apps/api/src/invoices/invoice-pdf.service.spec.ts:31", "shortDescription": {"text": "Commented-code block (9 lines) in apps/api/src/invoices/invoice-pdf.service.spec.ts: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-7bdc3d3d98ca8b49", "name": "Commented-code block (7 lines) in apps/api/src/invoices/invoices.service.spec.ts:111", "shortDescription": {"text": "Commented-code block (7 lines) in apps/api/src/invoices/invoices.service.spec.ts:111"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-b5d902bb9537f5a8", "name": "Commented-code block (5 lines) in apps/api/src/invoices/invoices.service.ts:482", "shortDescription": {"text": "Commented-code block (5 lines) in apps/api/src/invoices/invoices.service.ts:482"}, "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-b3c2178ab3b5b45c", "name": "Commented-code block (5 lines) in apps/web/vite.config.ts:21", "shortDescription": {"text": "Commented-code block (5 lines) in apps/web/vite.config.ts:21"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-a1bc3371842b4938", "name": "`fetch()` without try/.catch or AbortSignal \u2014 apps/web/vite.config.ts:227", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/web/vite.config.ts:227"}, "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-185d7d8b5ee2d6ee", "name": "Commented-code block (10 lines) in apps/web/vitest.config.ts:42", "shortDescription": {"text": "Commented-code block (10 lines) in apps/web/vitest.config.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-a76c94fd55e9c7eb", "name": "Commented-code block (5 lines) in apps/web/app/client.tsx:6", "shortDescription": {"text": "Commented-code block (5 lines) in apps/web/app/client.tsx: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-5a54c893e6bc2f90", "name": "Commented-code block (5 lines) in apps/web/app/components/layout/notifications-bell.tsx:96", "shortDescription": {"text": "Commented-code block (5 lines) in apps/web/app/components/layout/notifications-bell.tsx:96"}, "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-1bdcebc8fe464c9c", "name": "Commented-code block (7 lines) in apps/web/app/components/users/UserDialog.tsx:173", "shortDescription": {"text": "Commented-code block (7 lines) in apps/web/app/components/users/UserDialog.tsx:173"}, "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-11f3b6509c7caaa3", "name": "Commented-code block (5 lines) in apps/web/app/components/users/__tests__/UserDialog.edit-prefill.test.tsx:46", "shortDescription": {"text": "Commented-code block (5 lines) in apps/web/app/components/users/__tests__/UserDialog.edit-prefill.test.tsx: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-9655fd5744905323", "name": "Commented-code block (5 lines) in apps/web/app/components/projects/__tests__/ProjectRow.test.tsx:134", "shortDescription": {"text": "Commented-code block (5 lines) in apps/web/app/components/projects/__tests__/ProjectRow.test.tsx: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-6a6dda79592fdea0", "name": "Commented-code block (9 lines) in apps/web/app/components/ui/crm-dialog.tsx:19", "shortDescription": {"text": "Commented-code block (9 lines) in apps/web/app/components/ui/crm-dialog.tsx: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-16587fbf1a6f6132", "name": "Commented-code block (13 lines) in apps/web/app/components/crm/nav-sidebar.tsx:40", "shortDescription": {"text": "Commented-code block (13 lines) in apps/web/app/components/crm/nav-sidebar.tsx:40"}, "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-d51ab9261d21ba05", "name": "Commented-code block (7 lines) in apps/web/app/components/invoices/invoice-detail-dialog.tsx:396", "shortDescription": {"text": "Commented-code block (7 lines) in apps/web/app/components/invoices/invoice-detail-dialog.tsx:396"}, "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-cac3f7b136377d01", "name": "Commented-code block (5 lines) in apps/web/app/components/invoices/__tests__/invoice-detail-dialog.test.tsx:180", "shortDescription": {"text": "Commented-code block (5 lines) in apps/web/app/components/invoices/__tests__/invoice-detail-dialog.test.tsx:180"}, "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-ad5ab58fef09a57c", "name": "Commented-code block (5 lines) in apps/web/app/components/user-profile/UserProfileShell.tsx:95", "shortDescription": {"text": "Commented-code block (5 lines) in apps/web/app/components/user-profile/UserProfileShell.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-0e69e2e8c6aa6294", "name": "Commented-code block (6 lines) in apps/web/app/components/user-profile/contract/ContractFillForm.tsx:144", "shortDescription": {"text": "Commented-code block (6 lines) in apps/web/app/components/user-profile/contract/ContractFillForm.tsx:144"}, "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-46cdc94566968e10", "name": "Commented-code block (6 lines) in apps/web/app/components/user-profile/contract/__tests__/ContractPdfPreview.test.tsx:15", "shortDescription": {"text": "Commented-code block (6 lines) in apps/web/app/components/user-profile/contract/__tests__/ContractPdfPreview.test.tsx:15"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-8e9c25e7a0ce1020", "name": "Commented-code block (5 lines) in apps/web/app/components/user-profile/tabs/FinanceTab.tsx:49", "shortDescription": {"text": "Commented-code block (5 lines) in apps/web/app/components/user-profile/tabs/FinanceTab.tsx:49"}, "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-e139dc8bd023debc", "name": "Commented-code block (7 lines) in apps/web/app/components/user-profile/tabs/__tests__/FinanceTab.total-earned.test.tsx:4", "shortDescription": {"text": "Commented-code block (7 lines) in apps/web/app/components/user-profile/tabs/__tests__/FinanceTab.total-earned.test.tsx:40"}, "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-b1f68953ca9bf616", "name": "Commented-code block (8 lines) in apps/web/app/lib/route-access.ts:47", "shortDescription": {"text": "Commented-code block (8 lines) in apps/web/app/lib/route-access.ts:47"}, "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-e66121a2348cba79", "name": "Commented-code block (8 lines) in apps/web/app/lib/route-access.spec.ts:212", "shortDescription": {"text": "Commented-code block (8 lines) in apps/web/app/lib/route-access.spec.ts:212"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-5fc86d01a28429f0", "name": "Commented-code block (5 lines) in apps/web/app/lib/persister.spec.ts:15", "shortDescription": {"text": "Commented-code block (5 lines) in apps/web/app/lib/persister.spec.ts:15"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-c23846940b9df5d0", "name": "`fetch()` without try/.catch or AbortSignal \u2014 apps/web/app/routes/invoice.v.$transactionId.tsx:99", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/web/app/routes/invoice.v.$transactionId.tsx:99"}, "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-46bf43204cf10850", "name": "Commented-code block (8 lines) in apps/web/app/routes/__root.tsx:16", "shortDescription": {"text": "Commented-code block (8 lines) in apps/web/app/routes/__root.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-c6a4177c60a2890f", "name": "Commented-code block (7 lines) in apps/web/app/routes/crm/stats.tsx:570", "shortDescription": {"text": "Commented-code block (7 lines) in apps/web/app/routes/crm/stats.tsx:570"}, "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-92c51b18bb5873b5", "name": "Commented-code block (5 lines) in apps/web/app/routes/crm/project.tsx:236", "shortDescription": {"text": "Commented-code block (5 lines) in apps/web/app/routes/crm/project.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-30e719a299c98d6b", "name": "Commented-code block (5 lines) in apps/web/app/routes/crm/route.tsx:82", "shortDescription": {"text": "Commented-code block (5 lines) in apps/web/app/routes/crm/route.tsx:82"}, "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-2f6601c693cff154", "name": "Commented-code block (7 lines) in apps/web/app/routes/crm/documents.tsx:98", "shortDescription": {"text": "Commented-code block (7 lines) in apps/web/app/routes/crm/documents.tsx:98"}, "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-343bd0d6752e9744", "name": "Commented-code block (7 lines) in apps/web/app/routes/crm/projects/index.tsx:159", "shortDescription": {"text": "Commented-code block (7 lines) in apps/web/app/routes/crm/projects/index.tsx:159"}, "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-acf8b906402aff01", "name": "Commented-code block (6 lines) in apps/web/app/routes/crm/projects/$projectId.tsx:481", "shortDescription": {"text": "Commented-code block (6 lines) in apps/web/app/routes/crm/projects/$projectId.tsx:481"}, "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-2d8a229470849f7f", "name": "Commented-code block (5 lines) in apps/web/app/routes/crm/team/$teamId.tsx:221", "shortDescription": {"text": "Commented-code block (5 lines) in apps/web/app/routes/crm/team/$teamId.tsx:221"}, "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-adf37271c7c4b616", "name": "Commented-code block (5 lines) in apps/web/app/routes/crm/finance/__tests__/sort.test.ts:30", "shortDescription": {"text": "Commented-code block (5 lines) in apps/web/app/routes/crm/finance/__tests__/sort.test.ts:30"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-7914f160de369435", "name": "Commented-code block (5 lines) in apps/web/app/routes/crm/finance/components/MyProjectShares.tsx:67", "shortDescription": {"text": "Commented-code block (5 lines) in apps/web/app/routes/crm/finance/components/MyProjectShares.tsx:67"}, "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-2bb471afbb99d4a8", "name": "Commented-code block (5 lines) in apps/web/app/routes/crm/finance/components/TransactionRow.tsx:229", "shortDescription": {"text": "Commented-code block (5 lines) in apps/web/app/routes/crm/finance/components/TransactionRow.tsx:229"}, "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-ccdacb9f3a549ca3", "name": "Commented-code block (5 lines) in apps/web/app/routes/crm/finance/components/dialogs/PayoutDetailDialog.tsx:22", "shortDescription": {"text": "Commented-code block (5 lines) in apps/web/app/routes/crm/finance/components/dialogs/PayoutDetailDialog.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-4b7cf62bb4b1b512", "name": "Commented-code block (5 lines) in apps/web/app/routes/crm/finance/components/dialogs/CreateTransactionDialog.tsx:86", "shortDescription": {"text": "Commented-code block (5 lines) in apps/web/app/routes/crm/finance/components/dialogs/CreateTransactionDialog.tsx:86"}, "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-9b656ec00c644779", "name": "Commented-code block (5 lines) in apps/web/app/routes/crm/onboarding/index.tsx:39", "shortDescription": {"text": "Commented-code block (5 lines) in apps/web/app/routes/crm/onboarding/index.tsx:39"}, "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-a5cab266edba1f2e", "name": "Commented-code block (5 lines) in apps/web/app/routes/crm_/login.tsx:33", "shortDescription": {"text": "Commented-code block (5 lines) in apps/web/app/routes/crm_/login.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-a4e925f5ab8eecd4", "name": "Commented-code block (7 lines) in apps/web/app/hooks/use-notifications-api.ts:110", "shortDescription": {"text": "Commented-code block (7 lines) in apps/web/app/hooks/use-notifications-api.ts:110"}, "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-be52480f177ed102", "name": "`fetch()` without try/.catch or AbortSignal \u2014 apps/web/app/hooks/use-document-blob.ts:6", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/web/app/hooks/use-document-blob.ts:6"}, "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-99647afb349e52e2", "name": "Commented-code block (5 lines) in apps/web/app/context/auth.tsx:38", "shortDescription": {"text": "Commented-code block (5 lines) in apps/web/app/context/auth.tsx:38"}, "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-972ab5308aad2dd8", "name": "Commented-code block (5 lines) in apps/web/app/context/auth.spec.tsx:57", "shortDescription": {"text": "Commented-code block (5 lines) in apps/web/app/context/auth.spec.tsx:57"}, "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-a6450f164af9ae38", "name": "Commented-code block (8 lines) in apps/e2e/playwright.config.ts:36", "shortDescription": {"text": "Commented-code block (8 lines) in apps/e2e/playwright.config.ts:36"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-ea307e9ff6346563", "name": "Commented-code block (5 lines) in apps/e2e/tests/invoice-aggregate.spec.ts:107", "shortDescription": {"text": "Commented-code block (5 lines) in apps/e2e/tests/invoice-aggregate.spec.ts:107"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-153a2b3096fc7c4a", "name": "Commented-code block (6 lines) in apps/e2e/tests/ui-invariants-pr56.spec.ts:125", "shortDescription": {"text": "Commented-code block (6 lines) in apps/e2e/tests/ui-invariants-pr56.spec.ts:125"}, "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-651f29d6fcfea56c", "name": "Commented-code block (6 lines) in apps/e2e/tests/projects-senior-share-override.spec.ts:221", "shortDescription": {"text": "Commented-code block (6 lines) in apps/e2e/tests/projects-senior-share-override.spec.ts:221"}, "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-a4b4b7d8350b80ce", "name": "Commented-code block (6 lines) in apps/e2e/tests/senior-project-distribution-regression.spec.ts:92", "shortDescription": {"text": "Commented-code block (6 lines) in apps/e2e/tests/senior-project-distribution-regression.spec.ts:92"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-dd0b5b57231e75d4", "name": "Commented-code block (5 lines) in apps/e2e/tests/drop-findings-pr198.spec.ts:48", "shortDescription": {"text": "Commented-code block (5 lines) in apps/e2e/tests/drop-findings-pr198.spec.ts:48"}, "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-09a39433f784a9d9", "name": "Commented-code block (7 lines) in apps/e2e/tests/drop-distribution.spec.ts:101", "shortDescription": {"text": "Commented-code block (7 lines) in apps/e2e/tests/drop-distribution.spec.ts:101"}, "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-940162f17e9f814c", "name": "Commented-code block (5 lines) in apps/e2e/tests/users.spec.ts:425", "shortDescription": {"text": "Commented-code block (5 lines) in apps/e2e/tests/users.spec.ts:425"}, "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-fb1d0397e224e17e", "name": "Commented-code block (5 lines) in apps/e2e/tests/fixtures.ts:525", "shortDescription": {"text": "Commented-code block (5 lines) in apps/e2e/tests/fixtures.ts:525"}, "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-427f0f501ce64bfa", "name": "Commented-code block (6 lines) in apps/e2e/tests/finance.spec.ts:640", "shortDescription": {"text": "Commented-code block (6 lines) in apps/e2e/tests/finance.spec.ts:640"}, "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-4bc2c939c5d429e3", "name": "Commented-code block (6 lines) in apps/e2e/tests/drop-backend-rbac-api.spec.ts:111", "shortDescription": {"text": "Commented-code block (6 lines) in apps/e2e/tests/drop-backend-rbac-api.spec.ts:111"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-9b57527fc49fd1a2", "name": "Commented-code block (7 lines) in apps/e2e/tests/auth.spec.ts:37", "shortDescription": {"text": "Commented-code block (7 lines) in apps/e2e/tests/auth.spec.ts:37"}, "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-8f1b8fc06e7e57fb", "name": "Commented-code block (5 lines) in apps/e2e/tests/drop-senior-readonly.spec.ts:59", "shortDescription": {"text": "Commented-code block (5 lines) in apps/e2e/tests/drop-senior-readonly.spec.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-14dbf156a5d73bf4", "name": "Commented-code block (5 lines) in apps/e2e/tests/polish-regressions.spec.ts:161", "shortDescription": {"text": "Commented-code block (5 lines) in apps/e2e/tests/polish-regressions.spec.ts:161"}, "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-dbdfe13b643e5381", "name": "Commented-code block (5 lines) in apps/e2e/tests/projects.spec.ts:154", "shortDescription": {"text": "Commented-code block (5 lines) in apps/e2e/tests/projects.spec.ts:154"}, "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-0e1c609edfdaaf3a", "name": "Commented-code block (6 lines) in apps/e2e/tests/drop-rbac.spec.ts:83", "shortDescription": {"text": "Commented-code block (6 lines) in apps/e2e/tests/drop-rbac.spec.ts:83"}, "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-2e12fb20700205cf", "name": "Commented-code block (7 lines) in apps/e2e/tests/profile-self-edit.spec.ts:145", "shortDescription": {"text": "Commented-code block (7 lines) in apps/e2e/tests/profile-self-edit.spec.ts: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-ae0ad3d7db2afb29", "name": "Commented-code block (8 lines) in apps/e2e/tests/finance-senior-flow.spec.ts:23", "shortDescription": {"text": "Commented-code block (8 lines) in apps/e2e/tests/finance-senior-flow.spec.ts:23"}, "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-153fa6490beeb4ce", "name": "Commented-code block (5 lines) in apps/e2e/tests/drop-junior-rbac.spec.ts:51", "shortDescription": {"text": "Commented-code block (5 lines) in apps/e2e/tests/drop-junior-rbac.spec.ts:51"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-ee431dd861723cba", "name": "Commented-code block (5 lines) in apps/e2e/tests/team.spec.ts:462", "shortDescription": {"text": "Commented-code block (5 lines) in apps/e2e/tests/team.spec.ts:462"}, "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-dad2b4318e9b03f5", "name": "Commented-code block (5 lines) in apps/e2e/tests/drop-add-senior.spec.ts:116", "shortDescription": {"text": "Commented-code block (5 lines) in apps/e2e/tests/drop-add-senior.spec.ts:116"}, "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-e008a0a9abee417d", "name": "Commented-code block (5 lines) in apps/e2e/tests/onboarding-flow.spec.ts:437", "shortDescription": {"text": "Commented-code block (5 lines) in apps/e2e/tests/onboarding-flow.spec.ts:437"}, "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-ed93eea327541cd4", "name": "Commented-code block (5 lines) in apps/e2e/tests/drop-confirm-payout.spec.ts:96", "shortDescription": {"text": "Commented-code block (5 lines) in apps/e2e/tests/drop-confirm-payout.spec.ts:96"}, "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-35e32edb9e976922", "name": "Commented-code block (5 lines) in apps/e2e/tests/persist-query.spec.ts:73", "shortDescription": {"text": "Commented-code block (5 lines) in apps/e2e/tests/persist-query.spec.ts:73"}, "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-430aa284d1f6ac5d", "name": "Commented-code block (7 lines) in apps/e2e/tests/interviews.spec.ts:3", "shortDescription": {"text": "Commented-code block (7 lines) in apps/e2e/tests/interviews.spec.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-f993ae369b661818", "name": "Commented-code block (6 lines) in apps/e2e/tests/finance-senior-payment-flow.spec.ts:30", "shortDescription": {"text": "Commented-code block (6 lines) in apps/e2e/tests/finance-senior-payment-flow.spec.ts:30"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-1833dce32fe89e05", "name": "Commented-code block (7 lines) in apps/e2e/tests/rbac-senior-junior.spec.ts:287", "shortDescription": {"text": "Commented-code block (7 lines) in apps/e2e/tests/rbac-senior-junior.spec.ts:287"}, "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-1b74d28e3bd5a34c", "name": "Commented-code block (5 lines) in apps/e2e/tests/onboarding-regression-pr110.spec.ts:358", "shortDescription": {"text": "Commented-code block (5 lines) in apps/e2e/tests/onboarding-regression-pr110.spec.ts:358"}, "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-c3cd1d63fe31eea5", "name": "Commented-code block (5 lines) in apps/e2e/tests/navigation.spec.ts:181", "shortDescription": {"text": "Commented-code block (5 lines) in apps/e2e/tests/navigation.spec.ts:181"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-75f8d66c996f5f66", "name": "Commented-code block (7 lines) in apps/e2e/tests/cache/anti-stale.spec.ts:111", "shortDescription": {"text": "Commented-code block (7 lines) in apps/e2e/tests/cache/anti-stale.spec.ts:111"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-e4d7ec10b8a297bb", "name": "Commented-code block (5 lines) in apps/e2e/tests/cache/api-cache.spec.ts:118", "shortDescription": {"text": "Commented-code block (5 lines) in apps/e2e/tests/cache/api-cache.spec.ts:118"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-cee5b605a2e91d09", "name": "Commented-code block (8 lines) in apps/e2e/tests/cache/no-store.spec.ts:78", "shortDescription": {"text": "Commented-code block (8 lines) in apps/e2e/tests/cache/no-store.spec.ts:78"}, "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-f921a89acee15a18", "name": "Commented-code block (5 lines) in apps/e2e/tests/crm/documents-status-badges.spec.ts:307", "shortDescription": {"text": "Commented-code block (5 lines) in apps/e2e/tests/crm/documents-status-badges.spec.ts:307"}, "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-b4e48ff9afff3a33", "name": "Commented-code block (6 lines) in apps/e2e/tests/crm/users/users-refactor.spec.ts:67", "shortDescription": {"text": "Commented-code block (6 lines) in apps/e2e/tests/crm/users/users-refactor.spec.ts:67"}, "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-4a3d996b458a2975", "name": "Commented-code block (11 lines) in packages/shared/src/schemas/interviews.ts:82", "shortDescription": {"text": "Commented-code block (11 lines) in packages/shared/src/schemas/interviews.ts:82"}, "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-1c6f82420f6507e5", "name": "Commented-code block (5 lines) in packages/shared/src/schemas/credentials.ts:6", "shortDescription": {"text": "Commented-code block (5 lines) in packages/shared/src/schemas/credentials.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-7809948297a56341", "name": "Commented-code block (6 lines) in packages/shared/src/schemas/finance.ts:21", "shortDescription": {"text": "Commented-code block (6 lines) in packages/shared/src/schemas/finance.ts:21"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-5662602fcac15464", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/shared/src/schemas/projects.ts:134", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/shared/src/schemas/projects.ts:134"}, "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-8e047ab7af03962f", "name": "7 env vars used in code but missing from .env.example", "shortDescription": {"text": "7 env vars used in code but missing from .env.example"}, "fullDescription": {"text": "Drift between code and config docs. The first few: `CLAUDE_PROJECT_DIR`, `CLV2_HOMUNCULUS_DIR`, `CLV2_NO_PROJECT`, `DEV`, `MODE`, `VITE_BUILD_VERSION`, `XDG_DATA_HOME`. 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}}, {"id": "scanner-0daa06f60ffb5593", "name": "Dangling fetch: POST https://oauth2.googleapis.com/token (apps/api/src/auth/auth.service.ts:43)", "shortDescription": {"text": "Dangling fetch: POST https://oauth2.googleapis.com/token (apps/api/src/auth/auth.service.ts:43)"}, "fullDescription": {"text": "`apps/api/src/auth/auth.service.ts:43` calls `POST https://oauth2.googleapis.com/token` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/oauth2.googleapis.com/token`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-28eee9f8318139ed", "name": "Dangling fetch: GET https://www.googleapis.com/oauth2/v2/userinfo (apps/api/src/auth/auth.service.ts:61)", "shortDescription": {"text": "Dangling fetch: GET https://www.googleapis.com/oauth2/v2/userinfo (apps/api/src/auth/auth.service.ts:61)"}, "fullDescription": {"text": "`apps/api/src/auth/auth.service.ts:61` calls `GET https://www.googleapis.com/oauth2/v2/userinfo` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/www.googleapis.com/oauth2/v2/userinfo`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-26c5cf3c73f2f54a", "name": "Unused endpoint: POST /users/drops", "shortDescription": {"text": "Unused endpoint: POST /users/drops"}, "fullDescription": {"text": "`apps/api/src/users/users.controller.ts` declares `POST /users/drops` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-22eb536118d1c477", "name": "Unused endpoint: DELETE /users/drops/:id", "shortDescription": {"text": "Unused endpoint: DELETE /users/drops/:id"}, "fullDescription": {"text": "`apps/api/src/users/users.controller.ts` declares `DELETE /users/drops/:id` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-c0f141bc5235464b", "name": "Unused endpoint: POST /users/me/rejoin-team", "shortDescription": {"text": "Unused endpoint: POST /users/me/rejoin-team"}, "fullDescription": {"text": "`apps/api/src/users/users.controller.ts` declares `POST /users/me/rejoin-team` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-a8b657222dd85be2", "name": "Unused endpoint: GET /users/me", "shortDescription": {"text": "Unused endpoint: GET /users/me"}, "fullDescription": {"text": "`apps/api/src/users/users.controller.ts` declares `GET /users/me` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-9f06644688cd47af", "name": "Unused endpoint: PATCH /users/me", "shortDescription": {"text": "Unused endpoint: PATCH /users/me"}, "fullDescription": {"text": "`apps/api/src/users/users.controller.ts` declares `PATCH /users/me` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-959494bdf6e90bd3", "name": "Unused endpoint: PATCH /users/me/requisites", "shortDescription": {"text": "Unused endpoint: PATCH /users/me/requisites"}, "fullDescription": {"text": "`apps/api/src/users/users.controller.ts` declares `PATCH /users/me/requisites` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-41aa9e92da3f14ad", "name": "Unused endpoint: GET /users/:id", "shortDescription": {"text": "Unused endpoint: GET /users/:id"}, "fullDescription": {"text": "`apps/api/src/users/users.controller.ts` declares `GET /users/:id` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-ceda81a091c44000", "name": "Unused endpoint: GET /users/:id/team", "shortDescription": {"text": "Unused endpoint: GET /users/:id/team"}, "fullDescription": {"text": "`apps/api/src/users/users.controller.ts` declares `GET /users/:id/team` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-f2ad066aed77402c", "name": "Unused endpoint: GET /users/:id/audit-log", "shortDescription": {"text": "Unused endpoint: GET /users/:id/audit-log"}, "fullDescription": {"text": "`apps/api/src/users/users.controller.ts` declares `GET /users/:id/audit-log` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-ff077de400322c02", "name": "Unused endpoint: GET /users/:id/transactions", "shortDescription": {"text": "Unused endpoint: GET /users/:id/transactions"}, "fullDescription": {"text": "`apps/api/src/users/users.controller.ts` declares `GET /users/:id/transactions` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-a2da8d08e12b122c", "name": "Unused endpoint: PATCH /users/:id", "shortDescription": {"text": "Unused endpoint: PATCH /users/:id"}, "fullDescription": {"text": "`apps/api/src/users/users.controller.ts` declares `PATCH /users/:id` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-01b5d572dd285e2c", "name": "Unused endpoint: PATCH /users/:id/role", "shortDescription": {"text": "Unused endpoint: PATCH /users/:id/role"}, "fullDescription": {"text": "`apps/api/src/users/users.controller.ts` declares `PATCH /users/:id/role` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-3de9af5decde2b66", "name": "Unused endpoint: PATCH /users/:id/salary", "shortDescription": {"text": "Unused endpoint: PATCH /users/:id/salary"}, "fullDescription": {"text": "`apps/api/src/users/users.controller.ts` declares `PATCH /users/:id/salary` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-ad2c1e8c8a2a8839", "name": "Unused endpoint: PATCH /users/:id/requisites", "shortDescription": {"text": "Unused endpoint: PATCH /users/:id/requisites"}, "fullDescription": {"text": "`apps/api/src/users/users.controller.ts` declares `PATCH /users/:id/requisites` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-0a4ed33359db23dc", "name": "Unused endpoint: PATCH /users/:id/note", "shortDescription": {"text": "Unused endpoint: PATCH /users/:id/note"}, "fullDescription": {"text": "`apps/api/src/users/users.controller.ts` declares `PATCH /users/:id/note` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-79406b9fd85263bf", "name": "Unused endpoint: DELETE /users/:id", "shortDescription": {"text": "Unused endpoint: DELETE /users/:id"}, "fullDescription": {"text": "`apps/api/src/users/users.controller.ts` declares `DELETE /users/:id` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-3c198621330c6b6e", "name": "Unused endpoint: POST /users/:id/unarchive", "shortDescription": {"text": "Unused endpoint: POST /users/:id/unarchive"}, "fullDescription": {"text": "`apps/api/src/users/users.controller.ts` declares `POST /users/:id/unarchive` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-025e1740087c7318", "name": "Unused endpoint: GET /users/:id/archive-impact", "shortDescription": {"text": "Unused endpoint: GET /users/:id/archive-impact"}, "fullDescription": {"text": "`apps/api/src/users/users.controller.ts` declares `GET /users/:id/archive-impact` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-9dd01ebbeaf517b7", "name": "Unused endpoint: GET /users/me/salary-meta", "shortDescription": {"text": "Unused endpoint: GET /users/me/salary-meta"}, "fullDescription": {"text": "`apps/api/src/users/users.controller.ts` declares `GET /users/me/salary-meta` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-c9a7c59a4096ef36", "name": "Unused endpoint: PATCH /notifications/read-all", "shortDescription": {"text": "Unused endpoint: PATCH /notifications/read-all"}, "fullDescription": {"text": "`apps/api/src/notifications/notifications.controller.ts` declares `PATCH /notifications/read-all` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-9eec0d6a608d78c2", "name": "Unused endpoint: PATCH /notifications/:id/read", "shortDescription": {"text": "Unused endpoint: PATCH /notifications/:id/read"}, "fullDescription": {"text": "`apps/api/src/notifications/notifications.controller.ts` declares `PATCH /notifications/:id/read` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-b474d0720252b2fc", "name": "Unused endpoint: DELETE /notifications/:id", "shortDescription": {"text": "Unused endpoint: DELETE /notifications/:id"}, "fullDescription": {"text": "`apps/api/src/notifications/notifications.controller.ts` declares `DELETE /notifications/:id` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-2e9f0c712241895d", "name": "Unused endpoint: GET /auth/google", "shortDescription": {"text": "Unused endpoint: GET /auth/google"}, "fullDescription": {"text": "`apps/api/src/auth/auth.controller.ts` declares `GET /auth/google` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-392dcbd9c0e4ed85", "name": "Unused endpoint: GET /auth/google/callback", "shortDescription": {"text": "Unused endpoint: GET /auth/google/callback"}, "fullDescription": {"text": "`apps/api/src/auth/auth.controller.ts` declares `GET /auth/google/callback` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-ac42422b23e45104", "name": "Unused endpoint: GET /auth/me", "shortDescription": {"text": "Unused endpoint: GET /auth/me"}, "fullDescription": {"text": "`apps/api/src/auth/auth.controller.ts` declares `GET /auth/me` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-01412f891efb9a85", "name": "Unused endpoint: POST /auth/google/one-tap", "shortDescription": {"text": "Unused endpoint: POST /auth/google/one-tap"}, "fullDescription": {"text": "`apps/api/src/auth/auth.controller.ts` declares `POST /auth/google/one-tap` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-1c702f92b682cca1", "name": "Unused endpoint: GET /auth/logout", "shortDescription": {"text": "Unused endpoint: GET /auth/logout"}, "fullDescription": {"text": "`apps/api/src/auth/auth.controller.ts` declares `GET /auth/logout` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-b2d21770371f71a3", "name": "Unused endpoint: POST /auth/dev-login", "shortDescription": {"text": "Unused endpoint: POST /auth/dev-login"}, "fullDescription": {"text": "`apps/api/src/auth/auth.controller.ts` declares `POST /auth/dev-login` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-cdcec0c7af38dbaa", "name": "Unused endpoint: GET /projects/:id", "shortDescription": {"text": "Unused endpoint: GET /projects/:id"}, "fullDescription": {"text": "`apps/api/src/projects/projects.controller.ts` declares `GET /projects/:id` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-ac3dac62b2af482e", "name": "Unused endpoint: GET /projects/drop/me", "shortDescription": {"text": "Unused endpoint: GET /projects/drop/me"}, "fullDescription": {"text": "`apps/api/src/projects/projects.controller.ts` declares `GET /projects/drop/me` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-6984a16bee78bd37", "name": "Unused endpoint: PATCH /projects/:id", "shortDescription": {"text": "Unused endpoint: PATCH /projects/:id"}, "fullDescription": {"text": "`apps/api/src/projects/projects.controller.ts` declares `PATCH /projects/:id` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-bd53fc7ac577a314", "name": "Unused endpoint: DELETE /projects/:id", "shortDescription": {"text": "Unused endpoint: DELETE /projects/:id"}, "fullDescription": {"text": "`apps/api/src/projects/projects.controller.ts` declares `DELETE /projects/:id` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-8c0cfab63f43d754", "name": "Unused endpoint: POST /projects/:id/unarchive", "shortDescription": {"text": "Unused endpoint: POST /projects/:id/unarchive"}, "fullDescription": {"text": "`apps/api/src/projects/projects.controller.ts` declares `POST /projects/:id/unarchive` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-4bc218bc75d14073", "name": "Unused endpoint: GET /projects/:id/archive-impact", "shortDescription": {"text": "Unused endpoint: GET /projects/:id/archive-impact"}, "fullDescription": {"text": "`apps/api/src/projects/projects.controller.ts` declares `GET /projects/:id/archive-impact` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-76fc9912b7fc1e8e", "name": "Unused endpoint: GET /projects/:id/audit-log", "shortDescription": {"text": "Unused endpoint: GET /projects/:id/audit-log"}, "fullDescription": {"text": "`apps/api/src/projects/projects.controller.ts` declares `GET /projects/:id/audit-log` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-7191452f46f60a88", "name": "Unused endpoint: POST /projects/:id/members", "shortDescription": {"text": "Unused endpoint: POST /projects/:id/members"}, "fullDescription": {"text": "`apps/api/src/projects/projects.controller.ts` declares `POST /projects/:id/members` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-b6a07214a23957cd", "name": "Unused endpoint: DELETE /projects/:id/members/:userId", "shortDescription": {"text": "Unused endpoint: DELETE /projects/:id/members/:userId"}, "fullDescription": {"text": "`apps/api/src/projects/projects.controller.ts` declares `DELETE /projects/:id/members/:userId` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-4957fc4e3dddab0d", "name": "Unused endpoint: GET /projects/:id/hr-contact", "shortDescription": {"text": "Unused endpoint: GET /projects/:id/hr-contact"}, "fullDescription": {"text": "`apps/api/src/projects/projects.controller.ts` declares `GET /projects/:id/hr-contact` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-8e3ed5c1cc2fad0f", "name": "Unused endpoint: GET /teams/:id", "shortDescription": {"text": "Unused endpoint: GET /teams/:id"}, "fullDescription": {"text": "`apps/api/src/teams/teams.controller.ts` declares `GET /teams/:id` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-f0e380da2d5548de", "name": "Unused endpoint: PATCH /teams/:id", "shortDescription": {"text": "Unused endpoint: PATCH /teams/:id"}, "fullDescription": {"text": "`apps/api/src/teams/teams.controller.ts` declares `PATCH /teams/:id` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-68c8af37a71ce000", "name": "Unused endpoint: DELETE /teams/:id", "shortDescription": {"text": "Unused endpoint: DELETE /teams/:id"}, "fullDescription": {"text": "`apps/api/src/teams/teams.controller.ts` declares `DELETE /teams/:id` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-3765700b64e089ef", "name": "Unused endpoint: POST /teams/:id/unarchive", "shortDescription": {"text": "Unused endpoint: POST /teams/:id/unarchive"}, "fullDescription": {"text": "`apps/api/src/teams/teams.controller.ts` declares `POST /teams/:id/unarchive` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-8d881891754fc48f", "name": "Unused endpoint: GET /teams/:id/archive-impact", "shortDescription": {"text": "Unused endpoint: GET /teams/:id/archive-impact"}, "fullDescription": {"text": "`apps/api/src/teams/teams.controller.ts` declares `GET /teams/:id/archive-impact` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-fcf614998e9eab5f", "name": "Unused endpoint: GET /teams/:id/audit-log", "shortDescription": {"text": "Unused endpoint: GET /teams/:id/audit-log"}, "fullDescription": {"text": "`apps/api/src/teams/teams.controller.ts` declares `GET /teams/:id/audit-log` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-c357aba880deae8e", "name": "Unused endpoint: POST /teams/:id/members", "shortDescription": {"text": "Unused endpoint: POST /teams/:id/members"}, "fullDescription": {"text": "`apps/api/src/teams/teams.controller.ts` declares `POST /teams/:id/members` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-e6c14b8e7ce9cf3b", "name": "Unused endpoint: DELETE /teams/:id/members/:userId", "shortDescription": {"text": "Unused endpoint: DELETE /teams/:id/members/:userId"}, "fullDescription": {"text": "`apps/api/src/teams/teams.controller.ts` declares `DELETE /teams/:id/members/:userId` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-ce5f7a40b5bc1015", "name": "Unused endpoint: POST /teams/:id/rotate-senior", "shortDescription": {"text": "Unused endpoint: POST /teams/:id/rotate-senior"}, "fullDescription": {"text": "`apps/api/src/teams/teams.controller.ts` declares `POST /teams/:id/rotate-senior` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-5d05e18955ac7d36", "name": "Unused endpoint: GET /projects/:projectId/legend", "shortDescription": {"text": "Unused endpoint: GET /projects/:projectId/legend"}, "fullDescription": {"text": "`apps/api/src/legends/legends.controller.ts` declares `GET /projects/:projectId/legend` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-479fc0cdcd639b7c", "name": "Unused endpoint: PUT /projects/:projectId/legend", "shortDescription": {"text": "Unused endpoint: PUT /projects/:projectId/legend"}, "fullDescription": {"text": "`apps/api/src/legends/legends.controller.ts` declares `PUT /projects/:projectId/legend` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-76ed71621abb7928", "name": "Unused endpoint: POST /projects/:projectId/legend/entries", "shortDescription": {"text": "Unused endpoint: POST /projects/:projectId/legend/entries"}, "fullDescription": {"text": "`apps/api/src/legends/legends.controller.ts` declares `POST /projects/:projectId/legend/entries` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}]}}, "automationDetails": {"id": "repobility/23168"}, "properties": {"repository": "yaremenko-maksym/CheekyCheeseIT_CRM", "repoUrl": "https://github.com/yaremenko-maksym/CheekyCheeseIT_CRM", "branch": "main"}, "results": [{"ruleId": "scanner-1688813a91ce7c72", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 apps/api/scripts/test-invoice-pdf.ts:63"}, "properties": {"repobilityId": "33c3633df00497f8", "scanner": "scanner-primary", "fingerprint": "1688813a91ce7c72", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-6b2d5e9bd64257a9", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 apps/api/scripts/generate-salary-invoice-samples.ts:165"}, "properties": {"repobilityId": "666e38a59928c7d0", "scanner": "scanner-primary", "fingerprint": "6b2d5e9bd64257a9", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-7a777fff53b21b06", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 apps/api/src/database/seed.ts:539"}, "properties": {"repobilityId": "e192eba4dec84cd4", "scanner": "scanner-primary", "fingerprint": "7a777fff53b21b06", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-183475f302264166", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/web/app/components/users/UserRow.tsx:107"}, "properties": {"repobilityId": "91218a70ad375b5c", "scanner": "scanner-primary", "fingerprint": "183475f302264166", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-7f0ce2d7a6b693bc", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/web/app/components/archive/CascadeUnarchiveModal.tsx:64"}, "properties": {"repobilityId": "2d2e89e61432e6ee", "scanner": "scanner-primary", "fingerprint": "7f0ce2d7a6b693bc", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-875bcb1281a682f9", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/web/app/components/projects/ProjectRow.tsx:95"}, "properties": {"repobilityId": "fefafc5f9b18c541", "scanner": "scanner-primary", "fingerprint": "875bcb1281a682f9", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-8f9a6e794d0eb94e", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/web/app/components/projects/ProjectCredentialsSection.tsx:346"}, "properties": {"repobilityId": "0e184505bfbd7989", "scanner": "scanner-primary", "fingerprint": "8f9a6e794d0eb94e", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-3e8c690b21f41914", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/web/app/components/ui/tech-autocomplete-input.tsx:218"}, "properties": {"repobilityId": "23db0d84cb8d8615", "scanner": "scanner-primary", "fingerprint": "3e8c690b21f41914", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-ea0fc266cea37dea", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/web/app/components/ui/date-picker.tsx:41"}, "properties": {"repobilityId": "ff742dd5f5a9c3c1", "scanner": "scanner-primary", "fingerprint": "ea0fc266cea37dea", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-ee7ce08573ca0468", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/web/app/components/onboarding/SignContractStep.tsx:246"}, "properties": {"repobilityId": "231780b748c2124d", "scanner": "scanner-primary", "fingerprint": "ee7ce08573ca0468", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-19c3530e2e9dd39a", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/web/app/components/user-profile/UserProfileHeader.tsx:73"}, "properties": {"repobilityId": "47e1688410ce462c", "scanner": "scanner-primary", "fingerprint": "19c3530e2e9dd39a", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-6ceb23115be67ec5", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/web/app/components/user-profile/ProfileCredentialsSection.tsx:126"}, "properties": {"repobilityId": "78caebec1d97c64b", "scanner": "scanner-primary", "fingerprint": "6ceb23115be67ec5", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-597b341c43e520ca", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/web/app/components/user-profile/tabs/FinanceTab.tsx:236"}, "properties": {"repobilityId": "e5b8146fccb410d8", "scanner": "scanner-primary", "fingerprint": "597b341c43e520ca", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-d4778cafc1b6a410", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/web/app/components/user-profile/tabs/OverviewTab.tsx:111"}, "properties": {"repobilityId": "4bac6685a317c581", "scanner": "scanner-primary", "fingerprint": "d4778cafc1b6a410", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-599fa90a479982be", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/web/app/components/user-profile/tabs/TeamTab.tsx:72"}, "properties": {"repobilityId": "d081f3c3a251e326", "scanner": "scanner-primary", "fingerprint": "599fa90a479982be", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-f327c41c2d97e3a0", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/web/app/components/user-profile/tabs/ProjectsTab.tsx:114"}, "properties": {"repobilityId": "75dbfd0a97a91bc6", "scanner": "scanner-primary", "fingerprint": "f327c41c2d97e3a0", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-5e5d802702f2a301", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/web/app/routes/crm/stats.tsx:253"}, "properties": {"repobilityId": "bee24172d548e898", "scanner": "scanner-primary", "fingerprint": "5e5d802702f2a301", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-4ee3443ea59a9c02", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/web/app/routes/crm/project.tsx:298"}, "properties": {"repobilityId": "67fad96b9c2b580f", "scanner": "scanner-primary", "fingerprint": "4ee3443ea59a9c02", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-8e5c4f491fce9555", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/web/app/routes/crm/routing/components/DropActionRequiredBlock.tsx:87"}, "properties": {"repobilityId": "a1ad6b231784802a", "scanner": "scanner-primary", "fingerprint": "8e5c4f491fce9555", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-c2ff85a6144a42fd", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/web/app/routes/crm/routing/components/DropProjectsList.tsx:59"}, "properties": {"repobilityId": "c0695e656305a335", "scanner": "scanner-primary", "fingerprint": "c2ff85a6144a42fd", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-f5b1ff02f0a13f8c", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/web/app/routes/crm/projects/$projectId.tsx:740"}, "properties": {"repobilityId": "2394b93ce1134ae6", "scanner": "scanner-primary", "fingerprint": "f5b1ff02f0a13f8c", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-0b76f66ee55a11ba", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/web/app/routes/crm/team/$teamId.tsx:626"}, "properties": {"repobilityId": "47d34c78c4c9b491", "scanner": "scanner-primary", "fingerprint": "0b76f66ee55a11ba", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-d2a0cef5de56ce99", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/web/app/routes/crm/team/index.tsx:743"}, "properties": {"repobilityId": "9da3b1c3f160a7bc", "scanner": "scanner-primary", "fingerprint": "d2a0cef5de56ce99", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-32a40442403f84a8", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/web/app/routes/crm/finance/components/MyProjectShares.tsx:94"}, "properties": {"repobilityId": "e814c4a06704e6f7", "scanner": "scanner-primary", "fingerprint": "32a40442403f84a8", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-dcf271b05e446fa7", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/web/app/routes/crm/finance/components/PendingSettlementSeniorCard.tsx:67"}, "properties": {"repobilityId": "50cd3001c4c73db3", "scanner": "scanner-primary", "fingerprint": "dcf271b05e446fa7", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-ebd09b8dc6baab7c", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/web/app/routes/crm/finance/components/TransactionRow.tsx:365"}, "properties": {"repobilityId": "ef26fbe9fcf551b6", "scanner": "scanner-primary", "fingerprint": "ebd09b8dc6baab7c", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-0d88814c1cca15b2", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/web/app/routes/crm/finance/components/ReceiptInput.tsx:248"}, "properties": {"repobilityId": "8d5ef12ed737c7c1", "scanner": "scanner-primary", "fingerprint": "0d88814c1cca15b2", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-1d031fb3f6b7224c", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/web/app/routes/crm/finance/components/DropFinancePage.tsx:399"}, "properties": {"repobilityId": "e9552d2853cfa890", "scanner": "scanner-primary", "fingerprint": "1d031fb3f6b7224c", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-f239920ecb410264", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/web/app/routes/crm/finance/components/PendingSettlementCompanyCard.tsx:99"}, "properties": {"repobilityId": "688d1dfd69a134ef", "scanner": "scanner-primary", "fingerprint": "f239920ecb410264", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-a688b5b53107472d", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/web/app/routes/crm/finance/components/dialogs/PayoutDialog.tsx:184"}, "properties": {"repobilityId": "f8843e295d87fe98", "scanner": "scanner-primary", "fingerprint": "a688b5b53107472d", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-79f9ad54cec2413c", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/web/app/routes/crm/finance/components/dialogs/PayoutDetailDialog.tsx:278"}, "properties": {"repobilityId": "29feeeb34f1030a6", "scanner": "scanner-primary", "fingerprint": "79f9ad54cec2413c", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-616d7a948c9bf98a", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/web/app/routes/crm/payments/initiate.$incomeId.tsx:125"}, "properties": {"repobilityId": "09ccec88a871dcab", "scanner": "scanner-primary", "fingerprint": "616d7a948c9bf98a", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-cdfc1fe21a2d64c4", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/web/app/routes/crm/interviews/components/KanbanColumn.tsx:40"}, "properties": {"repobilityId": "9b62c7dff669d3f9", "scanner": "scanner-primary", "fingerprint": "cdfc1fe21a2d64c4", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-19d22007fd6907b5", "level": "warning", "message": {"text": "Privileged port 11 in use"}, "properties": {"repobilityId": "5b3038c67fabb4c8", "scanner": "scanner-primary", "fingerprint": "19d22007fd6907b5", "layer": "network", "severity": "medium", "confidence": 1.0, "tags": ["security", "ports"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/ecc/continuous-learning-v2/agents/session-guardian.sh"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-aa5acaa49eb8315b", "level": "note", "message": {"text": "Containers defined but no K8s/orchestration manifest found"}, "properties": {"repobilityId": "b230ea9b68736081", "scanner": "scanner-primary", "fingerprint": "aa5acaa49eb8315b", "layer": "hardware", "severity": "low", "confidence": 1.0, "tags": ["coverage", "deployment"]}}, {"ruleId": "scanner-112a07063b5c615f", "level": "error", "message": {"text": "Possible secret in apps/api/src/credentials/user-credentials.rbac.integration.spec.ts"}, "properties": {"repobilityId": "861828d736af101c", "scanner": "scanner-primary", "fingerprint": "112a07063b5c615f", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/api/src/credentials/user-credentials.rbac.integration.spec.ts"}, "region": {"startLine": 64}}}]}, {"ruleId": "scanner-112a07063b5c615f", "level": "error", "message": {"text": "Possible secret in apps/api/src/credentials/user-credentials.rbac.integration.spec.ts"}, "properties": {"repobilityId": "861828d736af101c", "scanner": "scanner-primary", "fingerprint": "112a07063b5c615f", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/api/src/credentials/user-credentials.rbac.integration.spec.ts"}, "region": {"startLine": 617}}}]}, {"ruleId": "scanner-99290f0d7578680a", "level": "error", "message": {"text": "Possible secret in apps/api/src/credentials/credentials.rbac.integration.spec.ts"}, "properties": {"repobilityId": "5eb284eda2c980f0", "scanner": "scanner-primary", "fingerprint": "99290f0d7578680a", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/api/src/credentials/credentials.rbac.integration.spec.ts"}, "region": {"startLine": 70}}}]}, {"ruleId": "scanner-2e541d7f65efde23", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in hooks/README.md:239"}, "properties": {"repobilityId": "43c69317d1c8ce97", "scanner": "scanner-primary", "fingerprint": "2e541d7f65efde23", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "hooks/README.md"}, "region": {"startLine": 239}}}]}, {"ruleId": "scanner-ea906bdaacbab3e5", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in hooks/hooks.json:267"}, "properties": {"repobilityId": "6ccd420c367f4bba", "scanner": "scanner-primary", "fingerprint": "ea906bdaacbab3e5", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "hooks/hooks.json"}, "region": {"startLine": 267}}}]}, {"ruleId": "scanner-f367ef60175e8919", "level": "error", "message": {"text": "Insecure pattern 'eval_used' in skills/ecc/security-bounty-hunter/SKILL.md:41"}, "properties": {"repobilityId": "2d15f4c49d926295", "scanner": "scanner-primary", "fingerprint": "f367ef60175e8919", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["owasp", "eval_used"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/ecc/security-bounty-hunter/SKILL.md"}, "region": {"startLine": 41}}}]}, {"ruleId": "scanner-058a3c6683905e9b", "level": "error", "message": {"text": "Insecure pattern 'exec_used' in skills/ecc/security-bounty-hunter/SKILL.md:41"}, "properties": {"repobilityId": "dcf8bf268dec5459", "scanner": "scanner-primary", "fingerprint": "058a3c6683905e9b", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["owasp", "exec_used"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/ecc/security-bounty-hunter/SKILL.md"}, "region": {"startLine": 41}}}]}, {"ruleId": "scanner-d23043fcc6cc7701", "level": "warning", "message": {"text": "Insecure pattern 'subprocess_shell_true' in skills/ecc/security-bounty-hunter/SKILL.md:42"}, "properties": {"repobilityId": "65ee9d5b47056a7e", "scanner": "scanner-primary", "fingerprint": "d23043fcc6cc7701", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "subprocess_shell_true"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/ecc/security-bounty-hunter/SKILL.md"}, "region": {"startLine": 42}}}]}, {"ruleId": "scanner-f7e1e7a709020798", "level": "error", "message": {"text": "Possible secret in skills/ecc/security-review/SKILL.md"}, "properties": {"repobilityId": "d0e65523e2b3452e", "scanner": "scanner-primary", "fingerprint": "f7e1e7a709020798", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/ecc/security-review/SKILL.md"}, "region": {"startLine": 29}}}]}, {"ruleId": "scanner-98ffed73baf49628", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in skills/ecc/security-review/SKILL.md:210"}, "properties": {"repobilityId": "3ae99c752890d408", "scanner": "scanner-primary", "fingerprint": "98ffed73baf49628", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/ecc/security-review/SKILL.md"}, "region": {"startLine": 210}}}]}, {"ruleId": "scanner-c7743e3d89e36e6f", "level": "warning", "message": {"text": "Insecure pattern 'local_storage_auth_token' in skills/ecc/security-review/SKILL.md:148"}, "properties": {"repobilityId": "aa47487413978f69", "scanner": "scanner-primary", "fingerprint": "c7743e3d89e36e6f", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "local_storage_auth_token"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/ecc/security-review/SKILL.md"}, "region": {"startLine": 148}}}]}, {"ruleId": "scanner-df283cb0cfc2b895", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "58acba3dc5811ed8", "scanner": "scanner-primary", "fingerprint": "df283cb0cfc2b895", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/ecc-code-review.yml"}, "region": {"startLine": 91}}}]}, {"ruleId": "scanner-2ce27a159e3c0eb0", "level": "warning", "message": {"text": "GitHub Actions workflow grants broad write permissions"}, "properties": {"repobilityId": "d325b01d1796ff80", "scanner": "scanner-primary", "fingerprint": "2ce27a159e3c0eb0", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "least-privilege"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/e2e-watchdog.yml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-2aedd257a2f0871c", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "9eb6efa5bf4101ed", "scanner": "scanner-primary", "fingerprint": "2aedd257a2f0871c", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/labels-sync.yml"}, "region": {"startLine": 44}}}]}, {"ruleId": "scanner-6c6a4105f82ca769", "level": "warning", "message": {"text": "GitHub Actions workflow grants broad write permissions"}, "properties": {"repobilityId": "ec08e91a62324898", "scanner": "scanner-primary", "fingerprint": "6c6a4105f82ca769", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "least-privilege"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/auto-merge-on-label.yml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-27924aa79fa4a517", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "21ed6976f1304681", "scanner": "scanner-primary", "fingerprint": "27924aa79fa4a517", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/ci.yml"}, "region": {"startLine": 57}}}]}, {"ruleId": "scanner-27924aa79fa4a517", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "21ed6976f1304681", "scanner": "scanner-primary", "fingerprint": "27924aa79fa4a517", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/ci.yml"}, "region": {"startLine": 165}}}]}, {"ruleId": "scanner-27924aa79fa4a517", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "21ed6976f1304681", "scanner": "scanner-primary", "fingerprint": "27924aa79fa4a517", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/ci.yml"}, "region": {"startLine": 420}}}]}, {"ruleId": "scanner-27924aa79fa4a517", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "bd7f3c1c34d83159", "scanner": "scanner-primary", "fingerprint": "27924aa79fa4a517", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/ci.yml"}, "region": {"startLine": 520}}}]}, {"ruleId": "scanner-64192a3c67110d01", "level": "warning", "message": {"text": "GitHub Actions workflow grants broad write permissions"}, "properties": {"repobilityId": "87338a8bfcb6f435", "scanner": "scanner-primary", "fingerprint": "64192a3c67110d01", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "least-privilege"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/ci.yml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-65c9bd56493a81d3", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "3b3d8b8ee5da1f9b", "scanner": "scanner-primary", "fingerprint": "65c9bd56493a81d3", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/e2e.yml"}, "region": {"startLine": 128}}}]}, {"ruleId": "scanner-65c9bd56493a81d3", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "8e879d8d5d310b9f", "scanner": "scanner-primary", "fingerprint": "65c9bd56493a81d3", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/e2e.yml"}, "region": {"startLine": 191}}}]}, {"ruleId": "scanner-bcbd1290ffb3759c", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "f7b94329054b87bc", "scanner": "scanner-primary", "fingerprint": "bcbd1290ffb3759c", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/check-no-skip-hooks.yml"}, "region": {"startLine": 88}}}]}, {"ruleId": "scanner-bcbd1290ffb3759c", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "f7b94329054b87bc", "scanner": "scanner-primary", "fingerprint": "bcbd1290ffb3759c", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/check-no-skip-hooks.yml"}, "region": {"startLine": 129}}}]}, {"ruleId": "scanner-49a9f38e19bb7e89", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "6b701203445f3f86", "scanner": "scanner-primary", "fingerprint": "49a9f38e19bb7e89", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/archive/autotest.yml"}, "region": {"startLine": 101}}}]}, {"ruleId": "scanner-2950e9411cb04a66", "level": "warning", "message": {"text": "GitHub Actions workflow grants broad write permissions"}, "properties": {"repobilityId": "da5bb47bccaf02fe", "scanner": "scanner-primary", "fingerprint": "2950e9411cb04a66", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "least-privilege"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/archive/autotest.yml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-b0d1c7c92d4f3969", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "e3aefc046c727efb", "scanner": "scanner-primary", "fingerprint": "b0d1c7c92d4f3969", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/archive/ai-review.yml"}, "region": {"startLine": 139}}}]}, {"ruleId": "scanner-b0d1c7c92d4f3969", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "e3aefc046c727efb", "scanner": "scanner-primary", "fingerprint": "b0d1c7c92d4f3969", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/archive/ai-review.yml"}, "region": {"startLine": 341}}}]}, {"ruleId": "scanner-fe3fa580edfa4445", "level": "warning", "message": {"text": "GitHub Actions workflow grants broad write permissions"}, "properties": {"repobilityId": "b9a80a10b039e4ec", "scanner": "scanner-primary", "fingerprint": "fe3fa580edfa4445", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "least-privilege"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/archive/ai-review.yml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-29dc4d975b24984d", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "3bb1bc33b0802422", "scanner": "scanner-primary", "fingerprint": "29dc4d975b24984d", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/archive/devops.yml"}, "region": {"startLine": 83}}}]}, {"ruleId": "scanner-2f1092c8751eb412", "level": "warning", "message": {"text": "GitHub Actions workflow grants broad write permissions"}, "properties": {"repobilityId": "6358efc78261023b", "scanner": "scanner-primary", "fingerprint": "2f1092c8751eb412", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "least-privilege"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/archive/devops.yml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-8227020f851f268c", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "d1e50c0933673134", "scanner": "scanner-primary", "fingerprint": "8227020f851f268c", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/archive/coder.yml"}, "region": {"startLine": 112}}}]}, {"ruleId": "scanner-49d7f44687844f32", "level": "warning", "message": {"text": "GitHub Actions workflow grants broad write permissions"}, "properties": {"repobilityId": "25dee8ebefd5edae", "scanner": "scanner-primary", "fingerprint": "49d7f44687844f32", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "least-privilege"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/archive/coder.yml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-cb639d9a10a47b23", "level": "note", "message": {"text": "package.json defines install-time lifecycle scripts"}, "properties": {"repobilityId": "b86179956da3a4a8", "scanner": "scanner-primary", "fingerprint": "cb639d9a10a47b23", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "npm", "install-scripts"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-d67e5b8d21784b07", "level": "note", "message": {"text": "Very large file: apps/api/src/users/users.service.ts (1818 lines)"}, "properties": {"repobilityId": "326b7a20b5d48e9c", "scanner": "scanner-primary", "fingerprint": "d67e5b8d21784b07", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-f42fa02c35fd6096", "level": "note", "message": {"text": "Very large file: apps/api/src/users/users.service.spec.ts (1519 lines)"}, "properties": {"repobilityId": "710646e75af35afb", "scanner": "scanner-primary", "fingerprint": "f42fa02c35fd6096", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-7a6a6b13290ae8e3", "level": "note", "message": {"text": "Very large file: apps/api/src/projects/projects.service.ts (1306 lines)"}, "properties": {"repobilityId": "52748dae0f5d6988", "scanner": "scanner-primary", "fingerprint": "7a6a6b13290ae8e3", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-782c091cd8eb4b87", "level": "note", "message": {"text": "Very large file: apps/api/src/finance/transactions.service.ts (2730 lines)"}, "properties": {"repobilityId": "0f4a8548d08c2d94", "scanner": "scanner-primary", "fingerprint": "782c091cd8eb4b87", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-181286a1ec8a9f04", "level": "note", "message": {"text": "Very large file: apps/api/src/database/schema.ts (1297 lines)"}, "properties": {"repobilityId": "22c15007b8af63b7", "scanner": "scanner-primary", "fingerprint": "181286a1ec8a9f04", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-7412fa5d7c0f3a12", "level": "note", "message": {"text": "Very large file: apps/api/src/database/seed.ts (1979 lines)"}, "properties": {"repobilityId": "b4e198a305732769", "scanner": "scanner-primary", "fingerprint": "7412fa5d7c0f3a12", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-15cf3fdf1f4542c0", "level": "note", "message": {"text": "Very large file: apps/api/src/documents/documents.service.spec.ts (1527 lines)"}, "properties": {"repobilityId": "a1d3ba3866b6e0c0", "scanner": "scanner-primary", "fingerprint": "15cf3fdf1f4542c0", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-7cfa3be28b0f7bd3", "level": "note", "message": {"text": "Very large file: apps/web/app/components/users/UserDialog.tsx (2300 lines)"}, "properties": {"repobilityId": "d46927a330078e13", "scanner": "scanner-primary", "fingerprint": "7cfa3be28b0f7bd3", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-bf627af90e80c6df", "level": "note", "message": {"text": "Very large file: apps/web/app/routes/crm/projects/$projectId.tsx (1809 lines)"}, "properties": {"repobilityId": "b1d361c4ff10c747", "scanner": "scanner-primary", "fingerprint": "bf627af90e80c6df", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-f481d428779676f3", "level": "note", "message": {"text": "Very large file: apps/web/app/routes/crm/team/$teamId.tsx (1189 lines)"}, "properties": {"repobilityId": "ef7e6ccef36ad7c0", "scanner": "scanner-primary", "fingerprint": "f481d428779676f3", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-8c16b9448167d6e5", "level": "note", "message": {"text": "Very large file: apps/e2e/tests/fixtures.ts (2202 lines)"}, "properties": {"repobilityId": "e153b7d142c712a0", "scanner": "scanner-primary", "fingerprint": "8c16b9448167d6e5", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-64d3b35d8311c7dc", "level": "note", "message": {"text": "Very large file: apps/e2e/tests/team.spec.ts (1325 lines)"}, "properties": {"repobilityId": "33aec6abc6288733", "scanner": "scanner-primary", "fingerprint": "64d3b35d8311c7dc", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-c49f951da94601ee", "level": "note", "message": {"text": "Very large file: skills/ecc/continuous-learning-v2/scripts/instinct-cli.py (1826 lines)"}, "properties": {"repobilityId": "658f94b77d4dfd93", "scanner": "scanner-primary", "fingerprint": "c49f951da94601ee", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-b06b8d86f24c77f9", "level": "note", "message": {"text": "Node manifest has dependencies but no lockfile: apps/api/package.json"}, "properties": {"repobilityId": "ce77cd34ed0306d4", "scanner": "scanner-primary", "fingerprint": "b06b8d86f24c77f9", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["dependency", "lockfile", "reproducibility", "generated-repo-pattern"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/api/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-4a9eb7dc7c6e3880", "level": "note", "message": {"text": "Node manifest has dependencies but no lockfile: apps/web/package.json"}, "properties": {"repobilityId": "6c1704bf24cf19ac", "scanner": "scanner-primary", "fingerprint": "4a9eb7dc7c6e3880", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["dependency", "lockfile", "reproducibility", "generated-repo-pattern"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/web/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-13c399c461b261dc", "level": "note", "message": {"text": "Node manifest has dependencies but no lockfile: apps/e2e/package.json"}, "properties": {"repobilityId": "da0ddd3191e16f9a", "scanner": "scanner-primary", "fingerprint": "13c399c461b261dc", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["dependency", "lockfile", "reproducibility", "generated-repo-pattern"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/e2e/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-2699d5f16ae11282", "level": "note", "message": {"text": "Node manifest has dependencies but no lockfile: packages/shared/package.json"}, "properties": {"repobilityId": "37ac218a4ef9b430", "scanner": "scanner-primary", "fingerprint": "2699d5f16ae11282", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["dependency", "lockfile", "reproducibility", "generated-repo-pattern"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/shared/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-3ab5d313dda8e5f9", "level": "note", "message": {"text": "Debug logging residue appears in source files"}, "properties": {"repobilityId": "54bd8483f70100ad", "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": "a3e1b16c5ebaf058", "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": "0408a1a5116f0f4d", "scanner": "scanner-primary", "fingerprint": "2d0c7b7ab8f8aacf", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["placeholder", "mock-data", "critical-flow", "generated-repo-pattern"]}}, {"ruleId": "scanner-749d4bc1bd66df5f", "level": "warning", "message": {"text": "Agent instructions exist but release-hardening basics are missing"}, "properties": {"repobilityId": "b0cf60316e80746f", "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": "f5813f25f772e6bb", "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": "52d6c95f990413ba", "scanner": "scanner-primary", "fingerprint": "8424db9c75e04ba4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["provenance", "git-history", "generated-repo-pattern"]}}, {"ruleId": "scanner-b6b3541c7ac7d09c", "level": "error", "message": {"text": "Agent instruction/config may expose a secret: .claude/briefs/pm-brief-invoice-signing.md"}, "properties": {"repobilityId": "6a861a426bc477be", "scanner": "scanner-primary", "fingerprint": "b6b3541c7ac7d09c", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["agent-instructions", "secrets", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/briefs/pm-brief-invoice-signing.md"}, "region": {"startLine": 238}}}]}, {"ruleId": "scanner-bd664417d2ee1ea0", "level": "error", "message": {"text": "Agent instruction/config may expose a secret: .claude/briefs/2026-05-21-users-archive-refactor-design.md"}, "properties": {"repobilityId": "d569f32e9748d9cc", "scanner": "scanner-primary", "fingerprint": "bd664417d2ee1ea0", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["agent-instructions", "secrets", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/briefs/2026-05-21-users-archive-refactor-design.md"}, "region": {"startLine": 668}}}]}, {"ruleId": "scanner-39bb103dd83e7d41", "level": "error", "message": {"text": "Agent instruction/config may expose a secret: .claude/briefs/2026-05-20-profile-pages-plan.md"}, "properties": {"repobilityId": "8e9943b9cdd53c91", "scanner": "scanner-primary", "fingerprint": "39bb103dd83e7d41", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["agent-instructions", "secrets", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/briefs/2026-05-20-profile-pages-plan.md"}, "region": {"startLine": 1185}}}]}, {"ruleId": "scanner-2b2fd92bf6101395", "level": "error", "message": {"text": "Agent instruction/config may expose a secret: .claude/state/pm-state.json"}, "properties": {"repobilityId": "e3b22137d91ef01c", "scanner": "scanner-primary", "fingerprint": "2b2fd92bf6101395", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["agent-instructions", "secrets", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/state/pm-state.json"}, "region": {"startLine": 13}}}]}, {"ruleId": "scanner-05bddb4289b4e2b5", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: .claude/state/archive/2026-05-18-active-task.md"}, "properties": {"repobilityId": "729640741cc57016", "scanner": "scanner-primary", "fingerprint": "05bddb4289b4e2b5", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/state/archive/2026-05-18-active-task.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-f395e33afedc6327", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: .claude/state/archive/2026-05-18-active-devops-task.md"}, "properties": {"repobilityId": "2542f7fb7ecbaec2", "scanner": "scanner-primary", "fingerprint": "f395e33afedc6327", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/state/archive/2026-05-18-active-devops-task.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-b596a826fca41511", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: .claude/rules/common/zone-of-write.md"}, "properties": {"repobilityId": "188f78d017f064fd", "scanner": "scanner-primary", "fingerprint": "b596a826fca41511", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/rules/common/zone-of-write.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-d1738bb9fa873a5a", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: .claude/rules/ecc/common/patterns.md"}, "properties": {"repobilityId": "a16c3d24b3c74a5f", "scanner": "scanner-primary", "fingerprint": "d1738bb9fa873a5a", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/rules/ecc/common/patterns.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-6c3634b53220d072", "level": "error", "message": {"text": "Agent instruction/config may expose a secret: .claude/rules/ecc/typescript/security.md"}, "properties": {"repobilityId": "9e17c6ee8a0e0fdb", "scanner": "scanner-primary", "fingerprint": "6c3634b53220d072", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["agent-instructions", "secrets", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/rules/ecc/typescript/security.md"}, "region": {"startLine": 17}}}]}, {"ruleId": "scanner-222ef98adb2cb182", "level": "error", "message": {"text": "Agent instruction/config may expose a secret: .claude/tasks/task-fix-junior-ut-round5.progress.md"}, "properties": {"repobilityId": "efe6aae35445b542", "scanner": "scanner-primary", "fingerprint": "222ef98adb2cb182", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["agent-instructions", "secrets", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/tasks/task-fix-junior-ut-round5.progress.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-92921eb4c6cd6053", "level": "error", "message": {"text": "Agent instruction/config may expose a secret: .claude/tasks/task-hr-rbac-teammate-access.progress.md"}, "properties": {"repobilityId": "5bf4919242485ab9", "scanner": "scanner-primary", "fingerprint": "92921eb4c6cd6053", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["agent-instructions", "secrets", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/tasks/task-hr-rbac-teammate-access.progress.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-64616daffc0574ee", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: .claude/tasks/task-admin-as-senior.progress.md"}, "properties": {"repobilityId": "a635f57a6d259d31", "scanner": "scanner-primary", "fingerprint": "64616daffc0574ee", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/tasks/task-admin-as-senior.progress.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-79113bc1663cb901", "level": "error", "message": {"text": "Agent instruction/config may expose a secret: .claude/tasks/task-drop-phase3-frontend.progress.md"}, "properties": {"repobilityId": "9cd0fccc8ac98fba", "scanner": "scanner-primary", "fingerprint": "79113bc1663cb901", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["agent-instructions", "secrets", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/tasks/task-drop-phase3-frontend.progress.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-9a45846171773538", "level": "error", "message": {"text": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-payout-auto-on-validate.md"}, "properties": {"repobilityId": "d8e67fda929869a2", "scanner": "scanner-primary", "fingerprint": "9a45846171773538", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["agent-instructions", "secrets", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/tasks/archive/task-payout-auto-on-validate.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-4635f40d153dfc1d", "level": "error", "message": {"text": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-drop-phase4c-pending-settlement.md"}, "properties": {"repobilityId": "381ad15ced057602", "scanner": "scanner-primary", "fingerprint": "4635f40d153dfc1d", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["agent-instructions", "secrets", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/tasks/archive/task-drop-phase4c-pending-settlement.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-76270f4a53da9b22", "level": "error", "message": {"text": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-junior-ux-3-cleanup.md"}, "properties": {"repobilityId": "0b721fd96991bde3", "scanner": "scanner-primary", "fingerprint": "76270f4a53da9b22", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["agent-instructions", "secrets", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/tasks/archive/task-junior-ux-3-cleanup.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-0a5ac07dcb6826c8", "level": "error", "message": {"text": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-drop-phase2-backend.progress.md"}, "properties": {"repobilityId": "d2875392af2a3e0e", "scanner": "scanner-primary", "fingerprint": "0a5ac07dcb6826c8", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["agent-instructions", "secrets", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/tasks/archive/task-drop-phase2-backend.progress.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-44dd2953095ebe16", "level": "error", "message": {"text": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-fix-pr34-user-testing-round6.md"}, "properties": {"repobilityId": "b53dd751076e6818", "scanner": "scanner-primary", "fingerprint": "44dd2953095ebe16", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["agent-instructions", "secrets", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/tasks/archive/task-fix-pr34-user-testing-round6.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-17d5a6c71f7b7f46", "level": "error", "message": {"text": "Agent instruction/config may expose a secret: .claude/tasks/archive/2026-05-19-task-fix-teams-telegram-validation.md"}, "properties": {"repobilityId": "460e7e171a0d4604", "scanner": "scanner-primary", "fingerprint": "17d5a6c71f7b7f46", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["agent-instructions", "secrets", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/tasks/archive/2026-05-19-task-fix-teams-telegram-validation.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-1b82699992b36bb1", "level": "error", "message": {"text": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-drop-phase2-frontend.md"}, "properties": {"repobilityId": "940ebf976f781aab", "scanner": "scanner-primary", "fingerprint": "1b82699992b36bb1", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["agent-instructions", "secrets", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/tasks/archive/task-drop-phase2-frontend.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-5e834fa7703fd2c0", "level": "error", "message": {"text": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-fix-e2e-unit-tests-after-batch2.md"}, "properties": {"repobilityId": "d598ebd6fe6d7bf3", "scanner": "scanner-primary", "fingerprint": "5e834fa7703fd2c0", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["agent-instructions", "secrets", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/tasks/archive/task-fix-e2e-unit-tests-after-batch2.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-820e978a58906eb0", "level": "error", "message": {"text": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-autotest-strengthen-e2e-pr56-flows.md"}, "properties": {"repobilityId": "1fd5a4266bd5daeb", "scanner": "scanner-primary", "fingerprint": "820e978a58906eb0", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["agent-instructions", "secrets", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/tasks/archive/task-autotest-strengthen-e2e-pr56-flows.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-4f9eea2885990623", "level": "error", "message": {"text": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-fix-pr22-ui-round2.md"}, "properties": {"repobilityId": "71347ebec191b0e7", "scanner": "scanner-primary", "fingerprint": "4f9eea2885990623", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["agent-instructions", "secrets", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/tasks/archive/task-fix-pr22-ui-round2.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-e13a9ea74ef46943", "level": "error", "message": {"text": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-pr56-batch-fixes.md"}, "properties": {"repobilityId": "5b12bca279a34306", "scanner": "scanner-primary", "fingerprint": "e13a9ea74ef46943", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["agent-instructions", "secrets", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/tasks/archive/task-pr56-batch-fixes.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-f20a7dcbee71feab", "level": "error", "message": {"text": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-documents-ui.md"}, "properties": {"repobilityId": "6c33b94f5ac7fddf", "scanner": "scanner-primary", "fingerprint": "f20a7dcbee71feab", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["agent-instructions", "secrets", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/tasks/archive/task-documents-ui.md"}, "region": {"startLine": 7}}}]}, {"ruleId": "scanner-043bf42764c37479", "level": "error", "message": {"text": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-junior-ux-1-backend.progress.md"}, "properties": {"repobilityId": "c7f3fd593a411900", "scanner": "scanner-primary", "fingerprint": "043bf42764c37479", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["agent-instructions", "secrets", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/tasks/archive/task-junior-ux-1-backend.progress.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-a30e565ca9fd62e1", "level": "error", "message": {"text": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-junior-ut-round2.progress.md"}, "properties": {"repobilityId": "acd7523945584926", "scanner": "scanner-primary", "fingerprint": "a30e565ca9fd62e1", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["agent-instructions", "secrets", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/tasks/archive/task-junior-ut-round2.progress.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-13f6ec7ae7e18649", "level": "error", "message": {"text": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-e2e-testid-selectors.md"}, "properties": {"repobilityId": "ece33e3df3b28fdd", "scanner": "scanner-primary", "fingerprint": "13f6ec7ae7e18649", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["agent-instructions", "secrets", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/tasks/archive/task-e2e-testid-selectors.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-0ccfdd5d47216739", "level": "error", "message": {"text": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-infra-labels-yml-sync.md"}, "properties": {"repobilityId": "e0077973dc046912", "scanner": "scanner-primary", "fingerprint": "0ccfdd5d47216739", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["agent-instructions", "secrets", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/tasks/archive/task-infra-labels-yml-sync.md"}, "region": {"startLine": 7}}}]}, {"ruleId": "scanner-e25fd61597bf3f04", "level": "error", "message": {"text": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-fix-reviewer-findings-pr28.md"}, "properties": {"repobilityId": "0229197a82d20013", "scanner": "scanner-primary", "fingerprint": "e25fd61597bf3f04", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["agent-instructions", "secrets", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/tasks/archive/task-fix-reviewer-findings-pr28.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-b8c4574fc9171bdc", "level": "error", "message": {"text": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-invoice-e2e.md"}, "properties": {"repobilityId": "cee53bd3f86daf25", "scanner": "scanner-primary", "fingerprint": "b8c4574fc9171bdc", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["agent-instructions", "secrets", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/tasks/archive/task-invoice-e2e.md"}, "region": {"startLine": 7}}}]}, {"ruleId": "scanner-7e9e9df2c2e3a79a", "level": "error", "message": {"text": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-fix-finance-ui-polish.md"}, "properties": {"repobilityId": "53be42d3325f89f5", "scanner": "scanner-primary", "fingerprint": "7e9e9df2c2e3a79a", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["agent-instructions", "secrets", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/tasks/archive/task-fix-finance-ui-polish.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-6bb06d60da0f41d4", "level": "error", "message": {"text": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-junior-ux-3-cleanup.progress.md"}, "properties": {"repobilityId": "d167c5ed820e5198", "scanner": "scanner-primary", "fingerprint": "6bb06d60da0f41d4", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["agent-instructions", "secrets", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/tasks/archive/task-junior-ux-3-cleanup.progress.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-1fd948e2ad779122", "level": "error", "message": {"text": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-coder-watchdog-progress-markers.md"}, "properties": {"repobilityId": "f321c507f14f0c28", "scanner": "scanner-primary", "fingerprint": "1fd948e2ad779122", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["agent-instructions", "secrets", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/tasks/archive/task-coder-watchdog-progress-markers.md"}, "region": {"startLine": 9}}}]}, {"ruleId": "scanner-bc796456122eb457", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: .claude/tasks/archive/task-coder-watchdog-progress-markers.md"}, "properties": {"repobilityId": "cb3df1ab9d4aa1dd", "scanner": "scanner-primary", "fingerprint": "bc796456122eb457", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/tasks/archive/task-coder-watchdog-progress-markers.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-babd3bb3bca42699", "level": "error", "message": {"text": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-fix-pr22-ui-round5.md"}, "properties": {"repobilityId": "fa9c2430d28f1bc5", "scanner": "scanner-primary", "fingerprint": "babd3bb3bca42699", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["agent-instructions", "secrets", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/tasks/archive/task-fix-pr22-ui-round5.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-ee506383f4842a59", "level": "error", "message": {"text": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-autotest-polish-coverage.md"}, "properties": {"repobilityId": "c11ca3a5a685a9f8", "scanner": "scanner-primary", "fingerprint": "ee506383f4842a59", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["agent-instructions", "secrets", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/tasks/archive/task-autotest-polish-coverage.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-ed3ea7c1bd09ed17", "level": "error", "message": {"text": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-fix-e2e-team-selectors.md"}, "properties": {"repobilityId": "8bfeeba51548dfce", "scanner": "scanner-primary", "fingerprint": "ed3ea7c1bd09ed17", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["agent-instructions", "secrets", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/tasks/archive/task-fix-e2e-team-selectors.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-1924c8479a25ced2", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: .claude/tasks/archive/task-fix-e2e-team-selectors.md"}, "properties": {"repobilityId": "c9b87f49f9fe18d9", "scanner": "scanner-primary", "fingerprint": "1924c8479a25ced2", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/tasks/archive/task-fix-e2e-team-selectors.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-72689890b7d99535", "level": "error", "message": {"text": "Agent instruction/config may expose a secret: .claude/tasks/archive/2026-05-19-task-infra-branch-protection.md"}, "properties": {"repobilityId": "b27f56d7e3a3d4e5", "scanner": "scanner-primary", "fingerprint": "72689890b7d99535", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["agent-instructions", "secrets", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/tasks/archive/2026-05-19-task-infra-branch-protection.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-730fc8ccd91a1a28", "level": "error", "message": {"text": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-harness-schedule-wakeup-persistence.md"}, "properties": {"repobilityId": "87c2fdb6e7adfb45", "scanner": "scanner-primary", "fingerprint": "730fc8ccd91a1a28", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["agent-instructions", "secrets", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/tasks/archive/task-harness-schedule-wakeup-persistence.md"}, "region": {"startLine": 9}}}]}, {"ruleId": "scanner-e066301c669bd52b", "level": "error", "message": {"text": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-fix-e2e-profile-pr28.md"}, "properties": {"repobilityId": "ba01be85c953ef7b", "scanner": "scanner-primary", "fingerprint": "e066301c669bd52b", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["agent-instructions", "secrets", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/tasks/archive/task-fix-e2e-profile-pr28.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-deaeb5140372ed4b", "level": "error", "message": {"text": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-team-senior-share-override.md"}, "properties": {"repobilityId": "e691396da767e677", "scanner": "scanner-primary", "fingerprint": "deaeb5140372ed4b", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["agent-instructions", "secrets", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/tasks/archive/task-team-senior-share-override.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-612f239380a7934d", "level": "error", "message": {"text": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-drop-company-debt-and-invoices.md"}, "properties": {"repobilityId": "a17ba057df004863", "scanner": "scanner-primary", "fingerprint": "612f239380a7934d", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["agent-instructions", "secrets", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/tasks/archive/task-drop-company-debt-and-invoices.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-a5dd364178b5cfae", "level": "error", "message": {"text": "Agent instruction/config may expose a secret: .claude/tasks/archive/2026-05-19-task-fix-teams-critical.md"}, "properties": {"repobilityId": "284861be2acc82ab", "scanner": "scanner-primary", "fingerprint": "a5dd364178b5cfae", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["agent-instructions", "secrets", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/tasks/archive/2026-05-19-task-fix-teams-critical.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-ba6238f2504bd667", "level": "error", "message": {"text": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-fix-avatar-cropper-and-pill.md"}, "properties": {"repobilityId": "e4c1da33166bf721", "scanner": "scanner-primary", "fingerprint": "ba6238f2504bd667", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["agent-instructions", "secrets", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/tasks/archive/task-fix-avatar-cropper-and-pill.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-08a03ce97c376aa4", "level": "error", "message": {"text": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-finance-receipt-integration.progress.md"}, "properties": {"repobilityId": "d54a1fc865cf3f53", "scanner": "scanner-primary", "fingerprint": "08a03ce97c376aa4", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["agent-instructions", "secrets", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/tasks/archive/task-finance-receipt-integration.progress.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-9b4e253e5de3b2c4", "level": "error", "message": {"text": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-fix-invoice-pdf-polish.progress.md"}, "properties": {"repobilityId": "3b0b94f9e0b92ccc", "scanner": "scanner-primary", "fingerprint": "9b4e253e5de3b2c4", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["agent-instructions", "secrets", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/tasks/archive/task-fix-invoice-pdf-polish.progress.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-4af4e4954e38fef9", "level": "error", "message": {"text": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-fix-junior-ut-round1.md"}, "properties": {"repobilityId": "29abd423bd816b0b", "scanner": "scanner-primary", "fingerprint": "4af4e4954e38fef9", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["agent-instructions", "secrets", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/tasks/archive/task-fix-junior-ut-round1.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-6a2f96a3c3fe1391", "level": "error", "message": {"text": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-invoice-data-layer.md"}, "properties": {"repobilityId": "59db4387c5536ecb", "scanner": "scanner-primary", "fingerprint": "6a2f96a3c3fe1391", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["agent-instructions", "secrets", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/tasks/archive/task-invoice-data-layer.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-978156f238f03b09", "level": "error", "message": {"text": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-infra-dev-flow-scripts.md"}, "properties": {"repobilityId": "5542056a40f2d6db", "scanner": "scanner-primary", "fingerprint": "978156f238f03b09", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["agent-instructions", "secrets", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/tasks/archive/task-infra-dev-flow-scripts.md"}, "region": {"startLine": 105}}}]}, {"ruleId": "scanner-6585cced2d657bce", "level": "error", "message": {"text": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-rbac-senior-junior-visibility.progress.md"}, "properties": {"repobilityId": "b56eaa88858a7735", "scanner": "scanner-primary", "fingerprint": "6585cced2d657bce", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["agent-instructions", "secrets", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/tasks/archive/task-rbac-senior-junior-visibility.progress.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-ed68eb0bfb701b5a", "level": "error", "message": {"text": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-fix-pr22-ui-round1.md"}, "properties": {"repobilityId": "1c6251d4f88da147", "scanner": "scanner-primary", "fingerprint": "ed68eb0bfb701b5a", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["agent-instructions", "secrets", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/tasks/archive/task-fix-pr22-ui-round1.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-997c2b67bd9a92fe", "level": "error", "message": {"text": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-fix-profile-round3.md"}, "properties": {"repobilityId": "81394bd8272169a7", "scanner": "scanner-primary", "fingerprint": "997c2b67bd9a92fe", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["agent-instructions", "secrets", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/tasks/archive/task-fix-profile-round3.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-db1670c97bad5953", "level": "error", "message": {"text": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-fix-junior-ut-round1.progress.md"}, "properties": {"repobilityId": "841e55a2e329aa81", "scanner": "scanner-primary", "fingerprint": "db1670c97bad5953", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["agent-instructions", "secrets", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/tasks/archive/task-fix-junior-ut-round1.progress.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-7f565eb9c4e5eee8", "level": "error", "message": {"text": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-fix-tech-tab-and-requisites-ui.md"}, "properties": {"repobilityId": "ace7ac2c4692a20c", "scanner": "scanner-primary", "fingerprint": "7f565eb9c4e5eee8", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["agent-instructions", "secrets", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/tasks/archive/task-fix-tech-tab-and-requisites-ui.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-566608db50e69d7c", "level": "error", "message": {"text": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-multiagent-docs-architect.md"}, "properties": {"repobilityId": "d212cf13a73aa4ad", "scanner": "scanner-primary", "fingerprint": "566608db50e69d7c", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["agent-instructions", "secrets", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/tasks/archive/task-multiagent-docs-architect.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-41603ac6f0d07af7", "level": "error", "message": {"text": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-fix-profile-revisions-batch2.md"}, "properties": {"repobilityId": "7e0c0ed95cbab87e", "scanner": "scanner-primary", "fingerprint": "41603ac6f0d07af7", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["agent-instructions", "secrets", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/tasks/archive/task-fix-profile-revisions-batch2.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-81c036b8a63ed2ee", "level": "error", "message": {"text": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-fix-pr22-ui-round3.md"}, "properties": {"repobilityId": "a09b6a607ceb3364", "scanner": "scanner-primary", "fingerprint": "81c036b8a63ed2ee", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["agent-instructions", "secrets", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/tasks/archive/task-fix-pr22-ui-round3.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-2421fa7a22d13980", "level": "error", "message": {"text": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-drop-phase2-backend.md"}, "properties": {"repobilityId": "34159f0c65b7fd52", "scanner": "scanner-primary", "fingerprint": "2421fa7a22d13980", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["agent-instructions", "secrets", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/tasks/archive/task-drop-phase2-backend.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-aa884941ddf629eb", "level": "error", "message": {"text": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-payout-dev-simulate-toggle.md"}, "properties": {"repobilityId": "6d78f8498089e363", "scanner": "scanner-primary", "fingerprint": "aa884941ddf629eb", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["agent-instructions", "secrets", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/tasks/archive/task-payout-dev-simulate-toggle.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-5f0a89b137d5ba78", "level": "error", "message": {"text": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-documents-e2e.md"}, "properties": {"repobilityId": "931b56a0ec37ad93", "scanner": "scanner-primary", "fingerprint": "5f0a89b137d5ba78", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["agent-instructions", "secrets", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/tasks/archive/task-documents-e2e.md"}, "region": {"startLine": 7}}}]}, {"ruleId": "scanner-01d9dfb55639c0b5", "level": "error", "message": {"text": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-housekeeping-cleanup.progress.md"}, "properties": {"repobilityId": "f01214b3358c671a", "scanner": "scanner-primary", "fingerprint": "01d9dfb55639c0b5", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["agent-instructions", "secrets", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/tasks/archive/task-housekeeping-cleanup.progress.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-dfae97572d377486", "level": "error", "message": {"text": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-documents-fixes-batch1.md"}, "properties": {"repobilityId": "bf45c30f0ac8c6cc", "scanner": "scanner-primary", "fingerprint": "dfae97572d377486", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["agent-instructions", "secrets", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/tasks/archive/task-documents-fixes-batch1.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-40568e63fc3e49ac", "level": "error", "message": {"text": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-fix-transactions-sort-timestamps.md"}, "properties": {"repobilityId": "8ba62dbe10b6093f", "scanner": "scanner-primary", "fingerprint": "40568e63fc3e49ac", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["agent-instructions", "secrets", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/tasks/archive/task-fix-transactions-sort-timestamps.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-270fafe06a6f2ea8", "level": "error", "message": {"text": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-drop-phase1-frontend.md"}, "properties": {"repobilityId": "ded1af73eb40a61f", "scanner": "scanner-primary", "fingerprint": "270fafe06a6f2ea8", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["agent-instructions", "secrets", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/tasks/archive/task-drop-phase1-frontend.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-83b1c0adbdd8fa8a", "level": "error", "message": {"text": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-fix-profile-scroll.md"}, "properties": {"repobilityId": "27804de5d442418a", "scanner": "scanner-primary", "fingerprint": "83b1c0adbdd8fa8a", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["agent-instructions", "secrets", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/tasks/archive/task-fix-profile-scroll.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-4b0c4adadac298dd", "level": "error", "message": {"text": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-fix-invoice-pdf-polish.md"}, "properties": {"repobilityId": "4dfa39e26c61e3ae", "scanner": "scanner-primary", "fingerprint": "4b0c4adadac298dd", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["agent-instructions", "secrets", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/tasks/archive/task-fix-invoice-pdf-polish.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-073abaccfc69b4f6", "level": "error", "message": {"text": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-invoice-api.md"}, "properties": {"repobilityId": "b84803d647d1f378", "scanner": "scanner-primary", "fingerprint": "073abaccfc69b4f6", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["agent-instructions", "secrets", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/tasks/archive/task-invoice-api.md"}, "region": {"startLine": 7}}}]}, {"ruleId": "scanner-7c9e29fe26641f2c", "level": "error", "message": {"text": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-drop-phase4-refactor-remove-tov.md"}, "properties": {"repobilityId": "a8f219a1fbc09568", "scanner": "scanner-primary", "fingerprint": "7c9e29fe26641f2c", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["agent-instructions", "secrets", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/tasks/archive/task-drop-phase4-refactor-remove-tov.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-42414ab9779c805a", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: .claude/tasks/archive/2026-05-19-task-fix-ai-review-workflow-run.md"}, "properties": {"repobilityId": "373ff1f378aa0a5c", "scanner": "scanner-primary", "fingerprint": "42414ab9779c805a", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/tasks/archive/2026-05-19-task-fix-ai-review-workflow-run.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-348f389e61d5be27", "level": "error", "message": {"text": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-fix-pr-83-guard-order.progress.md"}, "properties": {"repobilityId": "20248b32f24fa56f", "scanner": "scanner-primary", "fingerprint": "348f389e61d5be27", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["agent-instructions", "secrets", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/tasks/archive/task-fix-pr-83-guard-order.progress.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-cea780f1edadf08e", "level": "error", "message": {"text": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-fix-auth-localhost.md"}, "properties": {"repobilityId": "35e4ec6d7e3b29ec", "scanner": "scanner-primary", "fingerprint": "cea780f1edadf08e", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["agent-instructions", "secrets", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/tasks/archive/task-fix-auth-localhost.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-7c14c4b20b2620f3", "level": "error", "message": {"text": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-drop-phase1-backend.md"}, "properties": {"repobilityId": "6ae81aa0daf4fd50", "scanner": "scanner-primary", "fingerprint": "7c14c4b20b2620f3", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["agent-instructions", "secrets", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/tasks/archive/task-drop-phase1-backend.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-31d6b557f7cd6d8c", "level": "error", "message": {"text": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-fix-drop-bugs-after-testing.md"}, "properties": {"repobilityId": "906bb977ad32d641", "scanner": "scanner-primary", "fingerprint": "31d6b557f7cd6d8c", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["agent-instructions", "secrets", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/tasks/archive/task-fix-drop-bugs-after-testing.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-141240309359a38f", "level": "error", "message": {"text": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-fix-phase4b-e2e-mock.md"}, "properties": {"repobilityId": "e2234bab7cd6fa91", "scanner": "scanner-primary", "fingerprint": "141240309359a38f", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["agent-instructions", "secrets", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/tasks/archive/task-fix-phase4b-e2e-mock.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-3ab960ae87da9d1f", "level": "error", "message": {"text": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-drop-phase1-frontend.progress.md"}, "properties": {"repobilityId": "7df98011ce7fcf21", "scanner": "scanner-primary", "fingerprint": "3ab960ae87da9d1f", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["agent-instructions", "secrets", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/tasks/archive/task-drop-phase1-frontend.progress.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-91a4e46acc47f33f", "level": "error", "message": {"text": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-fix-phase4b-bugs.md"}, "properties": {"repobilityId": "b8e2f41077552e1e", "scanner": "scanner-primary", "fingerprint": "91a4e46acc47f33f", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["agent-instructions", "secrets", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/tasks/archive/task-fix-phase4b-bugs.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-e088e20b4b97eab1", "level": "error", "message": {"text": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-onboarding-6a-data-backend.md"}, "properties": {"repobilityId": "82e5ec85dce72a6f", "scanner": "scanner-primary", "fingerprint": "e088e20b4b97eab1", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["agent-instructions", "secrets", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/tasks/archive/task-onboarding-6a-data-backend.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-8ba37a4b16046819", "level": "error", "message": {"text": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-selftest-typo-fix.md"}, "properties": {"repobilityId": "1be47a44d58bc94c", "scanner": "scanner-primary", "fingerprint": "8ba37a4b16046819", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["agent-instructions", "secrets", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/tasks/archive/task-selftest-typo-fix.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-625e4cef1571e7ab", "level": "error", "message": {"text": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-fix-teams-ui-polish.md"}, "properties": {"repobilityId": "7907d462ae31ab80", "scanner": "scanner-primary", "fingerprint": "625e4cef1571e7ab", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["agent-instructions", "secrets", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/tasks/archive/task-fix-teams-ui-polish.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-5f0252b62b3d99a9", "level": "error", "message": {"text": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-invoice-pdf-gen.md"}, "properties": {"repobilityId": "08a39eb0095ce520", "scanner": "scanner-primary", "fingerprint": "5f0252b62b3d99a9", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["agent-instructions", "secrets", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/tasks/archive/task-invoice-pdf-gen.md"}, "region": {"startLine": 7}}}]}, {"ruleId": "scanner-6c335f292ebf8c65", "level": "error", "message": {"text": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-drop-phase1-backend.progress.md"}, "properties": {"repobilityId": "39014b4e843debaf", "scanner": "scanner-primary", "fingerprint": "6c335f292ebf8c65", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["agent-instructions", "secrets", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/tasks/archive/task-drop-phase1-backend.progress.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-d91138e35b90592c", "level": "error", "message": {"text": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-fix-drop-archive-and-409.md"}, "properties": {"repobilityId": "407a16e35c46ad1a", "scanner": "scanner-primary", "fingerprint": "d91138e35b90592c", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["agent-instructions", "secrets", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/tasks/archive/task-fix-drop-archive-and-409.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-b7c16f5672c3e19a", "level": "error", "message": {"text": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-pr56-final-ut-batch.md"}, "properties": {"repobilityId": "06a67e34130f6b9f", "scanner": "scanner-primary", "fingerprint": "b7c16f5672c3e19a", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["agent-instructions", "secrets", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/tasks/archive/task-pr56-final-ut-batch.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-49229d38547c2ab3", "level": "error", "message": {"text": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-project-credentials.progress.md"}, "properties": {"repobilityId": "ef33a9fe55dc398e", "scanner": "scanner-primary", "fingerprint": "49229d38547c2ab3", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["agent-instructions", "secrets", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/tasks/archive/task-project-credentials.progress.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-841421826fbd2c32", "level": "error", "message": {"text": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-drop-phase3-backend.md"}, "properties": {"repobilityId": "e1b5ee84217fe514", "scanner": "scanner-primary", "fingerprint": "841421826fbd2c32", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["agent-instructions", "secrets", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/tasks/archive/task-drop-phase3-backend.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-e067995f180712ab", "level": "error", "message": {"text": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-fix-pr33-user-testing-round3.md"}, "properties": {"repobilityId": "fb14e00d894139c7", "scanner": "scanner-primary", "fingerprint": "e067995f180712ab", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["agent-instructions", "secrets", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/tasks/archive/task-fix-pr33-user-testing-round3.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-32a5e78fa561ef94", "level": "error", "message": {"text": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-infra-drizzle-migrations-sync.md"}, "properties": {"repobilityId": "5d1cda1e4a7d60d5", "scanner": "scanner-primary", "fingerprint": "32a5e78fa561ef94", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["agent-instructions", "secrets", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/tasks/archive/task-infra-drizzle-migrations-sync.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-f29f741ef4caa184", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: .claude/tasks/archive/task-infra-drizzle-migrations-sync.md"}, "properties": {"repobilityId": "8b04164dc9ce4cd1", "scanner": "scanner-primary", "fingerprint": "f29f741ef4caa184", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/tasks/archive/task-infra-drizzle-migrations-sync.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-b3574ec62fb94195", "level": "error", "message": {"text": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-expand-drop-e2e-coverage.md"}, "properties": {"repobilityId": "e36b1cbe4321b923", "scanner": "scanner-primary", "fingerprint": "b3574ec62fb94195", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["agent-instructions", "secrets", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/tasks/archive/task-expand-drop-e2e-coverage.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-806dbe5f24adc6b7", "level": "error", "message": {"text": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-infra-e2e-watchdog.md"}, "properties": {"repobilityId": "44404c95997c04f7", "scanner": "scanner-primary", "fingerprint": "806dbe5f24adc6b7", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["agent-instructions", "secrets", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/tasks/archive/task-infra-e2e-watchdog.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-bf00a42910fd9bdf", "level": "error", "message": {"text": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-drop-phase3-frontend.md"}, "properties": {"repobilityId": "c5dc981c7bada9fd", "scanner": "scanner-primary", "fingerprint": "bf00a42910fd9bdf", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["agent-instructions", "secrets", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/tasks/archive/task-drop-phase3-frontend.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-c0c5f568b898d654", "level": "error", "message": {"text": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-fix-phase4c-e2e-mocks.md"}, "properties": {"repobilityId": "ca1e5b9bbdad37a0", "scanner": "scanner-primary", "fingerprint": "c0c5f568b898d654", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["agent-instructions", "secrets", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/tasks/archive/task-fix-phase4c-e2e-mocks.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-556daa7d0208dedb", "level": "error", "message": {"text": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-infra-hook-bypass-hardening.md"}, "properties": {"repobilityId": "dd29e4fe60b1b1e2", "scanner": "scanner-primary", "fingerprint": "556daa7d0208dedb", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["agent-instructions", "secrets", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/tasks/archive/task-infra-hook-bypass-hardening.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-393a0c8994421211", "level": "error", "message": {"text": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-fix-user-avatar-dropdown.md"}, "properties": {"repobilityId": "f2c54fe2882df907", "scanner": "scanner-primary", "fingerprint": "393a0c8994421211", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["agent-instructions", "secrets", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/tasks/archive/task-fix-user-avatar-dropdown.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-de9e5d3d97145d8d", "level": "error", "message": {"text": "Agent instruction/config may expose a secret: .claude/tasks/archive/2026-05-19-task-fix-team-detail-hooks.md"}, "properties": {"repobilityId": "5a08129030a1be89", "scanner": "scanner-primary", "fingerprint": "de9e5d3d97145d8d", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["agent-instructions", "secrets", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/tasks/archive/2026-05-19-task-fix-team-detail-hooks.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-b452add9449660a6", "level": "error", "message": {"text": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-drop-phase4b-payment-channels.progress.md"}, "properties": {"repobilityId": "8b6d3b3bdfe271ba", "scanner": "scanner-primary", "fingerprint": "b452add9449660a6", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["agent-instructions", "secrets", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/tasks/archive/task-drop-phase4b-payment-channels.progress.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-ba8188542b2d44d2", "level": "error", "message": {"text": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-fix-junior-ut-round3.progress.md"}, "properties": {"repobilityId": "e7af915a61cf34a5", "scanner": "scanner-primary", "fingerprint": "ba8188542b2d44d2", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["agent-instructions", "secrets", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/tasks/archive/task-fix-junior-ut-round3.progress.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-ab6bc9125ce00f8d", "level": "error", "message": {"text": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-fix-phase4b-round2.md"}, "properties": {"repobilityId": "e928751bf558186f", "scanner": "scanner-primary", "fingerprint": "ab6bc9125ce00f8d", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["agent-instructions", "secrets", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/tasks/archive/task-fix-phase4b-round2.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-00debfbfdc3c17d2", "level": "error", "message": {"text": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-documents-fixes-batch2.md"}, "properties": {"repobilityId": "1de0cb4ab6e5af2b", "scanner": "scanner-primary", "fingerprint": "00debfbfdc3c17d2", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["agent-instructions", "secrets", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/tasks/archive/task-documents-fixes-batch2.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-541f1d55e8914f9d", "level": "error", "message": {"text": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-fix-pr22-ui-round4.md"}, "properties": {"repobilityId": "243be2521d066e00", "scanner": "scanner-primary", "fingerprint": "541f1d55e8914f9d", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["agent-instructions", "secrets", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/tasks/archive/task-fix-pr22-ui-round4.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-9b16e0ec0016aef7", "level": "error", "message": {"text": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-project-credentials.md"}, "properties": {"repobilityId": "c66553c1e1f7bb55", "scanner": "scanner-primary", "fingerprint": "9b16e0ec0016aef7", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["agent-instructions", "secrets", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/tasks/archive/task-project-credentials.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-b41d40119aaa949f", "level": "error", "message": {"text": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-infra-e2e-watchdog.completed.md"}, "properties": {"repobilityId": "32fda40bd7574007", "scanner": "scanner-primary", "fingerprint": "b41d40119aaa949f", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["agent-instructions", "secrets", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/tasks/archive/task-infra-e2e-watchdog.completed.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-8ff5eec737eb2e1c", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: .claude/tasks/archive/task-infra-e2e-watchdog.completed.md"}, "properties": {"repobilityId": "e26aa2f757413adc", "scanner": "scanner-primary", "fingerprint": "8ff5eec737eb2e1c", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/tasks/archive/task-infra-e2e-watchdog.completed.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-75609e12630195e5", "level": "error", "message": {"text": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-fix-transactions-sort-by-createdat.md"}, "properties": {"repobilityId": "0c1093c8eff859c2", "scanner": "scanner-primary", "fingerprint": "75609e12630195e5", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["agent-instructions", "secrets", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/tasks/archive/task-fix-transactions-sort-by-createdat.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-21889a0b27d25c70", "level": "error", "message": {"text": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-onboarding-6a-data-backend.progress.md"}, "properties": {"repobilityId": "0388d2855b4342c4", "scanner": "scanner-primary", "fingerprint": "21889a0b27d25c70", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["agent-instructions", "secrets", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/tasks/archive/task-onboarding-6a-data-backend.progress.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-151d2303c73b8e7e", "level": "error", "message": {"text": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-team-senior-share-override.progress.md"}, "properties": {"repobilityId": "059f800befa026df", "scanner": "scanner-primary", "fingerprint": "151d2303c73b8e7e", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["agent-instructions", "secrets", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/tasks/archive/task-team-senior-share-override.progress.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-3822aeaa5c2a017e", "level": "error", "message": {"text": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-finance-receipt-integration.md"}, "properties": {"repobilityId": "0cecb9eade97fd25", "scanner": "scanner-primary", "fingerprint": "3822aeaa5c2a017e", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["agent-instructions", "secrets", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/tasks/archive/task-finance-receipt-integration.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-6968b6652afafe0c", "level": "error", "message": {"text": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-fix-refactor-tov-financetab-filter.md"}, "properties": {"repobilityId": "d0a2e8dbeba61ffe", "scanner": "scanner-primary", "fingerprint": "6968b6652afafe0c", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["agent-instructions", "secrets", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/tasks/archive/task-fix-refactor-tov-financetab-filter.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-617eefb9730ceda4", "level": "error", "message": {"text": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-aggregate-invoice-per-payout.md"}, "properties": {"repobilityId": "29d41b0261461e90", "scanner": "scanner-primary", "fingerprint": "617eefb9730ceda4", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["agent-instructions", "secrets", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/tasks/archive/task-aggregate-invoice-per-payout.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-a47a0d4b15d081bb", "level": "error", "message": {"text": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-projects-senior-share-override.md"}, "properties": {"repobilityId": "4e028ea7e46a6111", "scanner": "scanner-primary", "fingerprint": "a47a0d4b15d081bb", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["agent-instructions", "secrets", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/tasks/archive/task-projects-senior-share-override.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-1d01c3c9456328e2", "level": "error", "message": {"text": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-fix-round2-polish.md"}, "properties": {"repobilityId": "732c2366bc0f22fa", "scanner": "scanner-primary", "fingerprint": "1d01c3c9456328e2", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["agent-instructions", "secrets", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/tasks/archive/task-fix-round2-polish.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-e83da27598bbee97", "level": "error", "message": {"text": "Agent instruction/config may expose a secret: .claude/tasks/archive/2026-05-19-task-fix-teams-detail-ui.md"}, "properties": {"repobilityId": "8b26dab557060cc0", "scanner": "scanner-primary", "fingerprint": "e83da27598bbee97", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["agent-instructions", "secrets", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/tasks/archive/2026-05-19-task-fix-teams-detail-ui.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-345cdcb0d1586794", "level": "error", "message": {"text": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-drop-phase1-e2e.md"}, "properties": {"repobilityId": "acf361415dac3a86", "scanner": "scanner-primary", "fingerprint": "345cdcb0d1586794", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["agent-instructions", "secrets", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/tasks/archive/task-drop-phase1-e2e.md"}, "region": {"startLine": 9}}}]}, {"ruleId": "scanner-4bbfe224212a8616", "level": "error", "message": {"text": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-junior-ux-1-backend.md"}, "properties": {"repobilityId": "6a5773755e1383b7", "scanner": "scanner-primary", "fingerprint": "4bbfe224212a8616", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["agent-instructions", "secrets", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/tasks/archive/task-junior-ux-1-backend.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-3e6f4b5fa56e1cd7", "level": "error", "message": {"text": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-drop-phase4a-balances-backend.md"}, "properties": {"repobilityId": "893fb9e81430fdfb", "scanner": "scanner-primary", "fingerprint": "3e6f4b5fa56e1cd7", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["agent-instructions", "secrets", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/tasks/archive/task-drop-phase4a-balances-backend.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-abc574595758c8fe", "level": "error", "message": {"text": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-fix-drop-unify-dialog.md"}, "properties": {"repobilityId": "209446f3c656dfa0", "scanner": "scanner-primary", "fingerprint": "abc574595758c8fe", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["agent-instructions", "secrets", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/tasks/archive/task-fix-drop-unify-dialog.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-7a1b8d2b5295c78c", "level": "error", "message": {"text": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-avatars-logos-integration.md"}, "properties": {"repobilityId": "96c068d5673d71ef", "scanner": "scanner-primary", "fingerprint": "7a1b8d2b5295c78c", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["agent-instructions", "secrets", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/tasks/archive/task-avatars-logos-integration.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-6877b45fd25a571b", "level": "error", "message": {"text": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-drop-phase4b-payment-channels.md"}, "properties": {"repobilityId": "96b9bc3d55185fca", "scanner": "scanner-primary", "fingerprint": "6877b45fd25a571b", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["agent-instructions", "secrets", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/tasks/archive/task-drop-phase4b-payment-channels.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-cee7dd2c60b3028a", "level": "error", "message": {"text": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-drop-phase2-frontend.progress.md"}, "properties": {"repobilityId": "ce7c17beb2544b27", "scanner": "scanner-primary", "fingerprint": "cee7dd2c60b3028a", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["agent-instructions", "secrets", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/tasks/archive/task-drop-phase2-frontend.progress.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-4d0faddcbb9a0e45", "level": "error", "message": {"text": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-infra-merge-gate.md"}, "properties": {"repobilityId": "bd7cd516f3cf53eb", "scanner": "scanner-primary", "fingerprint": "4d0faddcbb9a0e45", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["agent-instructions", "secrets", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/tasks/archive/task-infra-merge-gate.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-f9ecedea958eb125", "level": "error", "message": {"text": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-archive-backend-foundation.md"}, "properties": {"repobilityId": "6cf208219cf1b40f", "scanner": "scanner-primary", "fingerprint": "f9ecedea958eb125", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["agent-instructions", "secrets", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/tasks/archive/task-archive-backend-foundation.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-741c6b9018d3963e", "level": "error", "message": {"text": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-fix-phone-input-flake.md"}, "properties": {"repobilityId": "cd1c7bccf42ea94e", "scanner": "scanner-primary", "fingerprint": "741c6b9018d3963e", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["agent-instructions", "secrets", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/tasks/archive/task-fix-phone-input-flake.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-4422773b29cc37ab", "level": "error", "message": {"text": "Agent instruction/config may expose a secret: .claude/tasks/archive/task-arch-agents-md-fixes.md"}, "properties": {"repobilityId": "9510de055db229f0", "scanner": "scanner-primary", "fingerprint": "4422773b29cc37ab", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["agent-instructions", "secrets", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/tasks/archive/task-arch-agents-md-fixes.md"}, "region": {"startLine": 19}}}]}, {"ruleId": "scanner-5a55471d3ba1908a", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: .claude/tasks/templates/task-fix-e2e-broken.md"}, "properties": {"repobilityId": "a5e0db18ff3b14bc", "scanner": "scanner-primary", "fingerprint": "5a55471d3ba1908a", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/tasks/templates/task-fix-e2e-broken.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-1cf528b3ec60830a", "level": "error", "message": {"text": "Agent instruction/config may expose a secret: .claude/agents/pm-snippets.md"}, "properties": {"repobilityId": "32bfd75b21c59006", "scanner": "scanner-primary", "fingerprint": "1cf528b3ec60830a", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["agent-instructions", "secrets", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/agents/pm-snippets.md"}, "region": {"startLine": 152}}}]}, {"ruleId": "scanner-ea095cd99b5ea026", "level": "error", "message": {"text": "Agent instruction/config may expose a secret: .claude/agents/pm.md"}, "properties": {"repobilityId": "b469a3600524e86e", "scanner": "scanner-primary", "fingerprint": "ea095cd99b5ea026", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["agent-instructions", "secrets", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/agents/pm.md"}, "region": {"startLine": 544}}}]}, {"ruleId": "scanner-d59d316e358cf2a4", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: .claude/agents/CLAUDE-tools.md"}, "properties": {"repobilityId": "6523fc46b095ea4c", "scanner": "scanner-primary", "fingerprint": "d59d316e358cf2a4", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/agents/CLAUDE-tools.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-0c231845dfc926cf", "level": "error", "message": {"text": "Agent instruction/config may expose a secret: .claude/agents/devops.md"}, "properties": {"repobilityId": "b06e0137a45376be", "scanner": "scanner-primary", "fingerprint": "0c231845dfc926cf", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["agent-instructions", "secrets", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/agents/devops.md"}, "region": {"startLine": 200}}}]}, {"ruleId": "scanner-cfe7476db2457805", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: .claude/agents/CLAUDE-legal.md"}, "properties": {"repobilityId": "9a72d6c431b905a0", "scanner": "scanner-primary", "fingerprint": "cfe7476db2457805", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/agents/CLAUDE-legal.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-f0f8e82f922303a5", "level": "error", "message": {"text": "Agent instruction/config may expose a secret: .claude/agents/memory/README.md"}, "properties": {"repobilityId": "abba4d5638fd7354", "scanner": "scanner-primary", "fingerprint": "f0f8e82f922303a5", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["agent-instructions", "secrets", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/agents/memory/README.md"}, "region": {"startLine": 71}}}]}, {"ruleId": "scanner-164c74a768c9d679", "level": "error", "message": {"text": "Agent instruction/config may expose a secret: .claude/agents/memory/pm/lessons.md"}, "properties": {"repobilityId": "b4380638cc9fa088", "scanner": "scanner-primary", "fingerprint": "164c74a768c9d679", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["agent-instructions", "secrets", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/agents/memory/pm/lessons.md"}, "region": {"startLine": 8}}}]}, {"ruleId": "scanner-510cc4347a150a8b", "level": "error", "message": {"text": "Agent instruction/config may expose a secret: .claude/agents/memory/coder/lessons.md"}, "properties": {"repobilityId": "719580086390fc1a", "scanner": "scanner-primary", "fingerprint": "510cc4347a150a8b", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["agent-instructions", "secrets", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/agents/memory/coder/lessons.md"}, "region": {"startLine": 8}}}]}, {"ruleId": "scanner-1cf354409f16f5f6", "level": "error", "message": {"text": "Agent instruction/config may expose a secret: .claude/agents/memory/devops/lessons.md"}, "properties": {"repobilityId": "4323d7a522be0ac9", "scanner": "scanner-primary", "fingerprint": "1cf354409f16f5f6", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["agent-instructions", "secrets", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/agents/memory/devops/lessons.md"}, "region": {"startLine": 8}}}]}, {"ruleId": "scanner-47fc5ef4ead65944", "level": "error", "message": {"text": "Agent instruction/config may expose a secret: .claude/agents/memory/autotest/lessons.md"}, "properties": {"repobilityId": "169df5bae102603c", "scanner": "scanner-primary", "fingerprint": "47fc5ef4ead65944", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["agent-instructions", "secrets", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/agents/memory/autotest/lessons.md"}, "region": {"startLine": 8}}}]}, {"ruleId": "scanner-f51dc032ccbb5ac2", "level": "error", "message": {"text": "Agent instruction/config may expose a secret: .claude/agents/specs/2026-05-20-productive-pipeline-design.md"}, "properties": {"repobilityId": "b986b5d5ebd410e5", "scanner": "scanner-primary", "fingerprint": "f51dc032ccbb5ac2", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["agent-instructions", "secrets", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/agents/specs/2026-05-20-productive-pipeline-design.md"}, "region": {"startLine": 15}}}]}, {"ruleId": "scanner-d612367921d55fdc", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: .claude/skills/pm-dispatching/SKILL.md"}, "properties": {"repobilityId": "0d8ce74f84fb1771", "scanner": "scanner-primary", "fingerprint": "d612367921d55fdc", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/skills/pm-dispatching/SKILL.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-8bb09d7801d21aea", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: .claude/skills/code-review-discipline/SKILL.md"}, "properties": {"repobilityId": "c62d57a08defa028", "scanner": "scanner-primary", "fingerprint": "8bb09d7801d21aea", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/skills/code-review-discipline/SKILL.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-278fd0f9a9cb89d5", "level": "error", "message": {"text": "Agent instruction/config may expose a secret: .claude/knowledge/legal-consultations/2026-05-31-cash-crypto-undeclared-risk-analysis.md"}, "properties": {"repobilityId": "13c92b60b21ad98d", "scanner": "scanner-primary", "fingerprint": "278fd0f9a9cb89d5", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["agent-instructions", "secrets", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/knowledge/legal-consultations/2026-05-31-cash-crypto-undeclared-risk-analysis.md"}, "region": {"startLine": 325}}}]}, {"ruleId": "scanner-0312c5ac11ee35cf", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: skills/ecc/security-scan/SKILL.md"}, "properties": {"repobilityId": "2a14e12ba5b4691c", "scanner": "scanner-primary", "fingerprint": "0312c5ac11ee35cf", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "skill_file"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/ecc/security-scan/SKILL.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-e7f561b532fafbac", "level": "warning", "message": {"text": "Agent instruction contains unpinned remote install: skills/ecc/security-scan/SKILL.md"}, "properties": {"repobilityId": "2ba3e9deeb21be5a", "scanner": "scanner-primary", "fingerprint": "e7f561b532fafbac", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "supply-chain", "skill_file"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/ecc/security-scan/SKILL.md"}, "region": {"startLine": 38}}}]}, {"ruleId": "scanner-9085238bc61cca10", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: skills/ecc/evm-token-decimals/SKILL.md"}, "properties": {"repobilityId": "c5ded821ff8054c8", "scanner": "scanner-primary", "fingerprint": "9085238bc61cca10", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "skill_file"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/ecc/evm-token-decimals/SKILL.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-8627bc2264abbaa2", "level": "error", "message": {"text": "Agent instruction/config may expose a secret: skills/ecc/api-design/SKILL.md"}, "properties": {"repobilityId": "fc696329b92361aa", "scanner": "scanner-primary", "fingerprint": "8627bc2264abbaa2", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["agent-instructions", "secrets", "skill_file"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/ecc/api-design/SKILL.md"}, "region": {"startLine": 306}}}]}, {"ruleId": "scanner-c395391dd393d806", "level": "error", "message": {"text": "Agent instruction/config may expose a secret: skills/ecc/backend-patterns/SKILL.md"}, "properties": {"repobilityId": "4c0b3d6420a17e67", "scanner": "scanner-primary", "fingerprint": "c395391dd393d806", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["agent-instructions", "secrets", "skill_file"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/ecc/backend-patterns/SKILL.md"}, "region": {"startLine": 107}}}]}, {"ruleId": "scanner-edcba33d622e7fa3", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: skills/ecc/backend-patterns/SKILL.md"}, "properties": {"repobilityId": "68922e73592a0bd5", "scanner": "scanner-primary", "fingerprint": "edcba33d622e7fa3", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "skill_file"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/ecc/backend-patterns/SKILL.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-3c06d2a4c7a523b5", "level": "error", "message": {"text": "Agent instruction/config may expose a secret: skills/ecc/security-review/SKILL.md"}, "properties": {"repobilityId": "7c1606d4b41e2758", "scanner": "scanner-primary", "fingerprint": "3c06d2a4c7a523b5", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["agent-instructions", "secrets", "skill_file"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/ecc/security-review/SKILL.md"}, "region": {"startLine": 28}}}]}, {"ruleId": "scanner-3c45c9056690d801", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/api/scripts/generate-doc-fixtures.mjs:73"}, "properties": {"repobilityId": "7e401fcf075ab1ea", "scanner": "scanner-primary", "fingerprint": "3c45c9056690d801", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-16f2accf50455cbb", "level": "none", "message": {"text": "Commented-code block (7 lines) in apps/api/src/main.ts:19"}, "properties": {"repobilityId": "ce0ccb32a4ecf01f", "scanner": "scanner-primary", "fingerprint": "16f2accf50455cbb", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-06086e7ada8cf791", "level": "none", "message": {"text": "Commented-code block (6 lines) in apps/api/src/app.module.ts:67"}, "properties": {"repobilityId": "e825f5c722c5a242", "scanner": "scanner-primary", "fingerprint": "06086e7ada8cf791", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2006f6f275dd1670", "level": "none", "message": {"text": "Commented-code block (6 lines) in apps/api/src/users/users.archive.spec.ts:13"}, "properties": {"repobilityId": "fba8056268c1ad1c", "scanner": "scanner-primary", "fingerprint": "2006f6f275dd1670", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-febd3ba6106c3ecf", "level": "none", "message": {"text": "Commented-code block (13 lines) in apps/api/src/users/users.service.ts:41"}, "properties": {"repobilityId": "d1de866448778066", "scanner": "scanner-primary", "fingerprint": "febd3ba6106c3ecf", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-18c3961337599c3f", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/api/src/users/users.controller.ts:63"}, "properties": {"repobilityId": "3b9de324a4720c83", "scanner": "scanner-primary", "fingerprint": "18c3961337599c3f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0bedb2f765abcb7c", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/api/src/users/users.service.spec.ts:157"}, "properties": {"repobilityId": "41dc082b19755dde", "scanner": "scanner-primary", "fingerprint": "0bedb2f765abcb7c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4ded5df9ce5797ef", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/api/src/users/users-access.service.spec.ts:50"}, "properties": {"repobilityId": "999f41dde3876b6a", "scanner": "scanner-primary", "fingerprint": "4ded5df9ce5797ef", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-70c15564cdeae5b9", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/api/src/users/users-access.service.ts:76"}, "properties": {"repobilityId": "d592be8d0b2f63a2", "scanner": "scanner-primary", "fingerprint": "70c15564cdeae5b9", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-255a7f95b1053efe", "level": "none", "message": {"text": "Commented-code block (6 lines) in apps/api/src/notifications/notifications.controller.ts:80"}, "properties": {"repobilityId": "487ebe98b6f210e9", "scanner": "scanner-primary", "fingerprint": "255a7f95b1053efe", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d9003f04737781ce", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/api/src/notifications/notifications.service.spec.ts:135"}, "properties": {"repobilityId": "9223dc47e7ac7ff0", "scanner": "scanner-primary", "fingerprint": "d9003f04737781ce", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1335c508fb220800", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/api/src/config/env.ts:14"}, "properties": {"repobilityId": "e821edf1b717bcb7", "scanner": "scanner-primary", "fingerprint": "1335c508fb220800", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a88f09e704a26b31", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/api/src/auth/auth.service.ts:43"}, "properties": {"repobilityId": "4fadabfe2298210b", "scanner": "scanner-primary", "fingerprint": "a88f09e704a26b31", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-f3233690c45ced32", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/api/src/auth/auth.service.spec.ts:17"}, "properties": {"repobilityId": "4f0a96539c301010", "scanner": "scanner-primary", "fingerprint": "f3233690c45ced32", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-882001775a0e3cf8", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/api/src/auth/onboarding.guard.ts:46"}, "properties": {"repobilityId": "7428e8a743976987", "scanner": "scanner-primary", "fingerprint": "882001775a0e3cf8", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c0579ae8196932aa", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/api/src/auth/auth.controller.ts:114"}, "properties": {"repobilityId": "71bd19735eddae38", "scanner": "scanner-primary", "fingerprint": "c0579ae8196932aa", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-be80560d10e902b0", "level": "none", "message": {"text": "Commented-code block (6 lines) in apps/api/src/auth/onboarding.guard.integration.spec.ts:377"}, "properties": {"repobilityId": "5cebd1f671897fbb", "scanner": "scanner-primary", "fingerprint": "be80560d10e902b0", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ce799eb7febd983a", "level": "none", "message": {"text": "Commented-code block (7 lines) in apps/api/src/projects/projects-junior-masking.rbac.integration.spec.ts:715"}, "properties": {"repobilityId": "c9ad1cbb082b21d0", "scanner": "scanner-primary", "fingerprint": "ce799eb7febd983a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-312be85b02e7e53c", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/api/src/projects/admin-as-senior.rbac.integration.spec.ts:434"}, "properties": {"repobilityId": "e677f463b7026eba", "scanner": "scanner-primary", "fingerprint": "312be85b02e7e53c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-278a6323b7a9e1d6", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/api/src/projects/projects.drop-feed.spec.ts:137"}, "properties": {"repobilityId": "c2f02951b1de9504", "scanner": "scanner-primary", "fingerprint": "278a6323b7a9e1d6", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-99c5eda223c3214a", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/api/src/projects/projects.service.spec.ts:367"}, "properties": {"repobilityId": "d84b0e7bef532ea4", "scanner": "scanner-primary", "fingerprint": "99c5eda223c3214a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f9cd93b56f0865ed", "level": "none", "message": {"text": "Commented-code block (6 lines) in apps/api/src/projects/projects.service.ts:82"}, "properties": {"repobilityId": "00aec5a3f5108b4d", "scanner": "scanner-primary", "fingerprint": "f9cd93b56f0865ed", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-baef236309122c6a", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/api/src/projects/projects.archive.spec.ts:267"}, "properties": {"repobilityId": "e848a7af773683b9", "scanner": "scanner-primary", "fingerprint": "baef236309122c6a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a4eef27b7ca64e1b", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/api/src/teams/teams.service.spec.ts:337"}, "properties": {"repobilityId": "4c7d9f4c835d2e4a", "scanner": "scanner-primary", "fingerprint": "a4eef27b7ca64e1b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2935d6829e53c0b4", "level": "none", "message": {"text": "Commented-code block (6 lines) in apps/api/src/teams/teams.drop.spec.ts:497"}, "properties": {"repobilityId": "d334b0e1c30ebebd", "scanner": "scanner-primary", "fingerprint": "2935d6829e53c0b4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-effdd64bb65a7639", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/api/src/teams/teams.archive.spec.ts:322"}, "properties": {"repobilityId": "df0f53c8d2e37eec", "scanner": "scanner-primary", "fingerprint": "effdd64bb65a7639", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ac621e03920d65d4", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/api/src/teams/teams.service.ts:94"}, "properties": {"repobilityId": "988f22558f082a62", "scanner": "scanner-primary", "fingerprint": "ac621e03920d65d4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-dad057f9e35e29a0", "level": "none", "message": {"text": "Commented-code block (7 lines) in apps/api/src/legends/legends.controller.integration.spec.ts:35"}, "properties": {"repobilityId": "d705433527673b2d", "scanner": "scanner-primary", "fingerprint": "dad057f9e35e29a0", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7fe0e2ae0aecde7c", "level": "none", "message": {"text": "Commented-code block (6 lines) in apps/api/src/legends/legends.rbac.integration.spec.ts:81"}, "properties": {"repobilityId": "683ec8612d86b10c", "scanner": "scanner-primary", "fingerprint": "7fe0e2ae0aecde7c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f70ec3b0815e6cfb", "level": "none", "message": {"text": "Commented-code block (6 lines) in apps/api/src/legends/legends.controller.ts:6"}, "properties": {"repobilityId": "c18c32d7b0e14c02", "scanner": "scanner-primary", "fingerprint": "f70ec3b0815e6cfb", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6f40af795284128d", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/api/src/audit/audit-removal.integration.spec.ts:53"}, "properties": {"repobilityId": "010f9d9c378c95e4", "scanner": "scanner-primary", "fingerprint": "6f40af795284128d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-bf7fb1ff1786f6e8", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/api/src/finance/transactions.controller.ts:131"}, "properties": {"repobilityId": "7bc587bc1dcf0252", "scanner": "scanner-primary", "fingerprint": "bf7fb1ff1786f6e8", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-3e935943f4163254", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/api/src/finance/accountant-summary.integration.spec.ts:215"}, "properties": {"repobilityId": "ea5a488be1208f24", "scanner": "scanner-primary", "fingerprint": "3e935943f4163254", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-40509390ad33c9fb", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/api/src/finance/transactions.summary.rbac.integration.spec.ts:52"}, "properties": {"repobilityId": "3290081e1cf90a3d", "scanner": "scanner-primary", "fingerprint": "40509390ad33c9fb", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f37c1e0e0329425b", "level": "none", "message": {"text": "Commented-code block (6 lines) in apps/api/src/finance/transactions.confirm-payout.spec.ts:145"}, "properties": {"repobilityId": "b70a66e0ed47873c", "scanner": "scanner-primary", "fingerprint": "f37c1e0e0329425b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e1a06522c5301a97", "level": "none", "message": {"text": "Commented-code block (6 lines) in apps/api/src/finance/receipt-replace.integration.spec.ts:155"}, "properties": {"repobilityId": "3f4e7934f0d6e26f", "scanner": "scanner-primary", "fingerprint": "e1a06522c5301a97", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-3ecea16409f5127c", "level": "none", "message": {"text": "Commented-code block (10 lines) in apps/api/src/finance/transactions.payout-flow.spec.ts:90"}, "properties": {"repobilityId": "cf2ab25f6f1bc506", "scanner": "scanner-primary", "fingerprint": "3ecea16409f5127c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f85b45acbac7f29f", "level": "none", "message": {"text": "Commented-code block (7 lines) in apps/api/src/finance/payment-channel.service.ts:225"}, "properties": {"repobilityId": "ef754dc534c1a931", "scanner": "scanner-primary", "fingerprint": "f85b45acbac7f29f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8d9a96385a426e45", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/api/src/finance/transactions.expense-receipt.spec.ts:144"}, "properties": {"repobilityId": "d095b29c7d2e1da1", "scanner": "scanner-primary", "fingerprint": "8d9a96385a426e45", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-dcb1095595f2eade", "level": "none", "message": {"text": "Commented-code block (6 lines) in apps/api/src/finance/total-earned.integration.spec.ts:296"}, "properties": {"repobilityId": "c8b0d060731e2ca6", "scanner": "scanner-primary", "fingerprint": "dcb1095595f2eade", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-fcb9b71ec2607b3f", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/api/src/finance/transactions.get-summary.spec.ts:61"}, "properties": {"repobilityId": "e73ae336bb3289c5", "scanner": "scanner-primary", "fingerprint": "fcb9b71ec2607b3f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c644bf3fe3ba8545", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/api/src/finance/etherscan.service.ts:54"}, "properties": {"repobilityId": "137700d8685ba47f", "scanner": "scanner-primary", "fingerprint": "c644bf3fe3ba8545", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-dd0171c8c8494d55", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/api/src/finance/transactions.service.ts:160"}, "properties": {"repobilityId": "39a2b2eea1252f3e", "scanner": "scanner-primary", "fingerprint": "dd0171c8c8494d55", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6b45b03c493711c7", "level": "none", "message": {"text": "Commented-code block (6 lines) in apps/api/src/database/schema.ts:70"}, "properties": {"repobilityId": "d7cb10cf4feb0709", "scanner": "scanner-primary", "fingerprint": "6b45b03c493711c7", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c5c227cbdc1aa0dc", "level": "none", "message": {"text": "Commented-code block (7 lines) in apps/api/src/database/seed.ts:635"}, "properties": {"repobilityId": "8a9de3deed33d4e6", "scanner": "scanner-primary", "fingerprint": "c5c227cbdc1aa0dc", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e9ee6feb14c053d2", "level": "none", "message": {"text": "Commented-code block (7 lines) in apps/api/src/onboarding/onboarding-contract.integration.spec.ts:130"}, "properties": {"repobilityId": "0ec3ef2f3fbb201f", "scanner": "scanner-primary", "fingerprint": "e9ee6feb14c053d2", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-118d343f63fab04e", "level": "none", "message": {"text": "Commented-code block (6 lines) in apps/api/src/onboarding/onboarding.service.ts:59"}, "properties": {"repobilityId": "fa3ed136e9c9bcbc", "scanner": "scanner-primary", "fingerprint": "118d343f63fab04e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-12c577f07ead1eb4", "level": "none", "message": {"text": "Commented-code block (6 lines) in apps/api/src/onboarding/onboarding.service.spec.ts:289"}, "properties": {"repobilityId": "c2a9791dd2f8a176", "scanner": "scanner-primary", "fingerprint": "12c577f07ead1eb4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-162d3ce057bc1b01", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/api/src/contracts/contract-filename.util.ts:21"}, "properties": {"repobilityId": "d0e138e463294e78", "scanner": "scanner-primary", "fingerprint": "162d3ce057bc1b01", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-74e7e5df7093210b", "level": "none", "message": {"text": "Commented-code block (6 lines) in apps/api/src/contracts/contract-rendering.ts:178"}, "properties": {"repobilityId": "a96c6911ac1772c5", "scanner": "scanner-primary", "fingerprint": "74e7e5df7093210b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-642ba71f5621c960", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/api/src/contracts/contract-controllers.integration.spec.ts:89"}, "properties": {"repobilityId": "176d24bfd5f1ea14", "scanner": "scanner-primary", "fingerprint": "642ba71f5621c960", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f6781682da3504c0", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/api/src/contracts/employee-contracts.service.ts:181"}, "properties": {"repobilityId": "1d7c36abedd48d07", "scanner": "scanner-primary", "fingerprint": "f6781682da3504c0", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8b6a85cfdeb67489", "level": "none", "message": {"text": "Commented-code block (7 lines) in apps/api/src/contracts/contract-pdf.service.ts:270"}, "properties": {"repobilityId": "818bce154f626590", "scanner": "scanner-primary", "fingerprint": "8b6a85cfdeb67489", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-49983766afbad01e", "level": "none", "message": {"text": "Commented-code block (7 lines) in apps/api/src/contracts/signed-contracts.service.ts:83"}, "properties": {"repobilityId": "58998595f54edc6f", "scanner": "scanner-primary", "fingerprint": "49983766afbad01e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-9ef928f6709798a6", "level": "none", "message": {"text": "Commented-code block (15 lines) in apps/api/src/documents/documents-unified.integration.spec.ts:704"}, "properties": {"repobilityId": "d88388a64a3d1cd8", "scanner": "scanner-primary", "fingerprint": "9ef928f6709798a6", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f51289b55022f275", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/api/src/documents/documents.service.ts:106"}, "properties": {"repobilityId": "bbcba4101c9460a0", "scanner": "scanner-primary", "fingerprint": "f51289b55022f275", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-47856cab2147910e", "level": "none", "message": {"text": "Commented-code block (6 lines) in apps/api/src/documents/compression.service.spec.ts:132"}, "properties": {"repobilityId": "37ba3d369b63488b", "scanner": "scanner-primary", "fingerprint": "47856cab2147910e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-442a168ab613d5e9", "level": "none", "message": {"text": "Commented-code block (6 lines) in apps/api/src/documents/documents.service.spec.ts:160"}, "properties": {"repobilityId": "faef9a90071c2712", "scanner": "scanner-primary", "fingerprint": "442a168ab613d5e9", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6dd614c6e085a45f", "level": "none", "message": {"text": "Commented-code block (6 lines) in apps/api/src/interviews/interviews-rbac.integration.spec.ts:101"}, "properties": {"repobilityId": "d75488b178291488", "scanner": "scanner-primary", "fingerprint": "6dd614c6e085a45f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-cee475931be1592f", "level": "none", "message": {"text": "Commented-code block (6 lines) in apps/api/src/interviews/hr-summary.integration.spec.ts:341"}, "properties": {"repobilityId": "f47e6011162cc3e4", "scanner": "scanner-primary", "fingerprint": "cee475931be1592f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-146147ce29ba21a7", "level": "none", "message": {"text": "Commented-code block (8 lines) in apps/api/src/credentials/credentials.service.ts:287"}, "properties": {"repobilityId": "7e181da09e811d9f", "scanner": "scanner-primary", "fingerprint": "146147ce29ba21a7", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-12e999ac61798a6b", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/api/src/credentials/user-credentials.rbac.integration.spec.ts:591"}, "properties": {"repobilityId": "d42da3b68cd447f2", "scanner": "scanner-primary", "fingerprint": "12e999ac61798a6b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-628b4ad1d8b9b8a3", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/api/src/invoices/invoice-pdf.service.ts:205"}, "properties": {"repobilityId": "da2ca9283c0aae03", "scanner": "scanner-primary", "fingerprint": "628b4ad1d8b9b8a3", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ee8ecdb3d11eb218", "level": "none", "message": {"text": "Commented-code block (9 lines) in apps/api/src/invoices/invoice-pdf.service.spec.ts:31"}, "properties": {"repobilityId": "0fbf9c25790701cb", "scanner": "scanner-primary", "fingerprint": "ee8ecdb3d11eb218", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7bdc3d3d98ca8b49", "level": "none", "message": {"text": "Commented-code block (7 lines) in apps/api/src/invoices/invoices.service.spec.ts:111"}, "properties": {"repobilityId": "3763c25b312b05b4", "scanner": "scanner-primary", "fingerprint": "7bdc3d3d98ca8b49", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b5d902bb9537f5a8", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/api/src/invoices/invoices.service.ts:482"}, "properties": {"repobilityId": "55c225f4fbfb1a0a", "scanner": "scanner-primary", "fingerprint": "b5d902bb9537f5a8", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b3c2178ab3b5b45c", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/web/vite.config.ts:21"}, "properties": {"repobilityId": "cc847b766d78ebaa", "scanner": "scanner-primary", "fingerprint": "b3c2178ab3b5b45c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a1bc3371842b4938", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/web/vite.config.ts:227"}, "properties": {"repobilityId": "7cdd4acfcf06ec7d", "scanner": "scanner-primary", "fingerprint": "a1bc3371842b4938", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-185d7d8b5ee2d6ee", "level": "none", "message": {"text": "Commented-code block (10 lines) in apps/web/vitest.config.ts:42"}, "properties": {"repobilityId": "7bc438b8a20b1180", "scanner": "scanner-primary", "fingerprint": "185d7d8b5ee2d6ee", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a76c94fd55e9c7eb", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/web/app/client.tsx:6"}, "properties": {"repobilityId": "572a3f95a87a2694", "scanner": "scanner-primary", "fingerprint": "a76c94fd55e9c7eb", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5a54c893e6bc2f90", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/web/app/components/layout/notifications-bell.tsx:96"}, "properties": {"repobilityId": "5c0c4ad8edb1e123", "scanner": "scanner-primary", "fingerprint": "5a54c893e6bc2f90", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1bdcebc8fe464c9c", "level": "none", "message": {"text": "Commented-code block (7 lines) in apps/web/app/components/users/UserDialog.tsx:173"}, "properties": {"repobilityId": "f0bf50d8e7fc3efe", "scanner": "scanner-primary", "fingerprint": "1bdcebc8fe464c9c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-11f3b6509c7caaa3", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/web/app/components/users/__tests__/UserDialog.edit-prefill.test.tsx:46"}, "properties": {"repobilityId": "a66affa7a8d0ed14", "scanner": "scanner-primary", "fingerprint": "11f3b6509c7caaa3", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-9655fd5744905323", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/web/app/components/projects/__tests__/ProjectRow.test.tsx:134"}, "properties": {"repobilityId": "313d96f9458ae383", "scanner": "scanner-primary", "fingerprint": "9655fd5744905323", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6a6dda79592fdea0", "level": "none", "message": {"text": "Commented-code block (9 lines) in apps/web/app/components/ui/crm-dialog.tsx:19"}, "properties": {"repobilityId": "6aa9682531c63ebe", "scanner": "scanner-primary", "fingerprint": "6a6dda79592fdea0", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-16587fbf1a6f6132", "level": "none", "message": {"text": "Commented-code block (13 lines) in apps/web/app/components/crm/nav-sidebar.tsx:40"}, "properties": {"repobilityId": "2ee13a6b7783e8cd", "scanner": "scanner-primary", "fingerprint": "16587fbf1a6f6132", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d51ab9261d21ba05", "level": "none", "message": {"text": "Commented-code block (7 lines) in apps/web/app/components/invoices/invoice-detail-dialog.tsx:396"}, "properties": {"repobilityId": "74c0b48b5e93b516", "scanner": "scanner-primary", "fingerprint": "d51ab9261d21ba05", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-cac3f7b136377d01", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/web/app/components/invoices/__tests__/invoice-detail-dialog.test.tsx:180"}, "properties": {"repobilityId": "7e41a3e1034dacaa", "scanner": "scanner-primary", "fingerprint": "cac3f7b136377d01", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ad5ab58fef09a57c", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/web/app/components/user-profile/UserProfileShell.tsx:95"}, "properties": {"repobilityId": "0d4b432ce0a713f2", "scanner": "scanner-primary", "fingerprint": "ad5ab58fef09a57c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0e69e2e8c6aa6294", "level": "none", "message": {"text": "Commented-code block (6 lines) in apps/web/app/components/user-profile/contract/ContractFillForm.tsx:144"}, "properties": {"repobilityId": "cb2ca9524cb39b04", "scanner": "scanner-primary", "fingerprint": "0e69e2e8c6aa6294", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-46cdc94566968e10", "level": "none", "message": {"text": "Commented-code block (6 lines) in apps/web/app/components/user-profile/contract/__tests__/ContractPdfPreview.test.tsx:15"}, "properties": {"repobilityId": "cba1677a06263c38", "scanner": "scanner-primary", "fingerprint": "46cdc94566968e10", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8e9c25e7a0ce1020", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/web/app/components/user-profile/tabs/FinanceTab.tsx:49"}, "properties": {"repobilityId": "3c0b57b2856bbf20", "scanner": "scanner-primary", "fingerprint": "8e9c25e7a0ce1020", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e139dc8bd023debc", "level": "none", "message": {"text": "Commented-code block (7 lines) in apps/web/app/components/user-profile/tabs/__tests__/FinanceTab.total-earned.test.tsx:40"}, "properties": {"repobilityId": "d5dda13f17d01b19", "scanner": "scanner-primary", "fingerprint": "e139dc8bd023debc", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b1f68953ca9bf616", "level": "none", "message": {"text": "Commented-code block (8 lines) in apps/web/app/lib/route-access.ts:47"}, "properties": {"repobilityId": "c4a5df1184fc6cd2", "scanner": "scanner-primary", "fingerprint": "b1f68953ca9bf616", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e66121a2348cba79", "level": "none", "message": {"text": "Commented-code block (8 lines) in apps/web/app/lib/route-access.spec.ts:212"}, "properties": {"repobilityId": "af5a2097846c7661", "scanner": "scanner-primary", "fingerprint": "e66121a2348cba79", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5fc86d01a28429f0", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/web/app/lib/persister.spec.ts:15"}, "properties": {"repobilityId": "47c9a5927a68706b", "scanner": "scanner-primary", "fingerprint": "5fc86d01a28429f0", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c23846940b9df5d0", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/web/app/routes/invoice.v.$transactionId.tsx:99"}, "properties": {"repobilityId": "9a4798d7f9ccbf52", "scanner": "scanner-primary", "fingerprint": "c23846940b9df5d0", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-46bf43204cf10850", "level": "none", "message": {"text": "Commented-code block (8 lines) in apps/web/app/routes/__root.tsx:16"}, "properties": {"repobilityId": "9f3284b2d1bd0fe1", "scanner": "scanner-primary", "fingerprint": "46bf43204cf10850", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c6a4177c60a2890f", "level": "none", "message": {"text": "Commented-code block (7 lines) in apps/web/app/routes/crm/stats.tsx:570"}, "properties": {"repobilityId": "c260d949a91cd33f", "scanner": "scanner-primary", "fingerprint": "c6a4177c60a2890f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-92c51b18bb5873b5", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/web/app/routes/crm/project.tsx:236"}, "properties": {"repobilityId": "576d10142d50ce44", "scanner": "scanner-primary", "fingerprint": "92c51b18bb5873b5", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-30e719a299c98d6b", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/web/app/routes/crm/route.tsx:82"}, "properties": {"repobilityId": "d859f138750a883e", "scanner": "scanner-primary", "fingerprint": "30e719a299c98d6b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2f6601c693cff154", "level": "none", "message": {"text": "Commented-code block (7 lines) in apps/web/app/routes/crm/documents.tsx:98"}, "properties": {"repobilityId": "1b31ebf4dc6b9b5d", "scanner": "scanner-primary", "fingerprint": "2f6601c693cff154", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-343bd0d6752e9744", "level": "none", "message": {"text": "Commented-code block (7 lines) in apps/web/app/routes/crm/projects/index.tsx:159"}, "properties": {"repobilityId": "e3161922f084d5fb", "scanner": "scanner-primary", "fingerprint": "343bd0d6752e9744", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-acf8b906402aff01", "level": "none", "message": {"text": "Commented-code block (6 lines) in apps/web/app/routes/crm/projects/$projectId.tsx:481"}, "properties": {"repobilityId": "07c8475b1707f5fb", "scanner": "scanner-primary", "fingerprint": "acf8b906402aff01", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2d8a229470849f7f", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/web/app/routes/crm/team/$teamId.tsx:221"}, "properties": {"repobilityId": "b05ef7b14b09fdbf", "scanner": "scanner-primary", "fingerprint": "2d8a229470849f7f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-adf37271c7c4b616", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/web/app/routes/crm/finance/__tests__/sort.test.ts:30"}, "properties": {"repobilityId": "0dcba62597320b87", "scanner": "scanner-primary", "fingerprint": "adf37271c7c4b616", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7914f160de369435", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/web/app/routes/crm/finance/components/MyProjectShares.tsx:67"}, "properties": {"repobilityId": "800596ce1c74763b", "scanner": "scanner-primary", "fingerprint": "7914f160de369435", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2bb471afbb99d4a8", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/web/app/routes/crm/finance/components/TransactionRow.tsx:229"}, "properties": {"repobilityId": "e10c9c41dfe67484", "scanner": "scanner-primary", "fingerprint": "2bb471afbb99d4a8", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ccdacb9f3a549ca3", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/web/app/routes/crm/finance/components/dialogs/PayoutDetailDialog.tsx:22"}, "properties": {"repobilityId": "46c5fcf3b942e17a", "scanner": "scanner-primary", "fingerprint": "ccdacb9f3a549ca3", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4b7cf62bb4b1b512", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/web/app/routes/crm/finance/components/dialogs/CreateTransactionDialog.tsx:86"}, "properties": {"repobilityId": "054c14d0f724e107", "scanner": "scanner-primary", "fingerprint": "4b7cf62bb4b1b512", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-9b656ec00c644779", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/web/app/routes/crm/onboarding/index.tsx:39"}, "properties": {"repobilityId": "e3c53ea1a3b69180", "scanner": "scanner-primary", "fingerprint": "9b656ec00c644779", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a5cab266edba1f2e", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/web/app/routes/crm_/login.tsx:33"}, "properties": {"repobilityId": "d32a47262eec7272", "scanner": "scanner-primary", "fingerprint": "a5cab266edba1f2e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a4e925f5ab8eecd4", "level": "none", "message": {"text": "Commented-code block (7 lines) in apps/web/app/hooks/use-notifications-api.ts:110"}, "properties": {"repobilityId": "3f52c61e72ecbbd9", "scanner": "scanner-primary", "fingerprint": "a4e925f5ab8eecd4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-be52480f177ed102", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/web/app/hooks/use-document-blob.ts:6"}, "properties": {"repobilityId": "04c967f3b934c36c", "scanner": "scanner-primary", "fingerprint": "be52480f177ed102", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-99647afb349e52e2", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/web/app/context/auth.tsx:38"}, "properties": {"repobilityId": "067d11ef2afc30ef", "scanner": "scanner-primary", "fingerprint": "99647afb349e52e2", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-972ab5308aad2dd8", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/web/app/context/auth.spec.tsx:57"}, "properties": {"repobilityId": "f7b70b51764655ac", "scanner": "scanner-primary", "fingerprint": "972ab5308aad2dd8", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a6450f164af9ae38", "level": "none", "message": {"text": "Commented-code block (8 lines) in apps/e2e/playwright.config.ts:36"}, "properties": {"repobilityId": "eae2a0f5e1b27ee8", "scanner": "scanner-primary", "fingerprint": "a6450f164af9ae38", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ea307e9ff6346563", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/e2e/tests/invoice-aggregate.spec.ts:107"}, "properties": {"repobilityId": "296af4e208990a68", "scanner": "scanner-primary", "fingerprint": "ea307e9ff6346563", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-153a2b3096fc7c4a", "level": "none", "message": {"text": "Commented-code block (6 lines) in apps/e2e/tests/ui-invariants-pr56.spec.ts:125"}, "properties": {"repobilityId": "db9ea58d46be2940", "scanner": "scanner-primary", "fingerprint": "153a2b3096fc7c4a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-651f29d6fcfea56c", "level": "none", "message": {"text": "Commented-code block (6 lines) in apps/e2e/tests/projects-senior-share-override.spec.ts:221"}, "properties": {"repobilityId": "0fbf65f05ebb9a54", "scanner": "scanner-primary", "fingerprint": "651f29d6fcfea56c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a4b4b7d8350b80ce", "level": "none", "message": {"text": "Commented-code block (6 lines) in apps/e2e/tests/senior-project-distribution-regression.spec.ts:92"}, "properties": {"repobilityId": "cd94b77b3f73a8ac", "scanner": "scanner-primary", "fingerprint": "a4b4b7d8350b80ce", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-dd0b5b57231e75d4", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/e2e/tests/drop-findings-pr198.spec.ts:48"}, "properties": {"repobilityId": "dc666b5973c731d6", "scanner": "scanner-primary", "fingerprint": "dd0b5b57231e75d4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-09a39433f784a9d9", "level": "none", "message": {"text": "Commented-code block (7 lines) in apps/e2e/tests/drop-distribution.spec.ts:101"}, "properties": {"repobilityId": "c4e31ff1fadb286c", "scanner": "scanner-primary", "fingerprint": "09a39433f784a9d9", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-940162f17e9f814c", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/e2e/tests/users.spec.ts:425"}, "properties": {"repobilityId": "691c86244fd9de9b", "scanner": "scanner-primary", "fingerprint": "940162f17e9f814c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-fb1d0397e224e17e", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/e2e/tests/fixtures.ts:525"}, "properties": {"repobilityId": "0b752958ead649b6", "scanner": "scanner-primary", "fingerprint": "fb1d0397e224e17e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-427f0f501ce64bfa", "level": "none", "message": {"text": "Commented-code block (6 lines) in apps/e2e/tests/finance.spec.ts:640"}, "properties": {"repobilityId": "68ab2032e178f183", "scanner": "scanner-primary", "fingerprint": "427f0f501ce64bfa", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4bc2c939c5d429e3", "level": "none", "message": {"text": "Commented-code block (6 lines) in apps/e2e/tests/drop-backend-rbac-api.spec.ts:111"}, "properties": {"repobilityId": "56a009bc714120d4", "scanner": "scanner-primary", "fingerprint": "4bc2c939c5d429e3", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-9b57527fc49fd1a2", "level": "none", "message": {"text": "Commented-code block (7 lines) in apps/e2e/tests/auth.spec.ts:37"}, "properties": {"repobilityId": "b8544ea3407f07ec", "scanner": "scanner-primary", "fingerprint": "9b57527fc49fd1a2", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8f1b8fc06e7e57fb", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/e2e/tests/drop-senior-readonly.spec.ts:59"}, "properties": {"repobilityId": "896e476d961381f0", "scanner": "scanner-primary", "fingerprint": "8f1b8fc06e7e57fb", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-14dbf156a5d73bf4", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/e2e/tests/polish-regressions.spec.ts:161"}, "properties": {"repobilityId": "1f935144d26b8eb0", "scanner": "scanner-primary", "fingerprint": "14dbf156a5d73bf4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-dbdfe13b643e5381", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/e2e/tests/projects.spec.ts:154"}, "properties": {"repobilityId": "ff2955c63503feae", "scanner": "scanner-primary", "fingerprint": "dbdfe13b643e5381", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0e1c609edfdaaf3a", "level": "none", "message": {"text": "Commented-code block (6 lines) in apps/e2e/tests/drop-rbac.spec.ts:83"}, "properties": {"repobilityId": "f42b1bad5e1d00d8", "scanner": "scanner-primary", "fingerprint": "0e1c609edfdaaf3a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2e12fb20700205cf", "level": "none", "message": {"text": "Commented-code block (7 lines) in apps/e2e/tests/profile-self-edit.spec.ts:145"}, "properties": {"repobilityId": "d15ae8f159f63616", "scanner": "scanner-primary", "fingerprint": "2e12fb20700205cf", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ae0ad3d7db2afb29", "level": "none", "message": {"text": "Commented-code block (8 lines) in apps/e2e/tests/finance-senior-flow.spec.ts:23"}, "properties": {"repobilityId": "5dcf46d1795e4e8f", "scanner": "scanner-primary", "fingerprint": "ae0ad3d7db2afb29", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-153fa6490beeb4ce", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/e2e/tests/drop-junior-rbac.spec.ts:51"}, "properties": {"repobilityId": "3115c150d13625b6", "scanner": "scanner-primary", "fingerprint": "153fa6490beeb4ce", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ee431dd861723cba", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/e2e/tests/team.spec.ts:462"}, "properties": {"repobilityId": "f149b5242513ab38", "scanner": "scanner-primary", "fingerprint": "ee431dd861723cba", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-dad2b4318e9b03f5", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/e2e/tests/drop-add-senior.spec.ts:116"}, "properties": {"repobilityId": "d3671e51fd2740c7", "scanner": "scanner-primary", "fingerprint": "dad2b4318e9b03f5", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e008a0a9abee417d", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/e2e/tests/onboarding-flow.spec.ts:437"}, "properties": {"repobilityId": "d4a1489070c25d1b", "scanner": "scanner-primary", "fingerprint": "e008a0a9abee417d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ed93eea327541cd4", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/e2e/tests/drop-confirm-payout.spec.ts:96"}, "properties": {"repobilityId": "4db040651b888d56", "scanner": "scanner-primary", "fingerprint": "ed93eea327541cd4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-35e32edb9e976922", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/e2e/tests/persist-query.spec.ts:73"}, "properties": {"repobilityId": "ae946d9196d7f504", "scanner": "scanner-primary", "fingerprint": "35e32edb9e976922", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-430aa284d1f6ac5d", "level": "none", "message": {"text": "Commented-code block (7 lines) in apps/e2e/tests/interviews.spec.ts:3"}, "properties": {"repobilityId": "bb6ab3d0545ae931", "scanner": "scanner-primary", "fingerprint": "430aa284d1f6ac5d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f993ae369b661818", "level": "none", "message": {"text": "Commented-code block (6 lines) in apps/e2e/tests/finance-senior-payment-flow.spec.ts:30"}, "properties": {"repobilityId": "00bf8859dc46820c", "scanner": "scanner-primary", "fingerprint": "f993ae369b661818", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1833dce32fe89e05", "level": "none", "message": {"text": "Commented-code block (7 lines) in apps/e2e/tests/rbac-senior-junior.spec.ts:287"}, "properties": {"repobilityId": "3fcf1595ab43b349", "scanner": "scanner-primary", "fingerprint": "1833dce32fe89e05", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1b74d28e3bd5a34c", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/e2e/tests/onboarding-regression-pr110.spec.ts:358"}, "properties": {"repobilityId": "48c8edd85e8f5518", "scanner": "scanner-primary", "fingerprint": "1b74d28e3bd5a34c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c3cd1d63fe31eea5", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/e2e/tests/navigation.spec.ts:181"}, "properties": {"repobilityId": "2e52105dbee208d9", "scanner": "scanner-primary", "fingerprint": "c3cd1d63fe31eea5", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-75f8d66c996f5f66", "level": "none", "message": {"text": "Commented-code block (7 lines) in apps/e2e/tests/cache/anti-stale.spec.ts:111"}, "properties": {"repobilityId": "130d8e65e093489a", "scanner": "scanner-primary", "fingerprint": "75f8d66c996f5f66", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e4d7ec10b8a297bb", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/e2e/tests/cache/api-cache.spec.ts:118"}, "properties": {"repobilityId": "dcf6d7add9eef4bd", "scanner": "scanner-primary", "fingerprint": "e4d7ec10b8a297bb", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-cee5b605a2e91d09", "level": "none", "message": {"text": "Commented-code block (8 lines) in apps/e2e/tests/cache/no-store.spec.ts:78"}, "properties": {"repobilityId": "81765981a4aad319", "scanner": "scanner-primary", "fingerprint": "cee5b605a2e91d09", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f921a89acee15a18", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/e2e/tests/crm/documents-status-badges.spec.ts:307"}, "properties": {"repobilityId": "ca42565014abef31", "scanner": "scanner-primary", "fingerprint": "f921a89acee15a18", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b4e48ff9afff3a33", "level": "none", "message": {"text": "Commented-code block (6 lines) in apps/e2e/tests/crm/users/users-refactor.spec.ts:67"}, "properties": {"repobilityId": "9ee0eea75a5f0b0c", "scanner": "scanner-primary", "fingerprint": "b4e48ff9afff3a33", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4a3d996b458a2975", "level": "none", "message": {"text": "Commented-code block (11 lines) in packages/shared/src/schemas/interviews.ts:82"}, "properties": {"repobilityId": "58616b3f2f3a6de0", "scanner": "scanner-primary", "fingerprint": "4a3d996b458a2975", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1c6f82420f6507e5", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/shared/src/schemas/credentials.ts:6"}, "properties": {"repobilityId": "95f7af491ecca07c", "scanner": "scanner-primary", "fingerprint": "1c6f82420f6507e5", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7809948297a56341", "level": "none", "message": {"text": "Commented-code block (6 lines) in packages/shared/src/schemas/finance.ts:21"}, "properties": {"repobilityId": "db311c6b26cd9eef", "scanner": "scanner-primary", "fingerprint": "7809948297a56341", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5662602fcac15464", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/shared/src/schemas/projects.ts:134"}, "properties": {"repobilityId": "40edcc72aac094d9", "scanner": "scanner-primary", "fingerprint": "5662602fcac15464", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-8e047ab7af03962f", "level": "note", "message": {"text": "7 env vars used in code but missing from .env.example"}, "properties": {"repobilityId": "5a0455f6498c27ad", "scanner": "scanner-primary", "fingerprint": "8e047ab7af03962f", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "config-drift"]}}, {"ruleId": "scanner-0daa06f60ffb5593", "level": "error", "message": {"text": "Dangling fetch: POST https://oauth2.googleapis.com/token (apps/api/src/auth/auth.service.ts:43)"}, "properties": {"repobilityId": "fb3ce0d40ca6bc3d", "scanner": "scanner-primary", "fingerprint": "0daa06f60ffb5593", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-28eee9f8318139ed", "level": "error", "message": {"text": "Dangling fetch: GET https://www.googleapis.com/oauth2/v2/userinfo (apps/api/src/auth/auth.service.ts:61)"}, "properties": {"repobilityId": "b995d42b60490fe3", "scanner": "scanner-primary", "fingerprint": "28eee9f8318139ed", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-26c5cf3c73f2f54a", "level": "note", "message": {"text": "Unused endpoint: POST /users/drops"}, "properties": {"repobilityId": "50adf527a793c89d", "scanner": "scanner-primary", "fingerprint": "26c5cf3c73f2f54a", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-22eb536118d1c477", "level": "note", "message": {"text": "Unused endpoint: DELETE /users/drops/:id"}, "properties": {"repobilityId": "49ae2968c5784f0e", "scanner": "scanner-primary", "fingerprint": "22eb536118d1c477", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-c0f141bc5235464b", "level": "note", "message": {"text": "Unused endpoint: POST /users/me/rejoin-team"}, "properties": {"repobilityId": "b9c76eb38e6ee817", "scanner": "scanner-primary", "fingerprint": "c0f141bc5235464b", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-a8b657222dd85be2", "level": "note", "message": {"text": "Unused endpoint: GET /users/me"}, "properties": {"repobilityId": "198dadc2a04a35f0", "scanner": "scanner-primary", "fingerprint": "a8b657222dd85be2", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-9f06644688cd47af", "level": "note", "message": {"text": "Unused endpoint: PATCH /users/me"}, "properties": {"repobilityId": "af997f08cd54313d", "scanner": "scanner-primary", "fingerprint": "9f06644688cd47af", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-959494bdf6e90bd3", "level": "note", "message": {"text": "Unused endpoint: PATCH /users/me/requisites"}, "properties": {"repobilityId": "9035c89bef7da98a", "scanner": "scanner-primary", "fingerprint": "959494bdf6e90bd3", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-41aa9e92da3f14ad", "level": "note", "message": {"text": "Unused endpoint: GET /users/:id"}, "properties": {"repobilityId": "513d2c4b8d5dc9bb", "scanner": "scanner-primary", "fingerprint": "41aa9e92da3f14ad", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-ceda81a091c44000", "level": "note", "message": {"text": "Unused endpoint: GET /users/:id/team"}, "properties": {"repobilityId": "0cceb0292bce476b", "scanner": "scanner-primary", "fingerprint": "ceda81a091c44000", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-f2ad066aed77402c", "level": "note", "message": {"text": "Unused endpoint: GET /users/:id/audit-log"}, "properties": {"repobilityId": "f4094190a90f5a2b", "scanner": "scanner-primary", "fingerprint": "f2ad066aed77402c", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-ff077de400322c02", "level": "note", "message": {"text": "Unused endpoint: GET /users/:id/transactions"}, "properties": {"repobilityId": "378e00e3de7484cc", "scanner": "scanner-primary", "fingerprint": "ff077de400322c02", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-a2da8d08e12b122c", "level": "note", "message": {"text": "Unused endpoint: PATCH /users/:id"}, "properties": {"repobilityId": "15804aec6cfcd90d", "scanner": "scanner-primary", "fingerprint": "a2da8d08e12b122c", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-01b5d572dd285e2c", "level": "note", "message": {"text": "Unused endpoint: PATCH /users/:id/role"}, "properties": {"repobilityId": "2b7d79aafdd53fe8", "scanner": "scanner-primary", "fingerprint": "01b5d572dd285e2c", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-3de9af5decde2b66", "level": "note", "message": {"text": "Unused endpoint: PATCH /users/:id/salary"}, "properties": {"repobilityId": "3126188a28082414", "scanner": "scanner-primary", "fingerprint": "3de9af5decde2b66", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-ad2c1e8c8a2a8839", "level": "note", "message": {"text": "Unused endpoint: PATCH /users/:id/requisites"}, "properties": {"repobilityId": "038103c38aa497fb", "scanner": "scanner-primary", "fingerprint": "ad2c1e8c8a2a8839", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-0a4ed33359db23dc", "level": "note", "message": {"text": "Unused endpoint: PATCH /users/:id/note"}, "properties": {"repobilityId": "1b42021fb13c0d19", "scanner": "scanner-primary", "fingerprint": "0a4ed33359db23dc", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-79406b9fd85263bf", "level": "note", "message": {"text": "Unused endpoint: DELETE /users/:id"}, "properties": {"repobilityId": "3e180bacde1c0359", "scanner": "scanner-primary", "fingerprint": "79406b9fd85263bf", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-3c198621330c6b6e", "level": "note", "message": {"text": "Unused endpoint: POST /users/:id/unarchive"}, "properties": {"repobilityId": "4a6619be88732c1b", "scanner": "scanner-primary", "fingerprint": "3c198621330c6b6e", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-025e1740087c7318", "level": "note", "message": {"text": "Unused endpoint: GET /users/:id/archive-impact"}, "properties": {"repobilityId": "8d709292ce6afd19", "scanner": "scanner-primary", "fingerprint": "025e1740087c7318", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-9dd01ebbeaf517b7", "level": "note", "message": {"text": "Unused endpoint: GET /users/me/salary-meta"}, "properties": {"repobilityId": "7f3b377003735fc9", "scanner": "scanner-primary", "fingerprint": "9dd01ebbeaf517b7", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-c9a7c59a4096ef36", "level": "note", "message": {"text": "Unused endpoint: PATCH /notifications/read-all"}, "properties": {"repobilityId": "87dc4760f8c045cf", "scanner": "scanner-primary", "fingerprint": "c9a7c59a4096ef36", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-9eec0d6a608d78c2", "level": "note", "message": {"text": "Unused endpoint: PATCH /notifications/:id/read"}, "properties": {"repobilityId": "18f38cdf8ea63eb6", "scanner": "scanner-primary", "fingerprint": "9eec0d6a608d78c2", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-b474d0720252b2fc", "level": "note", "message": {"text": "Unused endpoint: DELETE /notifications/:id"}, "properties": {"repobilityId": "746559e57de72db9", "scanner": "scanner-primary", "fingerprint": "b474d0720252b2fc", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-2e9f0c712241895d", "level": "note", "message": {"text": "Unused endpoint: GET /auth/google"}, "properties": {"repobilityId": "85b881524604e8a7", "scanner": "scanner-primary", "fingerprint": "2e9f0c712241895d", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-392dcbd9c0e4ed85", "level": "note", "message": {"text": "Unused endpoint: GET /auth/google/callback"}, "properties": {"repobilityId": "383b8daaf2bd53d9", "scanner": "scanner-primary", "fingerprint": "392dcbd9c0e4ed85", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-ac42422b23e45104", "level": "note", "message": {"text": "Unused endpoint: GET /auth/me"}, "properties": {"repobilityId": "85d9726269be3be5", "scanner": "scanner-primary", "fingerprint": "ac42422b23e45104", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-01412f891efb9a85", "level": "note", "message": {"text": "Unused endpoint: POST /auth/google/one-tap"}, "properties": {"repobilityId": "e3fc004c19c45953", "scanner": "scanner-primary", "fingerprint": "01412f891efb9a85", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-1c702f92b682cca1", "level": "note", "message": {"text": "Unused endpoint: GET /auth/logout"}, "properties": {"repobilityId": "18abac046ab986f6", "scanner": "scanner-primary", "fingerprint": "1c702f92b682cca1", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-b2d21770371f71a3", "level": "note", "message": {"text": "Unused endpoint: POST /auth/dev-login"}, "properties": {"repobilityId": "3107969596b42fea", "scanner": "scanner-primary", "fingerprint": "b2d21770371f71a3", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-cdcec0c7af38dbaa", "level": "note", "message": {"text": "Unused endpoint: GET /projects/:id"}, "properties": {"repobilityId": "a11dfa770cf39b4c", "scanner": "scanner-primary", "fingerprint": "cdcec0c7af38dbaa", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-ac3dac62b2af482e", "level": "note", "message": {"text": "Unused endpoint: GET /projects/drop/me"}, "properties": {"repobilityId": "b88852f7d161325c", "scanner": "scanner-primary", "fingerprint": "ac3dac62b2af482e", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-6984a16bee78bd37", "level": "note", "message": {"text": "Unused endpoint: PATCH /projects/:id"}, "properties": {"repobilityId": "8f3cf082e87d7438", "scanner": "scanner-primary", "fingerprint": "6984a16bee78bd37", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-bd53fc7ac577a314", "level": "note", "message": {"text": "Unused endpoint: DELETE /projects/:id"}, "properties": {"repobilityId": "f70adcb0d191f8ad", "scanner": "scanner-primary", "fingerprint": "bd53fc7ac577a314", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-8c0cfab63f43d754", "level": "note", "message": {"text": "Unused endpoint: POST /projects/:id/unarchive"}, "properties": {"repobilityId": "03c5397002c1a66c", "scanner": "scanner-primary", "fingerprint": "8c0cfab63f43d754", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-4bc218bc75d14073", "level": "note", "message": {"text": "Unused endpoint: GET /projects/:id/archive-impact"}, "properties": {"repobilityId": "101322b39ae18d86", "scanner": "scanner-primary", "fingerprint": "4bc218bc75d14073", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-76fc9912b7fc1e8e", "level": "note", "message": {"text": "Unused endpoint: GET /projects/:id/audit-log"}, "properties": {"repobilityId": "045ccb166fe51562", "scanner": "scanner-primary", "fingerprint": "76fc9912b7fc1e8e", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-7191452f46f60a88", "level": "note", "message": {"text": "Unused endpoint: POST /projects/:id/members"}, "properties": {"repobilityId": "0427d3a471090983", "scanner": "scanner-primary", "fingerprint": "7191452f46f60a88", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-b6a07214a23957cd", "level": "note", "message": {"text": "Unused endpoint: DELETE /projects/:id/members/:userId"}, "properties": {"repobilityId": "34d051e2db8728b8", "scanner": "scanner-primary", "fingerprint": "b6a07214a23957cd", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-4957fc4e3dddab0d", "level": "note", "message": {"text": "Unused endpoint: GET /projects/:id/hr-contact"}, "properties": {"repobilityId": "b4e600a3c0440588", "scanner": "scanner-primary", "fingerprint": "4957fc4e3dddab0d", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-8e3ed5c1cc2fad0f", "level": "note", "message": {"text": "Unused endpoint: GET /teams/:id"}, "properties": {"repobilityId": "f387a04836afad74", "scanner": "scanner-primary", "fingerprint": "8e3ed5c1cc2fad0f", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-f0e380da2d5548de", "level": "note", "message": {"text": "Unused endpoint: PATCH /teams/:id"}, "properties": {"repobilityId": "0fa3a088161d2749", "scanner": "scanner-primary", "fingerprint": "f0e380da2d5548de", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-68c8af37a71ce000", "level": "note", "message": {"text": "Unused endpoint: DELETE /teams/:id"}, "properties": {"repobilityId": "00d00676f728281f", "scanner": "scanner-primary", "fingerprint": "68c8af37a71ce000", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-3765700b64e089ef", "level": "note", "message": {"text": "Unused endpoint: POST /teams/:id/unarchive"}, "properties": {"repobilityId": "e8a2fe0d0f2c2209", "scanner": "scanner-primary", "fingerprint": "3765700b64e089ef", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-8d881891754fc48f", "level": "note", "message": {"text": "Unused endpoint: GET /teams/:id/archive-impact"}, "properties": {"repobilityId": "d544b2bd145a7ef4", "scanner": "scanner-primary", "fingerprint": "8d881891754fc48f", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-fcf614998e9eab5f", "level": "note", "message": {"text": "Unused endpoint: GET /teams/:id/audit-log"}, "properties": {"repobilityId": "33bf322edab52248", "scanner": "scanner-primary", "fingerprint": "fcf614998e9eab5f", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-c357aba880deae8e", "level": "note", "message": {"text": "Unused endpoint: POST /teams/:id/members"}, "properties": {"repobilityId": "d16e18b05c7abcad", "scanner": "scanner-primary", "fingerprint": "c357aba880deae8e", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-e6c14b8e7ce9cf3b", "level": "note", "message": {"text": "Unused endpoint: DELETE /teams/:id/members/:userId"}, "properties": {"repobilityId": "75d4b9d7788bdff5", "scanner": "scanner-primary", "fingerprint": "e6c14b8e7ce9cf3b", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-ce5f7a40b5bc1015", "level": "note", "message": {"text": "Unused endpoint: POST /teams/:id/rotate-senior"}, "properties": {"repobilityId": "7cdfb748282f6e07", "scanner": "scanner-primary", "fingerprint": "ce5f7a40b5bc1015", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-5d05e18955ac7d36", "level": "note", "message": {"text": "Unused endpoint: GET /projects/:projectId/legend"}, "properties": {"repobilityId": "34f205c89f464851", "scanner": "scanner-primary", "fingerprint": "5d05e18955ac7d36", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-479fc0cdcd639b7c", "level": "note", "message": {"text": "Unused endpoint: PUT /projects/:projectId/legend"}, "properties": {"repobilityId": "349f493cd78fc65a", "scanner": "scanner-primary", "fingerprint": "479fc0cdcd639b7c", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-76ed71621abb7928", "level": "note", "message": {"text": "Unused endpoint: POST /projects/:projectId/legend/entries"}, "properties": {"repobilityId": "14a3db63a2be2ba3", "scanner": "scanner-primary", "fingerprint": "76ed71621abb7928", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}]}]}