{"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-0ac4bd3f7dcb0cfd", "name": "Stray `console.log` in TS/JS \u2014 scripts/import-excel.ts:223", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/import-excel.ts:223"}, "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-6a0067297db14d88", "name": "Stray `console.log` in TS/JS \u2014 scripts/seed-sentences.ts:246", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/seed-sentences.ts:246"}, "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-05f31d3d7a730fa3", "name": "Stray `console.log` in TS/JS \u2014 scripts/generate-sentences.ts:415", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/generate-sentences.ts:415"}, "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-090ef5c3ed0effdb", "name": "Stray `console.log` in TS/JS \u2014 scripts/sync-user-subscriptions.ts:32", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/sync-user-subscriptions.ts:32"}, "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-cb0e7fb2afafb798", "name": "Stray `console.log` in TS/JS \u2014 scripts/seed-packages.ts:304", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/seed-packages.ts:304"}, "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-fd2688618f4eefac", "name": "`truncate` class without `title=` for hover reveal \u2014 components/achievement-toast.tsx:103", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 components/achievement-toast.tsx:103"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-2ea3278a03c1d848", "name": "`truncate` class without `title=` for hover reveal \u2014 components/dashboard/recent-words.tsx:59", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 components/dashboard/recent-words.tsx:59"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-21402c382f22c0c4", "name": "`truncate` class without `title=` for hover reveal \u2014 components/dashboard/add-word-card.tsx:323", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 components/dashboard/add-word-card.tsx:323"}, "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-e218db1afd4df418", "name": "`truncate` class without `title=` for hover reveal \u2014 app/[locale]/review/word-heart-button.tsx:150", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 app/[locale]/review/word-heart-button.tsx:150"}, "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-528e6c11cd05bf21", "name": "`truncate` class without `title=` for hover reveal \u2014 app/[locale]/lists/[id]/page.tsx:116", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 app/[locale]/lists/[id]/page.tsx:116"}, "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-738686f5bf7db187", "name": "`truncate` class without `title=` for hover reveal \u2014 app/[locale]/lists/[id]/word-picker.tsx:127", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 app/[locale]/lists/[id]/word-picker.tsx:127"}, "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-6f8a576162a07096", "name": "`truncate` class without `title=` for hover reveal \u2014 app/[locale]/stats/page.tsx:306", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 app/[locale]/stats/page.tsx:306"}, "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-493297f9f5798f0c", "name": "Possible secret in konzept.html", "shortDescription": {"text": "Possible secret in konzept.html"}, "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-f24b3ad515ec37f2", "name": "Insecure pattern 'node_child_process' in scripts/check-server-actions.mjs:12", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/check-server-actions.mjs:12"}, "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-4601e3ad3bb28677", "name": "No CI/CD pipelines detected", "shortDescription": {"text": "No CI/CD pipelines detected"}, "fullDescription": {"text": "No GitHub Actions, GitLab CI, or CircleCI configs found. Without CI you can't gate deploys on tests/lints."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-6893a6c8b0861585", "name": "Very low test-to-source ratio", "shortDescription": {"text": "Very low test-to-source ratio"}, "fullDescription": {"text": "0 test file(s) for 181 source file(s) (ratio 0.00). Consider adding integration or unit tests for critical paths."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-141b30a41e03817b", "name": "No license file detected", "shortDescription": {"text": "No license file detected"}, "fullDescription": {"text": "No LICENSE/COPYING/NOTICE file was found. Generated repositories often omit licensing, which blocks reuse and automated intake."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-3ab5d313dda8e5f9", "name": "Debug logging residue appears in source files", "shortDescription": {"text": "Debug logging residue appears in source files"}, "fullDescription": {"text": "Found 241 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 24 placeholder/mock markers across 14 source files. This often means the repo looks complete while core flows still use generated scaffolding or fake data."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-2d0c7b7ab8f8aacf", "name": "Critical user flow still appears backed by mock or placeholder data", "shortDescription": {"text": "Critical user flow still appears backed by mock or placeholder data"}, "fullDescription": {"text": "A payment/auth/admin/order/billing-style flow contains mock, fake, TODO, dummy, or placeholder markers in runtime source. In the Fable corpus this is a high-leverage completeness smell: the app can look finished while the money, identity, or tenant flow is still scaffolded."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-b9088664ace7f748", "name": "Composite production-readiness gap", "shortDescription": {"text": "Composite production-readiness gap"}, "fullDescription": {"text": "Multiple low-cost hardening controls are missing together: license, ci, tests. Opus verification showed these co-occurring gaps are a better readiness signal than reading each flag in isolation."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-749d4bc1bd66df5f", "name": "Agent instructions exist but release-hardening basics are missing", "shortDescription": {"text": "Agent instructions exist but release-hardening basics are missing"}, "fullDescription": {"text": "AI-coder instruction files were found, but the repo is missing license, ci, tests. 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-39cb67463a269072", "name": "Commented-code block (6 lines) in proxy.ts:81", "shortDescription": {"text": "Commented-code block (6 lines) in proxy.ts:81"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-d32306a4ce499245", "name": "Commented-code block (9 lines) in seeds/dataset/build-master.mjs:1", "shortDescription": {"text": "Commented-code block (9 lines) in seeds/dataset/build-master.mjs: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-4fec1db7e8927552", "name": "Commented-code block (5 lines) in seeds/dataset/tx-apply-variants.mjs:1", "shortDescription": {"text": "Commented-code block (5 lines) in seeds/dataset/tx-apply-variants.mjs: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-094a0943dc09b32c", "name": "Commented-code block (7 lines) in seeds/dataset/qa-agents-prep.mjs:1", "shortDescription": {"text": "Commented-code block (7 lines) in seeds/dataset/qa-agents-prep.mjs: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-3f6681c04cd416e4", "name": "Commented-code block (5 lines) in seeds/dataset/tx-apply-prep.mjs:1", "shortDescription": {"text": "Commented-code block (5 lines) in seeds/dataset/tx-apply-prep.mjs: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-12d7aa970d59405e", "name": "Commented-code block (5 lines) in seeds/dataset/tx-move-levels.mjs:1", "shortDescription": {"text": "Commented-code block (5 lines) in seeds/dataset/tx-move-levels.mjs: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-c56135a046a1b5de", "name": "Commented-code block (5 lines) in seeds/dataset/tx-apply-stage1.mjs:1", "shortDescription": {"text": "Commented-code block (5 lines) in seeds/dataset/tx-apply-stage1.mjs: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-9b3e17cd74f3340a", "name": "Commented-code block (5 lines) in seeds/dataset/validate.mjs:5", "shortDescription": {"text": "Commented-code block (5 lines) in seeds/dataset/validate.mjs: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-fedab20d2e8aab34", "name": "Commented-code block (6 lines) in scripts/import-excel.ts:255", "shortDescription": {"text": "Commented-code block (6 lines) in scripts/import-excel.ts:255"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-0aaba72a62a3857b", "name": "Commented-code block (6 lines) in scripts/seed-sentences.ts:131", "shortDescription": {"text": "Commented-code block (6 lines) in scripts/seed-sentences.ts:131"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-48219a93c0e73fef", "name": "Commented-code block (7 lines) in scripts/convert-master-to-packages.mjs:8", "shortDescription": {"text": "Commented-code block (7 lines) in scripts/convert-master-to-packages.mjs: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-c2c043bfb65981c2", "name": "Commented-code block (8 lines) in scripts/seed-packages.ts:118", "shortDescription": {"text": "Commented-code block (8 lines) in scripts/seed-packages.ts:118"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-dcb4f2a4f3b992d3", "name": "Commented-code block (5 lines) in components/wordmark.tsx:3", "shortDescription": {"text": "Commented-code block (5 lines) in components/wordmark.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-0c5d4f0793f55bd8", "name": "Commented-code block (7 lines) in components/streak-tiers.ts:1", "shortDescription": {"text": "Commented-code block (7 lines) in components/streak-tiers.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-dab017d30fd87482", "name": "Commented-code block (5 lines) in components/landing/marquee.tsx:72", "shortDescription": {"text": "Commented-code block (5 lines) in components/landing/marquee.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-074c0cb72c6ef747", "name": "Commented-code block (5 lines) in app/api/cron/account-cleanup/route.ts:58", "shortDescription": {"text": "Commented-code block (5 lines) in app/api/cron/account-cleanup/route.ts:58"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-c4164ee601c4bb92", "name": "Legacy-named symbol `password_same_as_old` in app/[locale]/auth/actions.ts:230", "shortDescription": {"text": "Legacy-named symbol `password_same_as_old` in app/[locale]/auth/actions.ts:230"}, "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-79b758c0871cb6fa", "name": "Commented-code block (5 lines) in app/[locale]/review/topic-actions.ts:3", "shortDescription": {"text": "Commented-code block (5 lines) in app/[locale]/review/topic-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-435c754e60fa5022", "name": "Commented-code block (6 lines) in app/[locale]/review/card-payload.ts:1", "shortDescription": {"text": "Commented-code block (6 lines) in app/[locale]/review/card-payload.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-348b96535e3dd81c", "name": "Legacy-named symbol `ptw_review_session_v2` in app/[locale]/review/review-session.tsx:18", "shortDescription": {"text": "Legacy-named symbol `ptw_review_session_v2` in app/[locale]/review/review-session.tsx:18"}, "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-8147a9a892655bf5", "name": "Commented-code block (5 lines) in app/[locale]/review/review-session.tsx:343", "shortDescription": {"text": "Commented-code block (5 lines) in app/[locale]/review/review-session.tsx:343"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-d1779b592326cd92", "name": "Commented-code block (5 lines) in app/[locale]/review/page.tsx:80", "shortDescription": {"text": "Commented-code block (5 lines) in app/[locale]/review/page.tsx: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-3f89bc16170fcfda", "name": "Legacy-named symbol `ptw_review_session_v2` in app/[locale]/review/topic-picker.tsx:43", "shortDescription": {"text": "Legacy-named symbol `ptw_review_session_v2` in app/[locale]/review/topic-picker.tsx:43"}, "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-f32bfa5566dc9bde", "name": "Commented-code block (5 lines) in app/[locale]/review/report-actions.ts:39", "shortDescription": {"text": "Commented-code block (5 lines) in app/[locale]/review/report-actions.ts:39"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-1c4e22eb7042e22b", "name": "Commented-code block (5 lines) in lib/auth/profile.ts:56", "shortDescription": {"text": "Commented-code block (5 lines) in lib/auth/profile.ts:56"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-d7231898a84393a1", "name": "Commented-code block (5 lines) in lib/auth/account.ts:39", "shortDescription": {"text": "Commented-code block (5 lines) in lib/auth/account.ts:39"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-8235073a5b1e3689", "name": "Commented-code block (5 lines) in lib/auth/is-admin.ts:4", "shortDescription": {"text": "Commented-code block (5 lines) in lib/auth/is-admin.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-1dfa7aba17056a08", "name": "Commented-code block (9 lines) in lib/achievements/definitions.ts:536", "shortDescription": {"text": "Commented-code block (9 lines) in lib/achievements/definitions.ts:536"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-70acba1db8fab4ea", "name": "Commented-code block (5 lines) in lib/topics/labels.ts:1", "shortDescription": {"text": "Commented-code block (5 lines) in lib/topics/labels.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-4050d96a4bda6c81", "name": "Commented-code block (5 lines) in lib/srs/queue.ts:82", "shortDescription": {"text": "Commented-code block (5 lines) in lib/srs/queue.ts:82"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-1b5da103a473114a", "name": "Commented-code block (5 lines) in lib/lists/actions.ts:77", "shortDescription": {"text": "Commented-code block (5 lines) in lib/lists/actions.ts:77"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-3c0ffbefb1ccee9e", "name": "Commented-code block (5 lines) in lib/lists/queries.ts:270", "shortDescription": {"text": "Commented-code block (5 lines) in lib/lists/queries.ts:270"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-302294c1bfbc08c8", "name": "Commented-code block (5 lines) in lib/user-words/actions.ts:55", "shortDescription": {"text": "Commented-code block (5 lines) in lib/user-words/actions.ts:55"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-2080013773f7adec", "name": "Commented-code block (5 lines) in lib/supabase/proxy.ts:9", "shortDescription": {"text": "Commented-code block (5 lines) in lib/supabase/proxy.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-cefde821a64586f4", "name": "Commented-code block (5 lines) in lib/db/escape-like.ts:1", "shortDescription": {"text": "Commented-code block (5 lines) in lib/db/escape-like.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-d5417fdad3c7fcf2", "name": "Commented-code block (6 lines) in lib/format/translation.ts:3", "shortDescription": {"text": "Commented-code block (6 lines) in lib/format/translation.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-d0f30b294304e468", "name": "Commented-code block (5 lines) in lib/stats/daily.ts:15", "shortDescription": {"text": "Commented-code block (5 lines) in lib/stats/daily.ts:15"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-db3f5d4d39bdb080", "name": "Commented-code block (5 lines) in lib/stats/dashboard.ts:44", "shortDescription": {"text": "Commented-code block (5 lines) in lib/stats/dashboard.ts:44"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-1842c46d7b23028e", "name": "Commented-code block (6 lines) in lib/stats/overview.ts:1", "shortDescription": {"text": "Commented-code block (6 lines) in lib/stats/overview.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-af0a38cfba7e020a", "name": "Commented-code block (6 lines) in db/schema.ts:3", "shortDescription": {"text": "Commented-code block (6 lines) in db/schema.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}}]}}, "automationDetails": {"id": "repobility/21805"}, "properties": {"repository": "Tynrek/Vokabeltrainer", "repoUrl": "https://github.com/Tynrek/Vokabeltrainer", "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-0ac4bd3f7dcb0cfd", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/import-excel.ts:223"}, "properties": {"repobilityId": "043d59732458ac06", "scanner": "scanner-primary", "fingerprint": "0ac4bd3f7dcb0cfd", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-6a0067297db14d88", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/seed-sentences.ts:246"}, "properties": {"repobilityId": "253939dd436dbc9c", "scanner": "scanner-primary", "fingerprint": "6a0067297db14d88", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-05f31d3d7a730fa3", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/generate-sentences.ts:415"}, "properties": {"repobilityId": "0ab7df078b8a425b", "scanner": "scanner-primary", "fingerprint": "05f31d3d7a730fa3", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-090ef5c3ed0effdb", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/sync-user-subscriptions.ts:32"}, "properties": {"repobilityId": "ea19ec95446b9210", "scanner": "scanner-primary", "fingerprint": "090ef5c3ed0effdb", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-cb0e7fb2afafb798", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/seed-packages.ts:304"}, "properties": {"repobilityId": "8f6fe0ed00c38473", "scanner": "scanner-primary", "fingerprint": "cb0e7fb2afafb798", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-fd2688618f4eefac", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 components/achievement-toast.tsx:103"}, "properties": {"repobilityId": "9352aaf4cf67db29", "scanner": "scanner-primary", "fingerprint": "fd2688618f4eefac", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-2ea3278a03c1d848", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 components/dashboard/recent-words.tsx:59"}, "properties": {"repobilityId": "9405e1b1453acf2b", "scanner": "scanner-primary", "fingerprint": "2ea3278a03c1d848", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-21402c382f22c0c4", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 components/dashboard/add-word-card.tsx:323"}, "properties": {"repobilityId": "3bc328de2050a7a0", "scanner": "scanner-primary", "fingerprint": "21402c382f22c0c4", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-e218db1afd4df418", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 app/[locale]/review/word-heart-button.tsx:150"}, "properties": {"repobilityId": "cea74614e9c10779", "scanner": "scanner-primary", "fingerprint": "e218db1afd4df418", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-528e6c11cd05bf21", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 app/[locale]/lists/[id]/page.tsx:116"}, "properties": {"repobilityId": "da776ff88691e76d", "scanner": "scanner-primary", "fingerprint": "528e6c11cd05bf21", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-738686f5bf7db187", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 app/[locale]/lists/[id]/word-picker.tsx:127"}, "properties": {"repobilityId": "8c7fc1a69c8de6c0", "scanner": "scanner-primary", "fingerprint": "738686f5bf7db187", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-6f8a576162a07096", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 app/[locale]/stats/page.tsx:306"}, "properties": {"repobilityId": "adc60c19a5b26e07", "scanner": "scanner-primary", "fingerprint": "6f8a576162a07096", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-493297f9f5798f0c", "level": "error", "message": {"text": "Possible secret in konzept.html"}, "properties": {"repobilityId": "e5b74953457f7b00", "scanner": "scanner-primary", "fingerprint": "493297f9f5798f0c", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "konzept.html"}, "region": {"startLine": 1377}}}]}, {"ruleId": "scanner-493297f9f5798f0c", "level": "error", "message": {"text": "Possible secret in konzept.html"}, "properties": {"repobilityId": "e5b74953457f7b00", "scanner": "scanner-primary", "fingerprint": "493297f9f5798f0c", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "konzept.html"}, "region": {"startLine": 1379}}}]}, {"ruleId": "scanner-f24b3ad515ec37f2", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/check-server-actions.mjs:12"}, "properties": {"repobilityId": "1f9ff3e5bba3a0ac", "scanner": "scanner-primary", "fingerprint": "f24b3ad515ec37f2", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/check-server-actions.mjs"}, "region": {"startLine": 12}}}]}, {"ruleId": "scanner-4601e3ad3bb28677", "level": "warning", "message": {"text": "No CI/CD pipelines detected"}, "properties": {"repobilityId": "c3ee439bce2bc51e", "scanner": "scanner-primary", "fingerprint": "4601e3ad3bb28677", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["coverage"]}}, {"ruleId": "scanner-6893a6c8b0861585", "level": "warning", "message": {"text": "Very low test-to-source ratio"}, "properties": {"repobilityId": "54a7de3f06314bf0", "scanner": "scanner-primary", "fingerprint": "6893a6c8b0861585", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["tests", "coverage"]}}, {"ruleId": "scanner-141b30a41e03817b", "level": "note", "message": {"text": "No license file detected"}, "properties": {"repobilityId": "c7fff7fd9cf6daf4", "scanner": "scanner-primary", "fingerprint": "141b30a41e03817b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["license", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-3ab5d313dda8e5f9", "level": "note", "message": {"text": "Debug logging residue appears in source files"}, "properties": {"repobilityId": "bc1c80c98b8d3999", "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": "fff8c2f0adcaa1da", "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": "69721ea2841d9a6d", "scanner": "scanner-primary", "fingerprint": "2d0c7b7ab8f8aacf", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["placeholder", "mock-data", "critical-flow", "generated-repo-pattern"]}}, {"ruleId": "scanner-b9088664ace7f748", "level": "warning", "message": {"text": "Composite production-readiness gap"}, "properties": {"repobilityId": "8f5b3b957a083b96", "scanner": "scanner-primary", "fingerprint": "b9088664ace7f748", "layer": "quality", "severity": "medium", "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": "11c3558beca90daf", "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": "bb3d1b51fe22a308", "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": "2c3d57b8eebbabf1", "scanner": "scanner-primary", "fingerprint": "8424db9c75e04ba4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["provenance", "git-history", "generated-repo-pattern"]}}, {"ruleId": "scanner-39cb67463a269072", "level": "none", "message": {"text": "Commented-code block (6 lines) in proxy.ts:81"}, "properties": {"repobilityId": "2fa0d84c0e727934", "scanner": "scanner-primary", "fingerprint": "39cb67463a269072", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d32306a4ce499245", "level": "none", "message": {"text": "Commented-code block (9 lines) in seeds/dataset/build-master.mjs:1"}, "properties": {"repobilityId": "7c424736c8d77196", "scanner": "scanner-primary", "fingerprint": "d32306a4ce499245", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4fec1db7e8927552", "level": "none", "message": {"text": "Commented-code block (5 lines) in seeds/dataset/tx-apply-variants.mjs:1"}, "properties": {"repobilityId": "9969d4183554dcdf", "scanner": "scanner-primary", "fingerprint": "4fec1db7e8927552", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-094a0943dc09b32c", "level": "none", "message": {"text": "Commented-code block (7 lines) in seeds/dataset/qa-agents-prep.mjs:1"}, "properties": {"repobilityId": "391fc650d88368cc", "scanner": "scanner-primary", "fingerprint": "094a0943dc09b32c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-3f6681c04cd416e4", "level": "none", "message": {"text": "Commented-code block (5 lines) in seeds/dataset/tx-apply-prep.mjs:1"}, "properties": {"repobilityId": "38b7c36023718c36", "scanner": "scanner-primary", "fingerprint": "3f6681c04cd416e4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-12d7aa970d59405e", "level": "none", "message": {"text": "Commented-code block (5 lines) in seeds/dataset/tx-move-levels.mjs:1"}, "properties": {"repobilityId": "68fd65743e1b7088", "scanner": "scanner-primary", "fingerprint": "12d7aa970d59405e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c56135a046a1b5de", "level": "none", "message": {"text": "Commented-code block (5 lines) in seeds/dataset/tx-apply-stage1.mjs:1"}, "properties": {"repobilityId": "c5c713ec36065488", "scanner": "scanner-primary", "fingerprint": "c56135a046a1b5de", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-9b3e17cd74f3340a", "level": "none", "message": {"text": "Commented-code block (5 lines) in seeds/dataset/validate.mjs:5"}, "properties": {"repobilityId": "45bcf567ca561e3e", "scanner": "scanner-primary", "fingerprint": "9b3e17cd74f3340a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-fedab20d2e8aab34", "level": "none", "message": {"text": "Commented-code block (6 lines) in scripts/import-excel.ts:255"}, "properties": {"repobilityId": "ff717c234a45caa8", "scanner": "scanner-primary", "fingerprint": "fedab20d2e8aab34", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0aaba72a62a3857b", "level": "none", "message": {"text": "Commented-code block (6 lines) in scripts/seed-sentences.ts:131"}, "properties": {"repobilityId": "ec243663bf3e3bc5", "scanner": "scanner-primary", "fingerprint": "0aaba72a62a3857b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-48219a93c0e73fef", "level": "none", "message": {"text": "Commented-code block (7 lines) in scripts/convert-master-to-packages.mjs:8"}, "properties": {"repobilityId": "bbfdc45717dfc766", "scanner": "scanner-primary", "fingerprint": "48219a93c0e73fef", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c2c043bfb65981c2", "level": "none", "message": {"text": "Commented-code block (8 lines) in scripts/seed-packages.ts:118"}, "properties": {"repobilityId": "996d71d7010de2d6", "scanner": "scanner-primary", "fingerprint": "c2c043bfb65981c2", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-dcb4f2a4f3b992d3", "level": "none", "message": {"text": "Commented-code block (5 lines) in components/wordmark.tsx:3"}, "properties": {"repobilityId": "26695f902da14683", "scanner": "scanner-primary", "fingerprint": "dcb4f2a4f3b992d3", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0c5d4f0793f55bd8", "level": "none", "message": {"text": "Commented-code block (7 lines) in components/streak-tiers.ts:1"}, "properties": {"repobilityId": "4e7bac8f30f67a9c", "scanner": "scanner-primary", "fingerprint": "0c5d4f0793f55bd8", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-dab017d30fd87482", "level": "none", "message": {"text": "Commented-code block (5 lines) in components/landing/marquee.tsx:72"}, "properties": {"repobilityId": "64a6f1f05a0bbd64", "scanner": "scanner-primary", "fingerprint": "dab017d30fd87482", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-074c0cb72c6ef747", "level": "none", "message": {"text": "Commented-code block (5 lines) in app/api/cron/account-cleanup/route.ts:58"}, "properties": {"repobilityId": "a3a398c92ed9fdfe", "scanner": "scanner-primary", "fingerprint": "074c0cb72c6ef747", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c4164ee601c4bb92", "level": "note", "message": {"text": "Legacy-named symbol `password_same_as_old` in app/[locale]/auth/actions.ts:230"}, "properties": {"repobilityId": "13ba5cc687f6a890", "scanner": "scanner-primary", "fingerprint": "c4164ee601c4bb92", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-79b758c0871cb6fa", "level": "none", "message": {"text": "Commented-code block (5 lines) in app/[locale]/review/topic-actions.ts:3"}, "properties": {"repobilityId": "c0fa33fe4af68472", "scanner": "scanner-primary", "fingerprint": "79b758c0871cb6fa", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-435c754e60fa5022", "level": "none", "message": {"text": "Commented-code block (6 lines) in app/[locale]/review/card-payload.ts:1"}, "properties": {"repobilityId": "a399cfa4047fd516", "scanner": "scanner-primary", "fingerprint": "435c754e60fa5022", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-348b96535e3dd81c", "level": "note", "message": {"text": "Legacy-named symbol `ptw_review_session_v2` in app/[locale]/review/review-session.tsx:18"}, "properties": {"repobilityId": "436387a69d53b138", "scanner": "scanner-primary", "fingerprint": "348b96535e3dd81c", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-8147a9a892655bf5", "level": "none", "message": {"text": "Commented-code block (5 lines) in app/[locale]/review/review-session.tsx:343"}, "properties": {"repobilityId": "7a499e439dc0ba9a", "scanner": "scanner-primary", "fingerprint": "8147a9a892655bf5", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d1779b592326cd92", "level": "none", "message": {"text": "Commented-code block (5 lines) in app/[locale]/review/page.tsx:80"}, "properties": {"repobilityId": "ed4f01e954d1539e", "scanner": "scanner-primary", "fingerprint": "d1779b592326cd92", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-3f89bc16170fcfda", "level": "note", "message": {"text": "Legacy-named symbol `ptw_review_session_v2` in app/[locale]/review/topic-picker.tsx:43"}, "properties": {"repobilityId": "2997ee3b58d34a07", "scanner": "scanner-primary", "fingerprint": "3f89bc16170fcfda", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-f32bfa5566dc9bde", "level": "none", "message": {"text": "Commented-code block (5 lines) in app/[locale]/review/report-actions.ts:39"}, "properties": {"repobilityId": "c167d6083f2d0cf4", "scanner": "scanner-primary", "fingerprint": "f32bfa5566dc9bde", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1c4e22eb7042e22b", "level": "none", "message": {"text": "Commented-code block (5 lines) in lib/auth/profile.ts:56"}, "properties": {"repobilityId": "73759ba1d26dcf99", "scanner": "scanner-primary", "fingerprint": "1c4e22eb7042e22b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d7231898a84393a1", "level": "none", "message": {"text": "Commented-code block (5 lines) in lib/auth/account.ts:39"}, "properties": {"repobilityId": "ab193e920ed913e0", "scanner": "scanner-primary", "fingerprint": "d7231898a84393a1", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8235073a5b1e3689", "level": "none", "message": {"text": "Commented-code block (5 lines) in lib/auth/is-admin.ts:4"}, "properties": {"repobilityId": "9496ae45065bdd5a", "scanner": "scanner-primary", "fingerprint": "8235073a5b1e3689", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1dfa7aba17056a08", "level": "none", "message": {"text": "Commented-code block (9 lines) in lib/achievements/definitions.ts:536"}, "properties": {"repobilityId": "51adeb9e87b3289e", "scanner": "scanner-primary", "fingerprint": "1dfa7aba17056a08", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-70acba1db8fab4ea", "level": "none", "message": {"text": "Commented-code block (5 lines) in lib/topics/labels.ts:1"}, "properties": {"repobilityId": "da21ea84af6a88a7", "scanner": "scanner-primary", "fingerprint": "70acba1db8fab4ea", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4050d96a4bda6c81", "level": "none", "message": {"text": "Commented-code block (5 lines) in lib/srs/queue.ts:82"}, "properties": {"repobilityId": "b1bdc6fe12dbe375", "scanner": "scanner-primary", "fingerprint": "4050d96a4bda6c81", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1b5da103a473114a", "level": "none", "message": {"text": "Commented-code block (5 lines) in lib/lists/actions.ts:77"}, "properties": {"repobilityId": "6eb2dd1bf8553793", "scanner": "scanner-primary", "fingerprint": "1b5da103a473114a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-3c0ffbefb1ccee9e", "level": "none", "message": {"text": "Commented-code block (5 lines) in lib/lists/queries.ts:270"}, "properties": {"repobilityId": "4540c160f9d605f0", "scanner": "scanner-primary", "fingerprint": "3c0ffbefb1ccee9e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-302294c1bfbc08c8", "level": "none", "message": {"text": "Commented-code block (5 lines) in lib/user-words/actions.ts:55"}, "properties": {"repobilityId": "3d00886174b85d3c", "scanner": "scanner-primary", "fingerprint": "302294c1bfbc08c8", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2080013773f7adec", "level": "none", "message": {"text": "Commented-code block (5 lines) in lib/supabase/proxy.ts:9"}, "properties": {"repobilityId": "e7ad9f7c7df58269", "scanner": "scanner-primary", "fingerprint": "2080013773f7adec", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-cefde821a64586f4", "level": "none", "message": {"text": "Commented-code block (5 lines) in lib/db/escape-like.ts:1"}, "properties": {"repobilityId": "2cdf9776db83d5f5", "scanner": "scanner-primary", "fingerprint": "cefde821a64586f4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d5417fdad3c7fcf2", "level": "none", "message": {"text": "Commented-code block (6 lines) in lib/format/translation.ts:3"}, "properties": {"repobilityId": "b2fa9056345f5d23", "scanner": "scanner-primary", "fingerprint": "d5417fdad3c7fcf2", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d0f30b294304e468", "level": "none", "message": {"text": "Commented-code block (5 lines) in lib/stats/daily.ts:15"}, "properties": {"repobilityId": "bc073638fc391ca0", "scanner": "scanner-primary", "fingerprint": "d0f30b294304e468", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-db3f5d4d39bdb080", "level": "none", "message": {"text": "Commented-code block (5 lines) in lib/stats/dashboard.ts:44"}, "properties": {"repobilityId": "f683a5b0d0ab4bfd", "scanner": "scanner-primary", "fingerprint": "db3f5d4d39bdb080", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1842c46d7b23028e", "level": "none", "message": {"text": "Commented-code block (6 lines) in lib/stats/overview.ts:1"}, "properties": {"repobilityId": "f93289a14ced24c7", "scanner": "scanner-primary", "fingerprint": "1842c46d7b23028e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-af0a38cfba7e020a", "level": "none", "message": {"text": "Commented-code block (6 lines) in db/schema.ts:3"}, "properties": {"repobilityId": "9a90fa0fd6857287", "scanner": "scanner-primary", "fingerprint": "af0a38cfba7e020a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}]}]}