{"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-bead75b0f9233e05", "name": "No API endpoints detected", "shortDescription": {"text": "No API endpoints detected"}, "fullDescription": {"text": "The scanner did not find FastAPI/Flask/Express/NestJS/GraphQL/gRPC routes. If this repo exposes APIs, the framework may be unsupported."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "info", "confidence": 1.0}}, {"id": "scanner-20ebd184213742af", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 apps/web/components/org-theme-assets.tsx:5", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 apps/web/components/org-theme-assets.tsx:5"}, "fullDescription": {"text": "Open XSS surface unless the input is provably trusted. Replace with explicit JSX or sanitize via a vetted library.\n\nWhy: OWASP basics. Already partially flagged by the security analyzer.\nRule id: fq.dangerous-html"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-b6cb2d5597d793ba", "name": "`truncate` class without `title=` for hover reveal \u2014 apps/web/components/admin/invite-panel.tsx:225", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/web/components/admin/invite-panel.tsx:225"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-1308f05d2c4879bb", "name": "`truncate` class without `title=` for hover reveal \u2014 apps/web/components/content/approved-list.tsx:84", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/web/components/content/approved-list.tsx:84"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-f689e838806fb91e", "name": "`truncate` class without `title=` for hover reveal \u2014 apps/web/app/(super)/orgs/[orgId]/page.tsx:383", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/web/app/(super)/orgs/[orgId]/page.tsx:383"}, "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-c5c7a3438bb8400f", "name": "`truncate` class without `title=` for hover reveal \u2014 apps/web/app/(super)/content/reading/papers/page.tsx:216", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/web/app/(super)/content/reading/papers/page.tsx:216"}, "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-6990f1c696040086", "name": "`truncate` class without `title=` for hover reveal \u2014 apps/web/app/(admin)/admin/page.tsx:142", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/web/app/(admin)/admin/page.tsx:142"}, "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-0c0940236a110b2e", "name": "`truncate` class without `title=` for hover reveal \u2014 apps/web/app/(admin)/admin/activity/page.tsx:86", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/web/app/(admin)/admin/activity/page.tsx:86"}, "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-7f141e7febf969c1", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 apps/web/app/(admin)/admin/branding/page.tsx:51", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 apps/web/app/(admin)/admin/branding/page.tsx:51"}, "fullDescription": {"text": "Open XSS surface unless the input is provably trusted. Replace with explicit JSX or sanitize via a vetted library.\n\nWhy: OWASP basics. Already partially flagged by the security analyzer.\nRule id: fq.dangerous-html"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-57e5297a1ce70b7d", "name": "Stray `console.log` in TS/JS \u2014 packages/db/scripts/resync-name-from-clerk.ts:43", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/db/scripts/resync-name-from-clerk.ts:43"}, "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-ff9bbe6227f18c00", "name": "Stray `console.log` in TS/JS \u2014 packages/db/prisma/seed.ts:1868", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/db/prisma/seed.ts:1868"}, "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-a67efeae4bb74309", "name": "Stray `console.log` in TS/JS \u2014 packages/db/prisma/seed-listening.ts:97", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/db/prisma/seed-listening.ts:97"}, "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-4a6c4205b0f234e4", "name": "Stray `console.log` in TS/JS \u2014 packages/db/prisma/promote-super.ts:229", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/db/prisma/promote-super.ts:229"}, "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-21c8b002c6d62897", "name": "Stray `console.log` in TS/JS \u2014 packages/db/src/clerk-seed.ts:157", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/db/src/clerk-seed.ts:157"}, "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-2a605f429d1625ed", "name": "Insecure pattern 'dangerous_innerhtml' in apps/web/app/(admin)/admin/branding/page.tsx:51", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in apps/web/app/(admin)/admin/branding/page.tsx:51"}, "fullDescription": {"text": "Found a known-risky pattern (dangerous_innerhtml). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-c43b935c655ee8eb", "name": "Possible secret in packages/db/src/clerk-seed.ts", "shortDescription": {"text": "Possible secret in packages/db/src/clerk-seed.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-ac6fdbc832c90173", "name": "Insecure pattern 'node_child_process' in packages/db/src/test-global-setup.ts:5", "shortDescription": {"text": "Insecure pattern 'node_child_process' in packages/db/src/test-global-setup.ts:5"}, "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-27924aa79fa4a517", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/upload-artifact@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-16991848b93fbe60", "name": "Very large file: apps/web/components/listening-practice.tsx (1994 lines)", "shortDescription": {"text": "Very large file: apps/web/components/listening-practice.tsx (1994 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-c5d336c44f1613fb", "name": "Very large file: packages/db/prisma/seed.ts (1889 lines)", "shortDescription": {"text": "Very large file: packages/db/prisma/seed.ts (1889 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-141b30a41e03817b", "name": "No license file detected", "shortDescription": {"text": "No license file detected"}, "fullDescription": {"text": "No LICENSE/COPYING/NOTICE file was found. Generated repositories often omit licensing, which blocks reuse and automated intake."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-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-80f569ae36a3e3bf", "name": "Node manifest has dependencies but no lockfile: packages/ai/package.json", "shortDescription": {"text": "Node manifest has dependencies but no lockfile: packages/ai/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-50218c90b43393bb", "name": "Node manifest has dependencies but no lockfile: packages/ui/package.json", "shortDescription": {"text": "Node manifest has dependencies but no lockfile: packages/ui/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-7b16ae2bd0fca524", "name": "Node manifest has dependencies but no lockfile: packages/db/package.json", "shortDescription": {"text": "Node manifest has dependencies but no lockfile: packages/db/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-137007a5b04ba75f", "name": "Node manifest has dependencies but no lockfile: packages/storage/package.json", "shortDescription": {"text": "Node manifest has dependencies but no lockfile: packages/storage/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 18 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 161 placeholder/mock markers across 56 source files. This often means the repo looks complete while core flows still use generated scaffolding or fake data."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-2d0c7b7ab8f8aacf", "name": "Critical user flow still appears backed by mock or placeholder data", "shortDescription": {"text": "Critical user flow still appears backed by mock or placeholder data"}, "fullDescription": {"text": "A payment/auth/admin/order/billing-style flow contains mock, fake, TODO, dummy, or placeholder markers in runtime source. In the Fable corpus this is a high-leverage completeness smell: the app can look finished while the money, identity, or tenant flow is still scaffolded."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-b9088664ace7f748", "name": "Composite production-readiness gap", "shortDescription": {"text": "Composite production-readiness gap"}, "fullDescription": {"text": "Multiple low-cost hardening controls are missing together: license, lockfile. Opus verification showed these co-occurring gaps are a better readiness signal than reading each flag in isolation."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-749d4bc1bd66df5f", "name": "Agent instructions exist but release-hardening basics are missing", "shortDescription": {"text": "Agent instructions exist but release-hardening basics are missing"}, "fullDescription": {"text": "AI-coder instruction files were found, but the repo is missing license, 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-ecb0d2c55ed6875d", "name": "Agent authority lacks a verifier contract: .claude/settings.local.json", "shortDescription": {"text": "Agent authority lacks a verifier contract: .claude/settings.local.json"}, "fullDescription": {"text": "This agent instruction grants code or shell authority but does not state the verification gate that decides promotion. The recurring safe pattern is: LLM proposes; deterministic tests/build/security checks verify; only verified code promotes."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-e29f563b9beb91cd", "name": "Agent authority lacks a verifier contract: .claude/rules/ai-cost-control.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: .claude/rules/ai-cost-control.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-13cae9fba912b2c6", "name": "Agent authority lacks a verifier contract: .claude/rules/brand.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: .claude/rules/brand.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-b538e335433b5c90", "name": "Agent instruction/config may expose a secret: .claude/skills/ai-grading/SKILL.md", "shortDescription": {"text": "Agent instruction/config may expose a secret: .claude/skills/ai-grading/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-41860bd44c692534", "name": "Commented-code block (5 lines) in apps/web/proxy.ts:49", "shortDescription": {"text": "Commented-code block (5 lines) in apps/web/proxy.ts: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-9238d971a29af702", "name": "Commented-code block (7 lines) in apps/web/next.config.ts:6", "shortDescription": {"text": "Commented-code block (7 lines) in apps/web/next.config.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-13aab956fbb4d294", "name": "Commented-code block (8 lines) in apps/web/tests/e2e/branding.spec.ts:3", "shortDescription": {"text": "Commented-code block (8 lines) in apps/web/tests/e2e/branding.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-efcfc2701a4bf971", "name": "Commented-code block (9 lines) in apps/web/tests/e2e/learner-home.spec.ts:3", "shortDescription": {"text": "Commented-code block (9 lines) in apps/web/tests/e2e/learner-home.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-2909cb04e39d39b8", "name": "Commented-code block (8 lines) in apps/web/tests/e2e/consent-banner.spec.ts:4", "shortDescription": {"text": "Commented-code block (8 lines) in apps/web/tests/e2e/consent-banner.spec.ts:4"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-9da15715e742ff81", "name": "Commented-code block (6 lines) in apps/web/tests/e2e/role-greeting.spec.ts:4", "shortDescription": {"text": "Commented-code block (6 lines) in apps/web/tests/e2e/role-greeting.spec.ts:4"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-2b99682effbda642", "name": "Commented-code block (5 lines) in apps/web/tests/e2e/sign-in-a11y.spec.ts:3", "shortDescription": {"text": "Commented-code block (5 lines) in apps/web/tests/e2e/sign-in-a11y.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-b25ccc3e957047e4", "name": "Commented-code block (6 lines) in apps/web/components/auth-shell.tsx:4", "shortDescription": {"text": "Commented-code block (6 lines) in apps/web/components/auth-shell.tsx:4"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-185f812f6cf53126", "name": "Commented-code block (5 lines) in apps/web/components/reading-practice.tsx:114", "shortDescription": {"text": "Commented-code block (5 lines) in apps/web/components/reading-practice.tsx:114"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-75a67fa6bb2c4ba8", "name": "Commented-code block (6 lines) in apps/web/components/speaking-result.tsx:3", "shortDescription": {"text": "Commented-code block (6 lines) in apps/web/components/speaking-result.tsx: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-9c0e3c6b62b05940", "name": "Commented-code block (6 lines) in apps/web/components/org-logo.tsx:3", "shortDescription": {"text": "Commented-code block (6 lines) in apps/web/components/org-logo.tsx: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-720b5bc795dc7871", "name": "Commented-code block (11 lines) in apps/web/components/speaking-practice.tsx:5", "shortDescription": {"text": "Commented-code block (11 lines) in apps/web/components/speaking-practice.tsx:5"}, "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-a097447ffca9bddb", "name": "`fetch()` without try/.catch or AbortSignal \u2014 apps/web/components/speaking-practice.tsx:416", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/web/components/speaking-practice.tsx:416"}, "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-06a821ea711f027b", "name": "Commented-code block (5 lines) in apps/web/components/writing-practice.tsx:49", "shortDescription": {"text": "Commented-code block (5 lines) in apps/web/components/writing-practice.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-34d44da62e4dba00", "name": "Commented-code block (8 lines) in apps/web/components/listening-practice.tsx:5", "shortDescription": {"text": "Commented-code block (8 lines) in apps/web/components/listening-practice.tsx:5"}, "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-6776c5aee7276434", "name": "Commented-code block (5 lines) in apps/web/components/ui/spinner.tsx:8", "shortDescription": {"text": "Commented-code block (5 lines) in apps/web/components/ui/spinner.tsx:8"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-07412069f0808e94", "name": "Commented-code block (5 lines) in apps/web/components/ui/pending-button.tsx:3", "shortDescription": {"text": "Commented-code block (5 lines) in apps/web/components/ui/pending-button.tsx: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-1fb4381f5d1a8378", "name": "`fetch()` without try/.catch or AbortSignal \u2014 apps/web/components/ui/pending-button.tsx:4", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/web/components/ui/pending-button.tsx:4"}, "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-b1581b8a892f17e4", "name": "Commented-code block (5 lines) in apps/web/components/content/reading-generate-form.tsx:5", "shortDescription": {"text": "Commented-code block (5 lines) in apps/web/components/content/reading-generate-form.tsx:5"}, "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-c101f16164e54db4", "name": "Commented-code block (5 lines) in apps/web/components/consent/consent-banner.tsx:14", "shortDescription": {"text": "Commented-code block (5 lines) in apps/web/components/consent/consent-banner.tsx: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-40027d95551691fa", "name": "Commented-code block (5 lines) in apps/web/components/consent/consent-store.ts:29", "shortDescription": {"text": "Commented-code block (5 lines) in apps/web/components/consent/consent-store.ts:29"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-4f327dbd9194e61b", "name": "Commented-code block (5 lines) in apps/web/app/create-org/page.tsx:1", "shortDescription": {"text": "Commented-code block (5 lines) in apps/web/app/create-org/page.tsx:1"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-e905851811f2a7cf", "name": "Commented-code block (5 lines) in apps/web/app/api/clerk/webhook/route.ts:1", "shortDescription": {"text": "Commented-code block (5 lines) in apps/web/app/api/clerk/webhook/route.ts:1"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-7e27a94e0aeef7c7", "name": "Commented-code block (5 lines) in apps/web/app/api/cron/retention/route.ts:7", "shortDescription": {"text": "Commented-code block (5 lines) in apps/web/app/api/cron/retention/route.ts:7"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-20c9afca01f1f561", "name": "Commented-code block (9 lines) in apps/web/app/api/cron/content-generation/route.ts:3", "shortDescription": {"text": "Commented-code block (9 lines) in apps/web/app/api/cron/content-generation/route.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-6f87adcdfb16d749", "name": "Commented-code block (5 lines) in apps/web/app/api/branding/logo/route.ts:4", "shortDescription": {"text": "Commented-code block (5 lines) in apps/web/app/api/branding/logo/route.ts:4"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-125a9cd0f024b235", "name": "Commented-code block (5 lines) in apps/web/app/api/stripe/webhook/route.ts:1", "shortDescription": {"text": "Commented-code block (5 lines) in apps/web/app/api/stripe/webhook/route.ts:1"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-2dec90ce17e96a58", "name": "Commented-code block (5 lines) in apps/web/app/(learner)/mock/layout.tsx:3", "shortDescription": {"text": "Commented-code block (5 lines) in apps/web/app/(learner)/mock/layout.tsx: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-7635417b927d4896", "name": "Commented-code block (5 lines) in apps/web/app/(learner)/mock/[mockId]/page.tsx:83", "shortDescription": {"text": "Commented-code block (5 lines) in apps/web/app/(learner)/mock/[mockId]/page.tsx: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-1e4a99f411b1bbe7", "name": "Commented-code block (5 lines) in apps/web/app/(learner)/practice/listening/[attemptId]/page.tsx:72", "shortDescription": {"text": "Commented-code block (5 lines) in apps/web/app/(learner)/practice/listening/[attemptId]/page.tsx:72"}, "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-69acb3e33bb4db84", "name": "Commented-code block (5 lines) in apps/web/app/(super)/users/page.tsx:112", "shortDescription": {"text": "Commented-code block (5 lines) in apps/web/app/(super)/users/page.tsx:112"}, "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-3d3955117338ebf0", "name": "Commented-code block (5 lines) in apps/web/app/(super)/users/export/route.ts:70", "shortDescription": {"text": "Commented-code block (5 lines) in apps/web/app/(super)/users/export/route.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-62d556dee4f73d7a", "name": "Commented-code block (5 lines) in apps/web/app/(super)/metrics/page.tsx:86", "shortDescription": {"text": "Commented-code block (5 lines) in apps/web/app/(super)/metrics/page.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-4241fea8b70534ff", "name": "Commented-code block (5 lines) in apps/web/app/(admin)/layout.tsx:46", "shortDescription": {"text": "Commented-code block (5 lines) in apps/web/app/(admin)/layout.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-2225c19ad45a9fc8", "name": "Commented-code block (5 lines) in apps/web/app/(admin)/admin/branding/page.tsx:3", "shortDescription": {"text": "Commented-code block (5 lines) in apps/web/app/(admin)/admin/branding/page.tsx: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-67120e8287573272", "name": "Commented-code block (6 lines) in apps/web/app/post-signin/page.tsx:1", "shortDescription": {"text": "Commented-code block (6 lines) in apps/web/app/post-signin/page.tsx:1"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-ab002a97c2d87c76", "name": "Commented-code block (9 lines) in apps/web/app/post-signin/post-signin-redirector.tsx:5", "shortDescription": {"text": "Commented-code block (9 lines) in apps/web/app/post-signin/post-signin-redirector.tsx:5"}, "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-1ff52f4a7c6267b6", "name": "Commented-code block (5 lines) in apps/web/app/no-access/page.tsx:1", "shortDescription": {"text": "Commented-code block (5 lines) in apps/web/app/no-access/page.tsx:1"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-dff3c301ac1e2b17", "name": "Commented-code block (7 lines) in apps/web/app/onboarding/layout.tsx:8", "shortDescription": {"text": "Commented-code block (7 lines) in apps/web/app/onboarding/layout.tsx:8"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-30016ea86571dec2", "name": "Commented-code block (5 lines) in apps/web/app/onboarding/processing/page.tsx:16", "shortDescription": {"text": "Commented-code block (5 lines) in apps/web/app/onboarding/processing/page.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-8cbd7b0134aa8424", "name": "Commented-code block (8 lines) in apps/web/app/onboarding/processing/polling-refresher.tsx:5", "shortDescription": {"text": "Commented-code block (8 lines) in apps/web/app/onboarding/processing/polling-refresher.tsx:5"}, "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-074acb8890775dcb", "name": "Commented-code block (7 lines) in apps/web/lib/automation/runner.ts:8", "shortDescription": {"text": "Commented-code block (7 lines) in apps/web/lib/automation/runner.ts:8"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-3a8ccdce26ffe375", "name": "Commented-code block (5 lines) in apps/web/lib/automation/settings.ts:3", "shortDescription": {"text": "Commented-code block (5 lines) in apps/web/lib/automation/settings.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-e130145591776383", "name": "Commented-code block (5 lines) in apps/web/lib/reading/actions.ts:5", "shortDescription": {"text": "Commented-code block (5 lines) in apps/web/lib/reading/actions.ts:5"}, "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-969e9a8bea6692ca", "name": "Commented-code block (5 lines) in apps/web/lib/reading/generate-actions.ts:132", "shortDescription": {"text": "Commented-code block (5 lines) in apps/web/lib/reading/generate-actions.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-e582bd4f6f96d548", "name": "Commented-code block (6 lines) in apps/web/lib/reading/paper-actions.ts:10", "shortDescription": {"text": "Commented-code block (6 lines) in apps/web/lib/reading/paper-actions.ts:10"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-2f7eec5102018023", "name": "Commented-code block (6 lines) in apps/web/lib/legal/policies.ts:3", "shortDescription": {"text": "Commented-code block (6 lines) in apps/web/lib/legal/policies.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-16b718d4db7cb7e7", "name": "Commented-code block (5 lines) in apps/web/lib/legal/entity.ts:3", "shortDescription": {"text": "Commented-code block (5 lines) in apps/web/lib/legal/entity.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-4e627100ddd3c043", "name": "Commented-code block (5 lines) in apps/web/lib/listening/topic-seed.ts:1", "shortDescription": {"text": "Commented-code block (5 lines) in apps/web/lib/listening/topic-seed.ts:1"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-467332f9920614a1", "name": "Commented-code block (5 lines) in apps/web/lib/listening/synth.ts:13", "shortDescription": {"text": "Commented-code block (5 lines) in apps/web/lib/listening/synth.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-09432110a371859d", "name": "Commented-code block (10 lines) in apps/web/lib/listening/actions.ts:5", "shortDescription": {"text": "Commented-code block (10 lines) in apps/web/lib/listening/actions.ts:5"}, "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-980de1dd68cf5636", "name": "Commented-code block (6 lines) in apps/web/lib/listening/moderation-actions.ts:9", "shortDescription": {"text": "Commented-code block (6 lines) in apps/web/lib/listening/moderation-actions.ts:9"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-09508ed06b09c7d4", "name": "Commented-code block (5 lines) in apps/web/lib/auth/clerk-appearance.ts:6", "shortDescription": {"text": "Commented-code block (5 lines) in apps/web/lib/auth/clerk-appearance.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-575b008a93e1f114", "name": "Commented-code block (5 lines) in apps/web/lib/auth/dev-session.ts:11", "shortDescription": {"text": "Commented-code block (5 lines) in apps/web/lib/auth/dev-session.ts:11"}, "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-a7ef48e8ee836087", "name": "Commented-code block (7 lines) in apps/web/lib/auth/context.ts:6", "shortDescription": {"text": "Commented-code block (7 lines) in apps/web/lib/auth/context.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-4a93202cdc07bde4", "name": "Commented-code block (5 lines) in apps/web/lib/speaking/content.ts:1", "shortDescription": {"text": "Commented-code block (5 lines) in apps/web/lib/speaking/content.ts:1"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-99bdf658f34df39a", "name": "Commented-code block (6 lines) in apps/web/lib/speaking/actions.ts:10", "shortDescription": {"text": "Commented-code block (6 lines) in apps/web/lib/speaking/actions.ts:10"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-9fe4b0580cb7865b", "name": "Commented-code block (9 lines) in apps/web/lib/super/user-actions.ts:5", "shortDescription": {"text": "Commented-code block (9 lines) in apps/web/lib/super/user-actions.ts:5"}, "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-a6d47bba07b20e7d", "name": "Commented-code block (5 lines) in apps/web/lib/super/branding-actions.ts:3", "shortDescription": {"text": "Commented-code block (5 lines) in apps/web/lib/super/branding-actions.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-0a4aeffe3df53442", "name": "Commented-code block (5 lines) in apps/web/lib/super/org-actions.ts:5", "shortDescription": {"text": "Commented-code block (5 lines) in apps/web/lib/super/org-actions.ts:5"}, "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-d14bac7ecc6d89fa", "name": "Commented-code block (5 lines) in apps/web/lib/super/plan-actions.ts:8", "shortDescription": {"text": "Commented-code block (5 lines) in apps/web/lib/super/plan-actions.ts:8"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-5b9ec40a8302005a", "name": "Commented-code block (5 lines) in apps/web/lib/mock/constants.ts:3", "shortDescription": {"text": "Commented-code block (5 lines) in apps/web/lib/mock/constants.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-3b42ba722df44b23", "name": "Commented-code block (5 lines) in apps/web/lib/mock/actions.ts:5", "shortDescription": {"text": "Commented-code block (5 lines) in apps/web/lib/mock/actions.ts:5"}, "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-b9a77aefe2e196c5", "name": "Commented-code block (5 lines) in apps/web/lib/billing/stripe-client.ts:1", "shortDescription": {"text": "Commented-code block (5 lines) in apps/web/lib/billing/stripe-client.ts:1"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-daf86408654520ee", "name": "Commented-code block (5 lines) in apps/web/lib/admin/branding-actions.ts:10", "shortDescription": {"text": "Commented-code block (5 lines) in apps/web/lib/admin/branding-actions.ts:10"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-aa915d0d8c9ce407", "name": "Commented-code block (7 lines) in apps/web/lib/onboarding/reconcile.ts:7", "shortDescription": {"text": "Commented-code block (7 lines) in apps/web/lib/onboarding/reconcile.ts:7"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-19e813ca799a47b7", "name": "Commented-code block (5 lines) in apps/web/lib/onboarding/self-serve-actions.ts:5", "shortDescription": {"text": "Commented-code block (5 lines) in apps/web/lib/onboarding/self-serve-actions.ts:5"}, "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-eb2c26b288ae4899", "name": "Commented-code block (7 lines) in apps/web/lib/onboarding/checkout-actions.ts:8", "shortDescription": {"text": "Commented-code block (7 lines) in apps/web/lib/onboarding/checkout-actions.ts:8"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-f4fc8214d67e9301", "name": "Commented-code block (13 lines) in apps/web/lib/content/lifecycle-actions.ts:10", "shortDescription": {"text": "Commented-code block (13 lines) in apps/web/lib/content/lifecycle-actions.ts:10"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-951e969b7e2fb998", "name": "Commented-code block (5 lines) in apps/web/lib/writing/task.ts:1", "shortDescription": {"text": "Commented-code block (5 lines) in apps/web/lib/writing/task.ts:1"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-3f1f186ba6987f75", "name": "Commented-code block (5 lines) in apps/web/lib/consent/ip-hash.ts:3", "shortDescription": {"text": "Commented-code block (5 lines) in apps/web/lib/consent/ip-hash.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-bcbf00b38d6e2c50", "name": "Legacy-named symbol `eleven_multilingual_v2` in packages/ai/src/gateway.test.ts:69", "shortDescription": {"text": "Legacy-named symbol `eleven_multilingual_v2` in packages/ai/src/gateway.test.ts:69"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-e6f0fc23a757a3c8", "name": "Commented-code block (5 lines) in packages/ai/src/env.ts:7", "shortDescription": {"text": "Commented-code block (5 lines) in packages/ai/src/env.ts:7"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-31a3e93d56341bba", "name": "Commented-code block (6 lines) in packages/ai/src/pricing.ts:96", "shortDescription": {"text": "Commented-code block (6 lines) in packages/ai/src/pricing.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-a21ecf9eda7ac3e6", "name": "Commented-code block (6 lines) in packages/ai/src/gateway.ts:8", "shortDescription": {"text": "Commented-code block (6 lines) in packages/ai/src/gateway.ts:8"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-337d3ecf521d75f2", "name": "Commented-code block (5 lines) in packages/ai/src/models.ts:3", "shortDescription": {"text": "Commented-code block (5 lines) in packages/ai/src/models.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-acff92f639514cda", "name": "Commented-code block (6 lines) in packages/ai/src/quota.ts:3", "shortDescription": {"text": "Commented-code block (6 lines) in packages/ai/src/quota.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-95d22e42d3a45719", "name": "Commented-code block (5 lines) in packages/ai/src/errors.ts:1", "shortDescription": {"text": "Commented-code block (5 lines) in packages/ai/src/errors.ts:1"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-58380be452fc4175", "name": "Commented-code block (5 lines) in packages/ai/src/adapters/openai-chat.ts:6", "shortDescription": {"text": "Commented-code block (5 lines) in packages/ai/src/adapters/openai-chat.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-1a8588902ef07fe9", "name": "Commented-code block (5 lines) in packages/ai/src/adapters/openai.ts:3", "shortDescription": {"text": "Commented-code block (5 lines) in packages/ai/src/adapters/openai.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-e32cf359085423aa", "name": "Legacy-named symbol `eleven_multilingual_v2` in packages/ai/src/adapters/elevenlabs.ts:17", "shortDescription": {"text": "Legacy-named symbol `eleven_multilingual_v2` in packages/ai/src/adapters/elevenlabs.ts:17"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-d9826a8d3291a8f1", "name": "Commented-code block (10 lines) in packages/ai/src/automation/engine.test.ts:3", "shortDescription": {"text": "Commented-code block (10 lines) in packages/ai/src/automation/engine.test.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-38c27738a2a1a36c", "name": "Commented-code block (7 lines) in packages/ai/src/automation/engine.ts:6", "shortDescription": {"text": "Commented-code block (7 lines) in packages/ai/src/automation/engine.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-baf082fe28025e2a", "name": "Commented-code block (5 lines) in packages/ai/src/reading/passage.ts:72", "shortDescription": {"text": "Commented-code block (5 lines) in packages/ai/src/reading/passage.ts:72"}, "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-52a84da760110856", "name": "Commented-code block (7 lines) in packages/ai/src/reading/persist.ts:5", "shortDescription": {"text": "Commented-code block (7 lines) in packages/ai/src/reading/persist.ts:5"}, "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-8c95c5908db6b533", "name": "Commented-code block (5 lines) in packages/ai/src/listening/content.ts:8", "shortDescription": {"text": "Commented-code block (5 lines) in packages/ai/src/listening/content.ts:8"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-ab0c34bb1f9fe0d0", "name": "Legacy-named symbol `eleven_multilingual_v2` in packages/ai/src/listening/tts-cache.test.ts:32", "shortDescription": {"text": "Legacy-named symbol `eleven_multilingual_v2` in packages/ai/src/listening/tts-cache.test.ts:32"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-273c162451fb233c", "name": "Commented-code block (7 lines) in packages/ai/src/listening/tts-cache.ts:3", "shortDescription": {"text": "Commented-code block (7 lines) in packages/ai/src/listening/tts-cache.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-2ec5da1876341a01", "name": "Commented-code block (5 lines) in packages/ai/src/listening/fixtures.ts:1", "shortDescription": {"text": "Commented-code block (5 lines) in packages/ai/src/listening/fixtures.ts:1"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-add9e108eff674c1", "name": "Commented-code block (5 lines) in packages/ai/src/listening/boilerplate.ts:1", "shortDescription": {"text": "Commented-code block (5 lines) in packages/ai/src/listening/boilerplate.ts:1"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-c9b01f04796058ea", "name": "Commented-code block (6 lines) in packages/ai/src/listening/voices.ts:10", "shortDescription": {"text": "Commented-code block (6 lines) in packages/ai/src/listening/voices.ts:10"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-43714945eef7c3f0", "name": "Commented-code block (7 lines) in packages/ai/src/listening/persist.ts:6", "shortDescription": {"text": "Commented-code block (7 lines) in packages/ai/src/listening/persist.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-51e8bc060944fb0d", "name": "Commented-code block (5 lines) in packages/ai/src/listening/question-types.ts:1", "shortDescription": {"text": "Commented-code block (5 lines) in packages/ai/src/listening/question-types.ts:1"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-e14f0a1a434f4055", "name": "Commented-code block (5 lines) in packages/ai/src/speaking/examiner-prompt.ts:369", "shortDescription": {"text": "Commented-code block (5 lines) in packages/ai/src/speaking/examiner-prompt.ts:369"}, "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-8ec9473a7fea4820", "name": "Commented-code block (5 lines) in packages/ai/src/review/reviewer.test.ts:3", "shortDescription": {"text": "Commented-code block (5 lines) in packages/ai/src/review/reviewer.test.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-bdc4808b52ffe7d6", "name": "Commented-code block (5 lines) in packages/ai/src/audio/features.ts:3", "shortDescription": {"text": "Commented-code block (5 lines) in packages/ai/src/audio/features.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-ab3eb92e20a91e5f", "name": "Commented-code block (6 lines) in packages/ai/src/generation/speaking-validate.ts:3", "shortDescription": {"text": "Commented-code block (6 lines) in packages/ai/src/generation/speaking-validate.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-aee4c4e72fa6e4da", "name": "Commented-code block (6 lines) in packages/ai/src/generation/reading.ts:10", "shortDescription": {"text": "Commented-code block (6 lines) in packages/ai/src/generation/reading.ts:10"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-9df9300789c12c35", "name": "Commented-code block (12 lines) in packages/ai/src/generation/listening-validate.ts:8", "shortDescription": {"text": "Commented-code block (12 lines) in packages/ai/src/generation/listening-validate.ts:8"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-d6ab8402e8e4d789", "name": "Commented-code block (12 lines) in packages/ai/src/generation/listening-persist.ts:7", "shortDescription": {"text": "Commented-code block (12 lines) in packages/ai/src/generation/listening-persist.ts:7"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-74eb5cbde141b7c2", "name": "Commented-code block (6 lines) in packages/ai/src/generation/speaking.ts:11", "shortDescription": {"text": "Commented-code block (6 lines) in packages/ai/src/generation/speaking.ts:11"}, "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-7198ab52ee698a6d", "name": "Commented-code block (6 lines) in packages/ai/src/generation/listening.ts:11", "shortDescription": {"text": "Commented-code block (6 lines) in packages/ai/src/generation/listening.ts:11"}, "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-01bbbb3e17d0134d", "name": "Commented-code block (5 lines) in packages/ai/src/generation/speaking-persist.ts:7", "shortDescription": {"text": "Commented-code block (5 lines) in packages/ai/src/generation/speaking-persist.ts:7"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-f363efd5852c31fc", "name": "Commented-code block (6 lines) in packages/ai/src/generation/listening-schema.ts:80", "shortDescription": {"text": "Commented-code block (6 lines) in packages/ai/src/generation/listening-schema.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-f5355adc6818d3b1", "name": "Commented-code block (6 lines) in packages/ai/src/generation/writing.ts:12", "shortDescription": {"text": "Commented-code block (6 lines) in packages/ai/src/generation/writing.ts:12"}, "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-6d5e02928882628a", "name": "Commented-code block (5 lines) in packages/ai/src/generation/persist.ts:3", "shortDescription": {"text": "Commented-code block (5 lines) in packages/ai/src/generation/persist.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-f3f6a447f3dc6af2", "name": "Commented-code block (6 lines) in packages/ai/src/generation/validate.ts:193", "shortDescription": {"text": "Commented-code block (6 lines) in packages/ai/src/generation/validate.ts:193"}, "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-68397718c28b45e0", "name": "Commented-code block (6 lines) in packages/ai/src/generation/writing-persist.ts:3", "shortDescription": {"text": "Commented-code block (6 lines) in packages/ai/src/generation/writing-persist.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-bf2819c2e5bc32e6", "name": "Commented-code block (5 lines) in packages/db/prisma/seed.ts:33", "shortDescription": {"text": "Commented-code block (5 lines) in packages/db/prisma/seed.ts:33"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-9d94ee0e3d4a6f44", "name": "Commented-code block (5 lines) in packages/db/prisma/promote-super.ts:22", "shortDescription": {"text": "Commented-code block (5 lines) in packages/db/prisma/promote-super.ts: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-1b2faa05d3d7a402", "name": "Commented-code block (5 lines) in packages/db/src/tenancy.ts:94", "shortDescription": {"text": "Commented-code block (5 lines) in packages/db/src/tenancy.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-446c0525bc9a2459", "name": "Commented-code block (5 lines) in packages/db/src/super-metrics.ts:3", "shortDescription": {"text": "Commented-code block (5 lines) in packages/db/src/super-metrics.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-d73af8e7ee9536e6", "name": "Commented-code block (6 lines) in packages/db/src/branding.ts:3", "shortDescription": {"text": "Commented-code block (6 lines) in packages/db/src/branding.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-69793003335108c2", "name": "Commented-code block (8 lines) in packages/db/src/clerk-seed.ts:5", "shortDescription": {"text": "Commented-code block (8 lines) in packages/db/src/clerk-seed.ts:5"}, "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-60a53075469fbdbc", "name": "Commented-code block (7 lines) in packages/db/src/retention.ts:3", "shortDescription": {"text": "Commented-code block (7 lines) in packages/db/src/retention.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-16e5f8dcb6c054e3", "name": "Commented-code block (10 lines) in packages/db/src/self-serve.ts:3", "shortDescription": {"text": "Commented-code block (10 lines) in packages/db/src/self-serve.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-7b9259024b09dd0b", "name": "Commented-code block (6 lines) in packages/db/src/test-global-setup.ts:12", "shortDescription": {"text": "Commented-code block (6 lines) in packages/db/src/test-global-setup.ts:12"}, "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-932f439109e39547", "name": "Commented-code block (5 lines) in packages/db/src/reading-persist.test.ts:3", "shortDescription": {"text": "Commented-code block (5 lines) in packages/db/src/reading-persist.test.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-4091d6da672c4b77", "name": "Commented-code block (7 lines) in packages/db/src/system-org.ts:4", "shortDescription": {"text": "Commented-code block (7 lines) in packages/db/src/system-org.ts:4"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-e557487e08daf34c", "name": "Commented-code block (8 lines) in packages/db/src/onboarding.ts:3", "shortDescription": {"text": "Commented-code block (8 lines) in packages/db/src/onboarding.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-d18e176565a8f8a3", "name": "Commented-code block (6 lines) in packages/db/src/billing.ts:3", "shortDescription": {"text": "Commented-code block (6 lines) in packages/db/src/billing.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-a13bced94b243b65", "name": "Commented-code block (5 lines) in packages/db/src/stripe-events.ts:18", "shortDescription": {"text": "Commented-code block (5 lines) in packages/db/src/stripe-events.ts:18"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-f64dbb37523e8374", "name": "Commented-code block (5 lines) in packages/db/src/org-learner-admin.ts:7", "shortDescription": {"text": "Commented-code block (5 lines) in packages/db/src/org-learner-admin.ts:7"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-61f95075cfd971c8", "name": "Commented-code block (6 lines) in packages/db/src/content-lifecycle.test.ts:3", "shortDescription": {"text": "Commented-code block (6 lines) in packages/db/src/content-lifecycle.test.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-38d43b066b411d17", "name": "Commented-code block (5 lines) in packages/db/src/admin-invite.ts:1", "shortDescription": {"text": "Commented-code block (5 lines) in packages/db/src/admin-invite.ts:1"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-4065d126aff50195", "name": "Commented-code block (5 lines) in packages/db/src/data-rights.ts:3", "shortDescription": {"text": "Commented-code block (5 lines) in packages/db/src/data-rights.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-ae3ec6b7f03e7f6b", "name": "Commented-code block (5 lines) in packages/db/src/plans.ts:3", "shortDescription": {"text": "Commented-code block (5 lines) in packages/db/src/plans.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-ace9430fc9e322b1", "name": "Commented-code block (6 lines) in packages/db/src/plan-sync.ts:179", "shortDescription": {"text": "Commented-code block (6 lines) in packages/db/src/plan-sync.ts:179"}, "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-88bb647646840a48", "name": "Commented-code block (5 lines) in packages/db/src/onboarding.test.ts:243", "shortDescription": {"text": "Commented-code block (5 lines) in packages/db/src/onboarding.test.ts:243"}, "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-400293ba17dd2146", "name": "Commented-code block (6 lines) in packages/db/src/automation-schedule.ts:3", "shortDescription": {"text": "Commented-code block (6 lines) in packages/db/src/automation-schedule.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-3dca69c1b2be3a35", "name": "Commented-code block (5 lines) in packages/db/src/content-lifecycle.ts:1", "shortDescription": {"text": "Commented-code block (5 lines) in packages/db/src/content-lifecycle.ts:1"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-7b1beb54ff521a85", "name": "Commented-code block (5 lines) in packages/db/src/super-user-admin.ts:3", "shortDescription": {"text": "Commented-code block (5 lines) in packages/db/src/super-user-admin.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-5c237f078b657aa6", "name": "Commented-code block (6 lines) in packages/db/src/clerk-seed.test.ts:469", "shortDescription": {"text": "Commented-code block (6 lines) in packages/db/src/clerk-seed.test.ts:469"}, "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-5be0764808c56474", "name": "Commented-code block (5 lines) in packages/storage/src/image-sniff.ts:3", "shortDescription": {"text": "Commented-code block (5 lines) in packages/storage/src/image-sniff.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-d9c25ab07c9d58d8", "name": "Commented-code block (6 lines) in packages/storage/src/r2.ts:40", "shortDescription": {"text": "Commented-code block (6 lines) in packages/storage/src/r2.ts: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-d520696aaa7c6d5b", "name": "Commented-code block (5 lines) in packages/storage/src/keys.ts:25", "shortDescription": {"text": "Commented-code block (5 lines) in packages/storage/src/keys.ts:25"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-5fa5af25316da646", "name": "16 env vars used in code but missing from .env.example", "shortDescription": {"text": "16 env vars used in code but missing from .env.example"}, "fullDescription": {"text": "Drift between code and config docs. The first few: `APP_URL`, `CI`, `CLERK_SECRET_KEY`, `CLERK_WEBHOOK_SIGNING_SECRET`, `CONSENT_IP_SALT`, `CRON_SECRET`, `DEV_SESSION_SECRET`, `E2E_BASE_URL` + 8 more. Add them (with a placeholder/comment) to .env.example so onboarding doesn't break."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}]}}, "automationDetails": {"id": "repobility/23409"}, "properties": {"repository": "yujith/elangclaude", "repoUrl": "https://github.com/yujith/elangclaude", "branch": "main"}, "results": [{"ruleId": "scanner-bead75b0f9233e05", "level": "none", "message": {"text": "No API endpoints detected"}, "properties": {"repobilityId": "0f8bb852027c38f8", "scanner": "scanner-primary", "fingerprint": "bead75b0f9233e05", "layer": "api", "severity": "info", "confidence": 1.0, "tags": ["coverage"]}}, {"ruleId": "scanner-20ebd184213742af", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 apps/web/components/org-theme-assets.tsx:5"}, "properties": {"repobilityId": "45f48222f62bd000", "scanner": "scanner-primary", "fingerprint": "20ebd184213742af", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-b6cb2d5597d793ba", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/web/components/admin/invite-panel.tsx:225"}, "properties": {"repobilityId": "1fb40b3eb49c2469", "scanner": "scanner-primary", "fingerprint": "b6cb2d5597d793ba", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-1308f05d2c4879bb", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/web/components/content/approved-list.tsx:84"}, "properties": {"repobilityId": "da66b4273b20387e", "scanner": "scanner-primary", "fingerprint": "1308f05d2c4879bb", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-f689e838806fb91e", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/web/app/(super)/orgs/[orgId]/page.tsx:383"}, "properties": {"repobilityId": "29621479d53d1438", "scanner": "scanner-primary", "fingerprint": "f689e838806fb91e", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-c5c7a3438bb8400f", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/web/app/(super)/content/reading/papers/page.tsx:216"}, "properties": {"repobilityId": "d950bd92737ca9e2", "scanner": "scanner-primary", "fingerprint": "c5c7a3438bb8400f", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-6990f1c696040086", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/web/app/(admin)/admin/page.tsx:142"}, "properties": {"repobilityId": "a6cf46653bb968b0", "scanner": "scanner-primary", "fingerprint": "6990f1c696040086", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-0c0940236a110b2e", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/web/app/(admin)/admin/activity/page.tsx:86"}, "properties": {"repobilityId": "d3ca806916292125", "scanner": "scanner-primary", "fingerprint": "0c0940236a110b2e", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-7f141e7febf969c1", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 apps/web/app/(admin)/admin/branding/page.tsx:51"}, "properties": {"repobilityId": "2ad9b3899249860a", "scanner": "scanner-primary", "fingerprint": "7f141e7febf969c1", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-57e5297a1ce70b7d", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/db/scripts/resync-name-from-clerk.ts:43"}, "properties": {"repobilityId": "de051bc4604bf87e", "scanner": "scanner-primary", "fingerprint": "57e5297a1ce70b7d", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-ff9bbe6227f18c00", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/db/prisma/seed.ts:1868"}, "properties": {"repobilityId": "6b4189bd06c911cd", "scanner": "scanner-primary", "fingerprint": "ff9bbe6227f18c00", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-a67efeae4bb74309", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/db/prisma/seed-listening.ts:97"}, "properties": {"repobilityId": "45c8a6c2bec499d4", "scanner": "scanner-primary", "fingerprint": "a67efeae4bb74309", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-4a6c4205b0f234e4", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/db/prisma/promote-super.ts:229"}, "properties": {"repobilityId": "5a01005aa25780c7", "scanner": "scanner-primary", "fingerprint": "4a6c4205b0f234e4", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-21c8b002c6d62897", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/db/src/clerk-seed.ts:157"}, "properties": {"repobilityId": "b54e16ecc7cc1319", "scanner": "scanner-primary", "fingerprint": "21c8b002c6d62897", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-2a605f429d1625ed", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in apps/web/app/(admin)/admin/branding/page.tsx:51"}, "properties": {"repobilityId": "b8b2951e0011e824", "scanner": "scanner-primary", "fingerprint": "2a605f429d1625ed", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/web/app/(admin)/admin/branding/page.tsx"}, "region": {"startLine": 51}}}]}, {"ruleId": "scanner-c43b935c655ee8eb", "level": "error", "message": {"text": "Possible secret in packages/db/src/clerk-seed.ts"}, "properties": {"repobilityId": "a29f3f5688351dbf", "scanner": "scanner-primary", "fingerprint": "c43b935c655ee8eb", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/db/src/clerk-seed.ts"}, "region": {"startLine": 87}}}]}, {"ruleId": "scanner-ac6fdbc832c90173", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in packages/db/src/test-global-setup.ts:5"}, "properties": {"repobilityId": "9f2a333d3c379b6d", "scanner": "scanner-primary", "fingerprint": "ac6fdbc832c90173", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/db/src/test-global-setup.ts"}, "region": {"startLine": 5}}}]}, {"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": 134}}}]}, {"ruleId": "scanner-16991848b93fbe60", "level": "note", "message": {"text": "Very large file: apps/web/components/listening-practice.tsx (1994 lines)"}, "properties": {"repobilityId": "30122721c711c8c7", "scanner": "scanner-primary", "fingerprint": "16991848b93fbe60", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-c5d336c44f1613fb", "level": "note", "message": {"text": "Very large file: packages/db/prisma/seed.ts (1889 lines)"}, "properties": {"repobilityId": "7cdb6f217249f713", "scanner": "scanner-primary", "fingerprint": "c5d336c44f1613fb", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-141b30a41e03817b", "level": "note", "message": {"text": "No license file detected"}, "properties": {"repobilityId": "b5adfeedda49975c", "scanner": "scanner-primary", "fingerprint": "141b30a41e03817b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["license", "repo-hardening", "generated-repo-pattern"]}}, {"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-80f569ae36a3e3bf", "level": "note", "message": {"text": "Node manifest has dependencies but no lockfile: packages/ai/package.json"}, "properties": {"repobilityId": "2d5eb1212f62ce31", "scanner": "scanner-primary", "fingerprint": "80f569ae36a3e3bf", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["dependency", "lockfile", "reproducibility", "generated-repo-pattern"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/ai/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-50218c90b43393bb", "level": "note", "message": {"text": "Node manifest has dependencies but no lockfile: packages/ui/package.json"}, "properties": {"repobilityId": "637e26a8c754e81d", "scanner": "scanner-primary", "fingerprint": "50218c90b43393bb", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["dependency", "lockfile", "reproducibility", "generated-repo-pattern"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/ui/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-7b16ae2bd0fca524", "level": "note", "message": {"text": "Node manifest has dependencies but no lockfile: packages/db/package.json"}, "properties": {"repobilityId": "2bddd295d559a9b6", "scanner": "scanner-primary", "fingerprint": "7b16ae2bd0fca524", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["dependency", "lockfile", "reproducibility", "generated-repo-pattern"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/db/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-137007a5b04ba75f", "level": "note", "message": {"text": "Node manifest has dependencies but no lockfile: packages/storage/package.json"}, "properties": {"repobilityId": "c54ae775ce7f58ec", "scanner": "scanner-primary", "fingerprint": "137007a5b04ba75f", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["dependency", "lockfile", "reproducibility", "generated-repo-pattern"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/storage/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-3ab5d313dda8e5f9", "level": "note", "message": {"text": "Debug logging residue appears in source files"}, "properties": {"repobilityId": "4bc3092b56d291f8", "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": "a67b22544fc28d84", "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": "50b55c0c7838259c", "scanner": "scanner-primary", "fingerprint": "2d0c7b7ab8f8aacf", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["placeholder", "mock-data", "critical-flow", "generated-repo-pattern"]}}, {"ruleId": "scanner-b9088664ace7f748", "level": "note", "message": {"text": "Composite production-readiness gap"}, "properties": {"repobilityId": "9e37e915e007bf6c", "scanner": "scanner-primary", "fingerprint": "b9088664ace7f748", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["production-readiness", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-749d4bc1bd66df5f", "level": "warning", "message": {"text": "Agent instructions exist but release-hardening basics are missing"}, "properties": {"repobilityId": "def83fb73897dede", "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": "80a03ec8beccb2a7", "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": "262081e60485e105", "scanner": "scanner-primary", "fingerprint": "8424db9c75e04ba4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["provenance", "git-history", "generated-repo-pattern"]}}, {"ruleId": "scanner-ecb0d2c55ed6875d", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: .claude/settings.local.json"}, "properties": {"repobilityId": "d8bae33a6d517bf0", "scanner": "scanner-primary", "fingerprint": "ecb0d2c55ed6875d", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/settings.local.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-e29f563b9beb91cd", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: .claude/rules/ai-cost-control.md"}, "properties": {"repobilityId": "c9b7112e77e89316", "scanner": "scanner-primary", "fingerprint": "e29f563b9beb91cd", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/rules/ai-cost-control.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-13cae9fba912b2c6", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: .claude/rules/brand.md"}, "properties": {"repobilityId": "d7e7512961335a17", "scanner": "scanner-primary", "fingerprint": "13cae9fba912b2c6", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/rules/brand.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-b538e335433b5c90", "level": "error", "message": {"text": "Agent instruction/config may expose a secret: .claude/skills/ai-grading/SKILL.md"}, "properties": {"repobilityId": "54ed0421f4aaebb3", "scanner": "scanner-primary", "fingerprint": "b538e335433b5c90", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["agent-instructions", "secrets", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/skills/ai-grading/SKILL.md"}, "region": {"startLine": 23}}}]}, {"ruleId": "scanner-41860bd44c692534", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/web/proxy.ts:49"}, "properties": {"repobilityId": "7bc4665b78a2bbc4", "scanner": "scanner-primary", "fingerprint": "41860bd44c692534", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-9238d971a29af702", "level": "none", "message": {"text": "Commented-code block (7 lines) in apps/web/next.config.ts:6"}, "properties": {"repobilityId": "7d94958473f93782", "scanner": "scanner-primary", "fingerprint": "9238d971a29af702", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-13aab956fbb4d294", "level": "none", "message": {"text": "Commented-code block (8 lines) in apps/web/tests/e2e/branding.spec.ts:3"}, "properties": {"repobilityId": "2a4878c811b34bbc", "scanner": "scanner-primary", "fingerprint": "13aab956fbb4d294", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-efcfc2701a4bf971", "level": "none", "message": {"text": "Commented-code block (9 lines) in apps/web/tests/e2e/learner-home.spec.ts:3"}, "properties": {"repobilityId": "6c7d2d0619259e03", "scanner": "scanner-primary", "fingerprint": "efcfc2701a4bf971", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2909cb04e39d39b8", "level": "none", "message": {"text": "Commented-code block (8 lines) in apps/web/tests/e2e/consent-banner.spec.ts:4"}, "properties": {"repobilityId": "f4119c591d424d37", "scanner": "scanner-primary", "fingerprint": "2909cb04e39d39b8", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-9da15715e742ff81", "level": "none", "message": {"text": "Commented-code block (6 lines) in apps/web/tests/e2e/role-greeting.spec.ts:4"}, "properties": {"repobilityId": "71523e0b8a2ad425", "scanner": "scanner-primary", "fingerprint": "9da15715e742ff81", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2b99682effbda642", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/web/tests/e2e/sign-in-a11y.spec.ts:3"}, "properties": {"repobilityId": "a6640f490dee776d", "scanner": "scanner-primary", "fingerprint": "2b99682effbda642", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b25ccc3e957047e4", "level": "none", "message": {"text": "Commented-code block (6 lines) in apps/web/components/auth-shell.tsx:4"}, "properties": {"repobilityId": "bad893bc936fd287", "scanner": "scanner-primary", "fingerprint": "b25ccc3e957047e4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-185f812f6cf53126", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/web/components/reading-practice.tsx:114"}, "properties": {"repobilityId": "aadfec435c67bc04", "scanner": "scanner-primary", "fingerprint": "185f812f6cf53126", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-75a67fa6bb2c4ba8", "level": "none", "message": {"text": "Commented-code block (6 lines) in apps/web/components/speaking-result.tsx:3"}, "properties": {"repobilityId": "8dd833c20cd8a199", "scanner": "scanner-primary", "fingerprint": "75a67fa6bb2c4ba8", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-9c0e3c6b62b05940", "level": "none", "message": {"text": "Commented-code block (6 lines) in apps/web/components/org-logo.tsx:3"}, "properties": {"repobilityId": "820e1865cf7e0f3c", "scanner": "scanner-primary", "fingerprint": "9c0e3c6b62b05940", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-720b5bc795dc7871", "level": "none", "message": {"text": "Commented-code block (11 lines) in apps/web/components/speaking-practice.tsx:5"}, "properties": {"repobilityId": "7b7381d980ec5ebd", "scanner": "scanner-primary", "fingerprint": "720b5bc795dc7871", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a097447ffca9bddb", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/web/components/speaking-practice.tsx:416"}, "properties": {"repobilityId": "34656f43d6d0c075", "scanner": "scanner-primary", "fingerprint": "a097447ffca9bddb", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-06a821ea711f027b", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/web/components/writing-practice.tsx:49"}, "properties": {"repobilityId": "30cdd2f251487e3c", "scanner": "scanner-primary", "fingerprint": "06a821ea711f027b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-34d44da62e4dba00", "level": "none", "message": {"text": "Commented-code block (8 lines) in apps/web/components/listening-practice.tsx:5"}, "properties": {"repobilityId": "f13cd12534989432", "scanner": "scanner-primary", "fingerprint": "34d44da62e4dba00", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6776c5aee7276434", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/web/components/ui/spinner.tsx:8"}, "properties": {"repobilityId": "64e56504cfc65cf2", "scanner": "scanner-primary", "fingerprint": "6776c5aee7276434", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-07412069f0808e94", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/web/components/ui/pending-button.tsx:3"}, "properties": {"repobilityId": "78786108149e9674", "scanner": "scanner-primary", "fingerprint": "07412069f0808e94", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1fb4381f5d1a8378", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/web/components/ui/pending-button.tsx:4"}, "properties": {"repobilityId": "ab9d6ecd711d9afd", "scanner": "scanner-primary", "fingerprint": "1fb4381f5d1a8378", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-b1581b8a892f17e4", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/web/components/content/reading-generate-form.tsx:5"}, "properties": {"repobilityId": "6fa446a5f3181308", "scanner": "scanner-primary", "fingerprint": "b1581b8a892f17e4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c101f16164e54db4", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/web/components/consent/consent-banner.tsx:14"}, "properties": {"repobilityId": "8af5c90a008a729b", "scanner": "scanner-primary", "fingerprint": "c101f16164e54db4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-40027d95551691fa", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/web/components/consent/consent-store.ts:29"}, "properties": {"repobilityId": "587697089111dc69", "scanner": "scanner-primary", "fingerprint": "40027d95551691fa", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4f327dbd9194e61b", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/web/app/create-org/page.tsx:1"}, "properties": {"repobilityId": "3fd8e56c39c09958", "scanner": "scanner-primary", "fingerprint": "4f327dbd9194e61b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e905851811f2a7cf", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/web/app/api/clerk/webhook/route.ts:1"}, "properties": {"repobilityId": "7f201e205eabcb2b", "scanner": "scanner-primary", "fingerprint": "e905851811f2a7cf", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7e27a94e0aeef7c7", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/web/app/api/cron/retention/route.ts:7"}, "properties": {"repobilityId": "dd87bd1992d7c0f7", "scanner": "scanner-primary", "fingerprint": "7e27a94e0aeef7c7", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-20c9afca01f1f561", "level": "none", "message": {"text": "Commented-code block (9 lines) in apps/web/app/api/cron/content-generation/route.ts:3"}, "properties": {"repobilityId": "4938aafd7ea7a786", "scanner": "scanner-primary", "fingerprint": "20c9afca01f1f561", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6f87adcdfb16d749", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/web/app/api/branding/logo/route.ts:4"}, "properties": {"repobilityId": "9ca269ee4404b001", "scanner": "scanner-primary", "fingerprint": "6f87adcdfb16d749", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-125a9cd0f024b235", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/web/app/api/stripe/webhook/route.ts:1"}, "properties": {"repobilityId": "47b520aadf33a648", "scanner": "scanner-primary", "fingerprint": "125a9cd0f024b235", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2dec90ce17e96a58", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/web/app/(learner)/mock/layout.tsx:3"}, "properties": {"repobilityId": "1852a127434ba919", "scanner": "scanner-primary", "fingerprint": "2dec90ce17e96a58", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7635417b927d4896", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/web/app/(learner)/mock/[mockId]/page.tsx:83"}, "properties": {"repobilityId": "cd1c8652521106f3", "scanner": "scanner-primary", "fingerprint": "7635417b927d4896", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1e4a99f411b1bbe7", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/web/app/(learner)/practice/listening/[attemptId]/page.tsx:72"}, "properties": {"repobilityId": "93c7802693fa0ccb", "scanner": "scanner-primary", "fingerprint": "1e4a99f411b1bbe7", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-69acb3e33bb4db84", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/web/app/(super)/users/page.tsx:112"}, "properties": {"repobilityId": "51343c3e019bfe69", "scanner": "scanner-primary", "fingerprint": "69acb3e33bb4db84", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-3d3955117338ebf0", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/web/app/(super)/users/export/route.ts:70"}, "properties": {"repobilityId": "daf8588aad396cdd", "scanner": "scanner-primary", "fingerprint": "3d3955117338ebf0", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-62d556dee4f73d7a", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/web/app/(super)/metrics/page.tsx:86"}, "properties": {"repobilityId": "0531ec8fd8a28c26", "scanner": "scanner-primary", "fingerprint": "62d556dee4f73d7a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4241fea8b70534ff", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/web/app/(admin)/layout.tsx:46"}, "properties": {"repobilityId": "3e5b6340e411067d", "scanner": "scanner-primary", "fingerprint": "4241fea8b70534ff", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2225c19ad45a9fc8", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/web/app/(admin)/admin/branding/page.tsx:3"}, "properties": {"repobilityId": "9bc0f0079f8c08e0", "scanner": "scanner-primary", "fingerprint": "2225c19ad45a9fc8", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-67120e8287573272", "level": "none", "message": {"text": "Commented-code block (6 lines) in apps/web/app/post-signin/page.tsx:1"}, "properties": {"repobilityId": "f55f889061d285e7", "scanner": "scanner-primary", "fingerprint": "67120e8287573272", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ab002a97c2d87c76", "level": "none", "message": {"text": "Commented-code block (9 lines) in apps/web/app/post-signin/post-signin-redirector.tsx:5"}, "properties": {"repobilityId": "6a405d9256c1b366", "scanner": "scanner-primary", "fingerprint": "ab002a97c2d87c76", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1ff52f4a7c6267b6", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/web/app/no-access/page.tsx:1"}, "properties": {"repobilityId": "39b2d579a824a9dc", "scanner": "scanner-primary", "fingerprint": "1ff52f4a7c6267b6", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-dff3c301ac1e2b17", "level": "none", "message": {"text": "Commented-code block (7 lines) in apps/web/app/onboarding/layout.tsx:8"}, "properties": {"repobilityId": "a2a269976de8b897", "scanner": "scanner-primary", "fingerprint": "dff3c301ac1e2b17", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-30016ea86571dec2", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/web/app/onboarding/processing/page.tsx:16"}, "properties": {"repobilityId": "f6829ddd217384cb", "scanner": "scanner-primary", "fingerprint": "30016ea86571dec2", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8cbd7b0134aa8424", "level": "none", "message": {"text": "Commented-code block (8 lines) in apps/web/app/onboarding/processing/polling-refresher.tsx:5"}, "properties": {"repobilityId": "68cfe7222431b2c6", "scanner": "scanner-primary", "fingerprint": "8cbd7b0134aa8424", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-074acb8890775dcb", "level": "none", "message": {"text": "Commented-code block (7 lines) in apps/web/lib/automation/runner.ts:8"}, "properties": {"repobilityId": "9692e32117eac13b", "scanner": "scanner-primary", "fingerprint": "074acb8890775dcb", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-3a8ccdce26ffe375", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/web/lib/automation/settings.ts:3"}, "properties": {"repobilityId": "ec6a97d0c2beb804", "scanner": "scanner-primary", "fingerprint": "3a8ccdce26ffe375", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e130145591776383", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/web/lib/reading/actions.ts:5"}, "properties": {"repobilityId": "7dbd42489878bf9e", "scanner": "scanner-primary", "fingerprint": "e130145591776383", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-969e9a8bea6692ca", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/web/lib/reading/generate-actions.ts:132"}, "properties": {"repobilityId": "e00a5239d4f33c6b", "scanner": "scanner-primary", "fingerprint": "969e9a8bea6692ca", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e582bd4f6f96d548", "level": "none", "message": {"text": "Commented-code block (6 lines) in apps/web/lib/reading/paper-actions.ts:10"}, "properties": {"repobilityId": "f0f0bb0a9340f0d1", "scanner": "scanner-primary", "fingerprint": "e582bd4f6f96d548", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2f7eec5102018023", "level": "none", "message": {"text": "Commented-code block (6 lines) in apps/web/lib/legal/policies.ts:3"}, "properties": {"repobilityId": "63a4b5dceb4ba7a8", "scanner": "scanner-primary", "fingerprint": "2f7eec5102018023", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-16b718d4db7cb7e7", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/web/lib/legal/entity.ts:3"}, "properties": {"repobilityId": "ddcc09a4dfb36085", "scanner": "scanner-primary", "fingerprint": "16b718d4db7cb7e7", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4e627100ddd3c043", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/web/lib/listening/topic-seed.ts:1"}, "properties": {"repobilityId": "9fe717d0a418d8e3", "scanner": "scanner-primary", "fingerprint": "4e627100ddd3c043", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-467332f9920614a1", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/web/lib/listening/synth.ts:13"}, "properties": {"repobilityId": "cae63cc0364feaa4", "scanner": "scanner-primary", "fingerprint": "467332f9920614a1", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-09432110a371859d", "level": "none", "message": {"text": "Commented-code block (10 lines) in apps/web/lib/listening/actions.ts:5"}, "properties": {"repobilityId": "992f063b2e9c5613", "scanner": "scanner-primary", "fingerprint": "09432110a371859d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-980de1dd68cf5636", "level": "none", "message": {"text": "Commented-code block (6 lines) in apps/web/lib/listening/moderation-actions.ts:9"}, "properties": {"repobilityId": "b51385f5fc4be044", "scanner": "scanner-primary", "fingerprint": "980de1dd68cf5636", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-09508ed06b09c7d4", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/web/lib/auth/clerk-appearance.ts:6"}, "properties": {"repobilityId": "a605750c7d509668", "scanner": "scanner-primary", "fingerprint": "09508ed06b09c7d4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-575b008a93e1f114", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/web/lib/auth/dev-session.ts:11"}, "properties": {"repobilityId": "94244d1e97318118", "scanner": "scanner-primary", "fingerprint": "575b008a93e1f114", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a7ef48e8ee836087", "level": "none", "message": {"text": "Commented-code block (7 lines) in apps/web/lib/auth/context.ts:6"}, "properties": {"repobilityId": "632b0adc98285049", "scanner": "scanner-primary", "fingerprint": "a7ef48e8ee836087", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4a93202cdc07bde4", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/web/lib/speaking/content.ts:1"}, "properties": {"repobilityId": "08971a5f7fc7ec89", "scanner": "scanner-primary", "fingerprint": "4a93202cdc07bde4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-99bdf658f34df39a", "level": "none", "message": {"text": "Commented-code block (6 lines) in apps/web/lib/speaking/actions.ts:10"}, "properties": {"repobilityId": "11f03e33e3f00ea6", "scanner": "scanner-primary", "fingerprint": "99bdf658f34df39a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-9fe4b0580cb7865b", "level": "none", "message": {"text": "Commented-code block (9 lines) in apps/web/lib/super/user-actions.ts:5"}, "properties": {"repobilityId": "14ccc68ee124c31e", "scanner": "scanner-primary", "fingerprint": "9fe4b0580cb7865b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a6d47bba07b20e7d", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/web/lib/super/branding-actions.ts:3"}, "properties": {"repobilityId": "0f870c8845482dc0", "scanner": "scanner-primary", "fingerprint": "a6d47bba07b20e7d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0a4aeffe3df53442", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/web/lib/super/org-actions.ts:5"}, "properties": {"repobilityId": "f59ebf26eabf8f97", "scanner": "scanner-primary", "fingerprint": "0a4aeffe3df53442", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d14bac7ecc6d89fa", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/web/lib/super/plan-actions.ts:8"}, "properties": {"repobilityId": "4506c6889b76fda0", "scanner": "scanner-primary", "fingerprint": "d14bac7ecc6d89fa", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5b9ec40a8302005a", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/web/lib/mock/constants.ts:3"}, "properties": {"repobilityId": "f481163904f3f9fe", "scanner": "scanner-primary", "fingerprint": "5b9ec40a8302005a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-3b42ba722df44b23", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/web/lib/mock/actions.ts:5"}, "properties": {"repobilityId": "f2b0636db57acc35", "scanner": "scanner-primary", "fingerprint": "3b42ba722df44b23", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b9a77aefe2e196c5", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/web/lib/billing/stripe-client.ts:1"}, "properties": {"repobilityId": "1dac6542abc4a203", "scanner": "scanner-primary", "fingerprint": "b9a77aefe2e196c5", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-daf86408654520ee", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/web/lib/admin/branding-actions.ts:10"}, "properties": {"repobilityId": "8bd36ca0cf910ea6", "scanner": "scanner-primary", "fingerprint": "daf86408654520ee", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-aa915d0d8c9ce407", "level": "none", "message": {"text": "Commented-code block (7 lines) in apps/web/lib/onboarding/reconcile.ts:7"}, "properties": {"repobilityId": "2c7a8d6a275401a2", "scanner": "scanner-primary", "fingerprint": "aa915d0d8c9ce407", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-19e813ca799a47b7", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/web/lib/onboarding/self-serve-actions.ts:5"}, "properties": {"repobilityId": "85bf4b226cdcacda", "scanner": "scanner-primary", "fingerprint": "19e813ca799a47b7", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-eb2c26b288ae4899", "level": "none", "message": {"text": "Commented-code block (7 lines) in apps/web/lib/onboarding/checkout-actions.ts:8"}, "properties": {"repobilityId": "695e9b43c2baa8c1", "scanner": "scanner-primary", "fingerprint": "eb2c26b288ae4899", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f4fc8214d67e9301", "level": "none", "message": {"text": "Commented-code block (13 lines) in apps/web/lib/content/lifecycle-actions.ts:10"}, "properties": {"repobilityId": "7657c3961de2ba7c", "scanner": "scanner-primary", "fingerprint": "f4fc8214d67e9301", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-951e969b7e2fb998", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/web/lib/writing/task.ts:1"}, "properties": {"repobilityId": "f32db14e68843c61", "scanner": "scanner-primary", "fingerprint": "951e969b7e2fb998", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-3f1f186ba6987f75", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/web/lib/consent/ip-hash.ts:3"}, "properties": {"repobilityId": "9c164dae24e0fb7a", "scanner": "scanner-primary", "fingerprint": "3f1f186ba6987f75", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-bcbf00b38d6e2c50", "level": "note", "message": {"text": "Legacy-named symbol `eleven_multilingual_v2` in packages/ai/src/gateway.test.ts:69"}, "properties": {"repobilityId": "83fa85913ff27924", "scanner": "scanner-primary", "fingerprint": "bcbf00b38d6e2c50", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-e6f0fc23a757a3c8", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/ai/src/env.ts:7"}, "properties": {"repobilityId": "32e6921524f267f7", "scanner": "scanner-primary", "fingerprint": "e6f0fc23a757a3c8", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-31a3e93d56341bba", "level": "none", "message": {"text": "Commented-code block (6 lines) in packages/ai/src/pricing.ts:96"}, "properties": {"repobilityId": "9cc0761ed11cf307", "scanner": "scanner-primary", "fingerprint": "31a3e93d56341bba", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a21ecf9eda7ac3e6", "level": "none", "message": {"text": "Commented-code block (6 lines) in packages/ai/src/gateway.ts:8"}, "properties": {"repobilityId": "e799f6af7482a568", "scanner": "scanner-primary", "fingerprint": "a21ecf9eda7ac3e6", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-337d3ecf521d75f2", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/ai/src/models.ts:3"}, "properties": {"repobilityId": "06077b82457d4604", "scanner": "scanner-primary", "fingerprint": "337d3ecf521d75f2", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-acff92f639514cda", "level": "none", "message": {"text": "Commented-code block (6 lines) in packages/ai/src/quota.ts:3"}, "properties": {"repobilityId": "4d9e514d0cab041b", "scanner": "scanner-primary", "fingerprint": "acff92f639514cda", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-95d22e42d3a45719", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/ai/src/errors.ts:1"}, "properties": {"repobilityId": "5e5ccc6ff61e9862", "scanner": "scanner-primary", "fingerprint": "95d22e42d3a45719", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-58380be452fc4175", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/ai/src/adapters/openai-chat.ts:6"}, "properties": {"repobilityId": "6d7576f1d28707ae", "scanner": "scanner-primary", "fingerprint": "58380be452fc4175", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1a8588902ef07fe9", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/ai/src/adapters/openai.ts:3"}, "properties": {"repobilityId": "93679212b28d77c8", "scanner": "scanner-primary", "fingerprint": "1a8588902ef07fe9", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e32cf359085423aa", "level": "note", "message": {"text": "Legacy-named symbol `eleven_multilingual_v2` in packages/ai/src/adapters/elevenlabs.ts:17"}, "properties": {"repobilityId": "e647a0c4c433b663", "scanner": "scanner-primary", "fingerprint": "e32cf359085423aa", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-d9826a8d3291a8f1", "level": "none", "message": {"text": "Commented-code block (10 lines) in packages/ai/src/automation/engine.test.ts:3"}, "properties": {"repobilityId": "72d2e988fdeb26b1", "scanner": "scanner-primary", "fingerprint": "d9826a8d3291a8f1", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-38c27738a2a1a36c", "level": "none", "message": {"text": "Commented-code block (7 lines) in packages/ai/src/automation/engine.ts:6"}, "properties": {"repobilityId": "7539bdd1afa4f471", "scanner": "scanner-primary", "fingerprint": "38c27738a2a1a36c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-baf082fe28025e2a", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/ai/src/reading/passage.ts:72"}, "properties": {"repobilityId": "d6cb48cffac3b8a9", "scanner": "scanner-primary", "fingerprint": "baf082fe28025e2a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-52a84da760110856", "level": "none", "message": {"text": "Commented-code block (7 lines) in packages/ai/src/reading/persist.ts:5"}, "properties": {"repobilityId": "0e74d2eda7eb8d07", "scanner": "scanner-primary", "fingerprint": "52a84da760110856", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8c95c5908db6b533", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/ai/src/listening/content.ts:8"}, "properties": {"repobilityId": "416835eda620cb50", "scanner": "scanner-primary", "fingerprint": "8c95c5908db6b533", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ab0c34bb1f9fe0d0", "level": "note", "message": {"text": "Legacy-named symbol `eleven_multilingual_v2` in packages/ai/src/listening/tts-cache.test.ts:32"}, "properties": {"repobilityId": "cabafdc4a2bec5fc", "scanner": "scanner-primary", "fingerprint": "ab0c34bb1f9fe0d0", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-273c162451fb233c", "level": "none", "message": {"text": "Commented-code block (7 lines) in packages/ai/src/listening/tts-cache.ts:3"}, "properties": {"repobilityId": "c8d5eb436d1d18ee", "scanner": "scanner-primary", "fingerprint": "273c162451fb233c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2ec5da1876341a01", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/ai/src/listening/fixtures.ts:1"}, "properties": {"repobilityId": "961df364b6159e76", "scanner": "scanner-primary", "fingerprint": "2ec5da1876341a01", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-add9e108eff674c1", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/ai/src/listening/boilerplate.ts:1"}, "properties": {"repobilityId": "d586d2bfd8f44fdc", "scanner": "scanner-primary", "fingerprint": "add9e108eff674c1", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c9b01f04796058ea", "level": "none", "message": {"text": "Commented-code block (6 lines) in packages/ai/src/listening/voices.ts:10"}, "properties": {"repobilityId": "ad74e333ccb7c056", "scanner": "scanner-primary", "fingerprint": "c9b01f04796058ea", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-43714945eef7c3f0", "level": "none", "message": {"text": "Commented-code block (7 lines) in packages/ai/src/listening/persist.ts:6"}, "properties": {"repobilityId": "c2303e40fab55010", "scanner": "scanner-primary", "fingerprint": "43714945eef7c3f0", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-51e8bc060944fb0d", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/ai/src/listening/question-types.ts:1"}, "properties": {"repobilityId": "28fefb9e68517156", "scanner": "scanner-primary", "fingerprint": "51e8bc060944fb0d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e14f0a1a434f4055", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/ai/src/speaking/examiner-prompt.ts:369"}, "properties": {"repobilityId": "f74231be40266fa0", "scanner": "scanner-primary", "fingerprint": "e14f0a1a434f4055", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8ec9473a7fea4820", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/ai/src/review/reviewer.test.ts:3"}, "properties": {"repobilityId": "20910194084fb1b6", "scanner": "scanner-primary", "fingerprint": "8ec9473a7fea4820", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-bdc4808b52ffe7d6", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/ai/src/audio/features.ts:3"}, "properties": {"repobilityId": "0de30b9d785d454b", "scanner": "scanner-primary", "fingerprint": "bdc4808b52ffe7d6", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ab3eb92e20a91e5f", "level": "none", "message": {"text": "Commented-code block (6 lines) in packages/ai/src/generation/speaking-validate.ts:3"}, "properties": {"repobilityId": "d20a80a32310384c", "scanner": "scanner-primary", "fingerprint": "ab3eb92e20a91e5f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-aee4c4e72fa6e4da", "level": "none", "message": {"text": "Commented-code block (6 lines) in packages/ai/src/generation/reading.ts:10"}, "properties": {"repobilityId": "20024abbe942b343", "scanner": "scanner-primary", "fingerprint": "aee4c4e72fa6e4da", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-9df9300789c12c35", "level": "none", "message": {"text": "Commented-code block (12 lines) in packages/ai/src/generation/listening-validate.ts:8"}, "properties": {"repobilityId": "12ccc5c93c8ef865", "scanner": "scanner-primary", "fingerprint": "9df9300789c12c35", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d6ab8402e8e4d789", "level": "none", "message": {"text": "Commented-code block (12 lines) in packages/ai/src/generation/listening-persist.ts:7"}, "properties": {"repobilityId": "ad429d7bb3d8ae69", "scanner": "scanner-primary", "fingerprint": "d6ab8402e8e4d789", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-74eb5cbde141b7c2", "level": "none", "message": {"text": "Commented-code block (6 lines) in packages/ai/src/generation/speaking.ts:11"}, "properties": {"repobilityId": "46c1515759aafcb7", "scanner": "scanner-primary", "fingerprint": "74eb5cbde141b7c2", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7198ab52ee698a6d", "level": "none", "message": {"text": "Commented-code block (6 lines) in packages/ai/src/generation/listening.ts:11"}, "properties": {"repobilityId": "777965983725935c", "scanner": "scanner-primary", "fingerprint": "7198ab52ee698a6d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-01bbbb3e17d0134d", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/ai/src/generation/speaking-persist.ts:7"}, "properties": {"repobilityId": "dce454e544fd1dfe", "scanner": "scanner-primary", "fingerprint": "01bbbb3e17d0134d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f363efd5852c31fc", "level": "none", "message": {"text": "Commented-code block (6 lines) in packages/ai/src/generation/listening-schema.ts:80"}, "properties": {"repobilityId": "160d2fa20657698a", "scanner": "scanner-primary", "fingerprint": "f363efd5852c31fc", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f5355adc6818d3b1", "level": "none", "message": {"text": "Commented-code block (6 lines) in packages/ai/src/generation/writing.ts:12"}, "properties": {"repobilityId": "b5262e8a7cde7caf", "scanner": "scanner-primary", "fingerprint": "f5355adc6818d3b1", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6d5e02928882628a", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/ai/src/generation/persist.ts:3"}, "properties": {"repobilityId": "08af1f8744df720f", "scanner": "scanner-primary", "fingerprint": "6d5e02928882628a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f3f6a447f3dc6af2", "level": "none", "message": {"text": "Commented-code block (6 lines) in packages/ai/src/generation/validate.ts:193"}, "properties": {"repobilityId": "acaeccab364eadea", "scanner": "scanner-primary", "fingerprint": "f3f6a447f3dc6af2", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-68397718c28b45e0", "level": "none", "message": {"text": "Commented-code block (6 lines) in packages/ai/src/generation/writing-persist.ts:3"}, "properties": {"repobilityId": "df6bbd4c79a3b7cf", "scanner": "scanner-primary", "fingerprint": "68397718c28b45e0", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-bf2819c2e5bc32e6", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/db/prisma/seed.ts:33"}, "properties": {"repobilityId": "f8efda9122fa479d", "scanner": "scanner-primary", "fingerprint": "bf2819c2e5bc32e6", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-9d94ee0e3d4a6f44", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/db/prisma/promote-super.ts:22"}, "properties": {"repobilityId": "55f655d4a10f1c33", "scanner": "scanner-primary", "fingerprint": "9d94ee0e3d4a6f44", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1b2faa05d3d7a402", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/db/src/tenancy.ts:94"}, "properties": {"repobilityId": "2a8b1aa1f6a81b73", "scanner": "scanner-primary", "fingerprint": "1b2faa05d3d7a402", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-446c0525bc9a2459", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/db/src/super-metrics.ts:3"}, "properties": {"repobilityId": "c65f54ceaeb27191", "scanner": "scanner-primary", "fingerprint": "446c0525bc9a2459", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d73af8e7ee9536e6", "level": "none", "message": {"text": "Commented-code block (6 lines) in packages/db/src/branding.ts:3"}, "properties": {"repobilityId": "5fe3dd497c327dbd", "scanner": "scanner-primary", "fingerprint": "d73af8e7ee9536e6", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-69793003335108c2", "level": "none", "message": {"text": "Commented-code block (8 lines) in packages/db/src/clerk-seed.ts:5"}, "properties": {"repobilityId": "2b6bc11e5a76a319", "scanner": "scanner-primary", "fingerprint": "69793003335108c2", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-60a53075469fbdbc", "level": "none", "message": {"text": "Commented-code block (7 lines) in packages/db/src/retention.ts:3"}, "properties": {"repobilityId": "bee0fd4b3eab8ec0", "scanner": "scanner-primary", "fingerprint": "60a53075469fbdbc", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-16e5f8dcb6c054e3", "level": "none", "message": {"text": "Commented-code block (10 lines) in packages/db/src/self-serve.ts:3"}, "properties": {"repobilityId": "c12a8e7a5a625a70", "scanner": "scanner-primary", "fingerprint": "16e5f8dcb6c054e3", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7b9259024b09dd0b", "level": "none", "message": {"text": "Commented-code block (6 lines) in packages/db/src/test-global-setup.ts:12"}, "properties": {"repobilityId": "fbc85d64a2eb539e", "scanner": "scanner-primary", "fingerprint": "7b9259024b09dd0b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-932f439109e39547", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/db/src/reading-persist.test.ts:3"}, "properties": {"repobilityId": "64c217b5539e2c6a", "scanner": "scanner-primary", "fingerprint": "932f439109e39547", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4091d6da672c4b77", "level": "none", "message": {"text": "Commented-code block (7 lines) in packages/db/src/system-org.ts:4"}, "properties": {"repobilityId": "f79b9987b6ff86f7", "scanner": "scanner-primary", "fingerprint": "4091d6da672c4b77", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e557487e08daf34c", "level": "none", "message": {"text": "Commented-code block (8 lines) in packages/db/src/onboarding.ts:3"}, "properties": {"repobilityId": "29c3c47f4917f33a", "scanner": "scanner-primary", "fingerprint": "e557487e08daf34c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d18e176565a8f8a3", "level": "none", "message": {"text": "Commented-code block (6 lines) in packages/db/src/billing.ts:3"}, "properties": {"repobilityId": "bd2acfc7ef77a47c", "scanner": "scanner-primary", "fingerprint": "d18e176565a8f8a3", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a13bced94b243b65", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/db/src/stripe-events.ts:18"}, "properties": {"repobilityId": "b18142f577ea3146", "scanner": "scanner-primary", "fingerprint": "a13bced94b243b65", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f64dbb37523e8374", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/db/src/org-learner-admin.ts:7"}, "properties": {"repobilityId": "0c6d32eed5ff7cce", "scanner": "scanner-primary", "fingerprint": "f64dbb37523e8374", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-61f95075cfd971c8", "level": "none", "message": {"text": "Commented-code block (6 lines) in packages/db/src/content-lifecycle.test.ts:3"}, "properties": {"repobilityId": "66ec6c8499180528", "scanner": "scanner-primary", "fingerprint": "61f95075cfd971c8", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-38d43b066b411d17", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/db/src/admin-invite.ts:1"}, "properties": {"repobilityId": "e30c998ff99148d1", "scanner": "scanner-primary", "fingerprint": "38d43b066b411d17", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4065d126aff50195", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/db/src/data-rights.ts:3"}, "properties": {"repobilityId": "36253c30f5480e74", "scanner": "scanner-primary", "fingerprint": "4065d126aff50195", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ae3ec6b7f03e7f6b", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/db/src/plans.ts:3"}, "properties": {"repobilityId": "82f954f4855a90ad", "scanner": "scanner-primary", "fingerprint": "ae3ec6b7f03e7f6b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ace9430fc9e322b1", "level": "none", "message": {"text": "Commented-code block (6 lines) in packages/db/src/plan-sync.ts:179"}, "properties": {"repobilityId": "26503a86ed9a6c81", "scanner": "scanner-primary", "fingerprint": "ace9430fc9e322b1", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-88bb647646840a48", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/db/src/onboarding.test.ts:243"}, "properties": {"repobilityId": "d12fddec9cd13dd8", "scanner": "scanner-primary", "fingerprint": "88bb647646840a48", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-400293ba17dd2146", "level": "none", "message": {"text": "Commented-code block (6 lines) in packages/db/src/automation-schedule.ts:3"}, "properties": {"repobilityId": "fe6b4a6efcb9d10f", "scanner": "scanner-primary", "fingerprint": "400293ba17dd2146", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-3dca69c1b2be3a35", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/db/src/content-lifecycle.ts:1"}, "properties": {"repobilityId": "22262385ca4d4d99", "scanner": "scanner-primary", "fingerprint": "3dca69c1b2be3a35", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7b1beb54ff521a85", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/db/src/super-user-admin.ts:3"}, "properties": {"repobilityId": "cd2541aa946e6138", "scanner": "scanner-primary", "fingerprint": "7b1beb54ff521a85", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5c237f078b657aa6", "level": "none", "message": {"text": "Commented-code block (6 lines) in packages/db/src/clerk-seed.test.ts:469"}, "properties": {"repobilityId": "5d05462631cc558b", "scanner": "scanner-primary", "fingerprint": "5c237f078b657aa6", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5be0764808c56474", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/storage/src/image-sniff.ts:3"}, "properties": {"repobilityId": "d6d9c93f99a3bac0", "scanner": "scanner-primary", "fingerprint": "5be0764808c56474", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d9c25ab07c9d58d8", "level": "none", "message": {"text": "Commented-code block (6 lines) in packages/storage/src/r2.ts:40"}, "properties": {"repobilityId": "460fb0c09df356d7", "scanner": "scanner-primary", "fingerprint": "d9c25ab07c9d58d8", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d520696aaa7c6d5b", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/storage/src/keys.ts:25"}, "properties": {"repobilityId": "0beabb9f2b56663b", "scanner": "scanner-primary", "fingerprint": "d520696aaa7c6d5b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5fa5af25316da646", "level": "note", "message": {"text": "16 env vars used in code but missing from .env.example"}, "properties": {"repobilityId": "e0919a3f6a45e8c2", "scanner": "scanner-primary", "fingerprint": "5fa5af25316da646", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "config-drift"]}}]}]}