{"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-ca7c9d958461175f", "name": "Stray `console.log` in TS/JS \u2014 scripts/backfillClassification.ts:11", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/backfillClassification.ts:11"}, "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-21a8cccd1fdafd0e", "name": "Stray `console.log` in TS/JS \u2014 scripts/seedCatalog.ts:225", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/seedCatalog.ts:225"}, "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-d63e73cc159ea61e", "name": "Stray `console.log` in TS/JS \u2014 scripts/createAdmin.ts:41", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/createAdmin.ts:41"}, "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-2990c367b3f8cfe9", "name": "Stray `console.log` in TS/JS \u2014 scripts/seedCopyRules.ts:25", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/seedCopyRules.ts:25"}, "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-dcbd245a245259de", "name": "Stray `console.log` in TS/JS \u2014 scripts/backfillBuygoodsSessions.ts:21", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/backfillBuygoodsSessions.ts:21"}, "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-696a76875f1a8972", "name": "Stray `console.log` in TS/JS \u2014 scripts/seedAdmin.ts:24", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/seedAdmin.ts:24"}, "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-6de6a4c20ef04763", "name": "Stray `console.log` in TS/JS \u2014 scripts/parityCheck.ts:134", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/parityCheck.ts:134"}, "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-6ade1a119f33c403", "name": "`truncate` class without `title=` for hover reveal \u2014 components/chat/KnowledgeSheet.tsx:268", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 components/chat/KnowledgeSheet.tsx:268"}, "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-783da2a2e553a65e", "name": "`truncate` class without `title=` for hover reveal \u2014 components/chat/TopBar.tsx:111", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 components/chat/TopBar.tsx:111"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-014b5d02fb7e85dd", "name": "`truncate` class without `title=` for hover reveal \u2014 components/chat/ChatInput.tsx:208", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 components/chat/ChatInput.tsx:208"}, "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-f551fe1879be00d3", "name": "`truncate` class without `title=` for hover reveal \u2014 components/chat/Sidebar.tsx:126", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 components/chat/Sidebar.tsx:126"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-148586251a59d8d5", "name": "`truncate` class without `title=` for hover reveal \u2014 components/chat/blocks/InsightsBlock.tsx:55", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 components/chat/blocks/InsightsBlock.tsx:55"}, "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-5a3824bf2f3dba63", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 app/layout.tsx:27", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 app/layout.tsx:27"}, "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-3b092cf10a1b9b19", "name": "TODO/FIXME marker in shipping code \u2014 lib/shared/datetime.ts:5", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 lib/shared/datetime.ts:5"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-5e94918c840a1cfe", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 public/src/pages/all-pages.jsx:6538", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 public/src/pages/all-pages.jsx:6538"}, "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-89b92e078be1e218", "name": "TODO/FIXME marker in shipping code \u2014 public/src/pages/overview.jsx:7", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 public/src/pages/overview.jsx:7"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-b79999d204244a8b", "name": "Privileged port 59 in use", "shortDescription": {"text": "Privileged port 59 in use"}, "fullDescription": {"text": "Port 59 is privileged (<1024). Make sure the service runs with the right caps or front it with a non-privileged port via a load balancer."}, "properties": {"scanner": "scanner-primary", "layer": "network", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-8987d6d1c30c7202", "name": "Docker base image is tag-pinned but not digest-pinned: node:20-alpine", "shortDescription": {"text": "Docker base image is tag-pinned but not digest-pinned: node:20-alpine"}, "fullDescription": {"text": "Container tags can be retagged upstream. Pin production base images to a reviewed digest (`image@sha256:...`) when reproducibility and supply-chain integrity matter."}, "properties": {"scanner": "scanner-primary", "layer": "hardware", "severity": "low", "confidence": 1.0}}, {"id": "scanner-aa5acaa49eb8315b", "name": "Containers defined but no K8s/orchestration manifest found", "shortDescription": {"text": "Containers defined but no K8s/orchestration manifest found"}, "fullDescription": {"text": "Repo has Dockerfiles/compose but no Kubernetes/Nomad manifests. If the target deployment is K8s, the manifests may live in a separate ops repo."}, "properties": {"scanner": "scanner-primary", "layer": "hardware", "severity": "low", "confidence": 1.0}}, {"id": "scanner-6d5d5d10172c3a47", "name": "Insecure pattern 'dangerous_innerhtml' in app/layout.tsx:27", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in app/layout.tsx:27"}, "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-cf6976484ab0d34c", "name": "Possible secret in .claude/settings.json", "shortDescription": {"text": "Possible secret in .claude/settings.json"}, "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-7a12708eb46c3f43", "name": "Insecure pattern 'dangerous_innerhtml' in public/src/pages/all-pages.jsx:6538", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in public/src/pages/all-pages.jsx:6538"}, "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-438f089f4de9c292", "name": "Insecure pattern 'local_storage_auth_token' in public/src/pages/all-pages.jsx:3402", "shortDescription": {"text": "Insecure pattern 'local_storage_auth_token' in public/src/pages/all-pages.jsx:3402"}, "fullDescription": {"text": "Found a known-risky pattern (local_storage_auth_token). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-6372cebde0220094", "name": "No auth library detected", "shortDescription": {"text": "No auth library detected"}, "fullDescription": {"text": "The scanner did not find any standard auth library (JWT, OAuth, NextAuth, Auth0, etc.). The repo has auth/admin/session surface indicators, so auth may live in custom code, in a separate service, or be missing."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-28c4a04bd807da0c", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "appleboy/ssh-action@v1.2.0 can move without a code change in this repo. Pin third-party actions to a reviewed 40-character commit SHA."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-4e1b226104297e47", "name": "Very large file: lib/services/insights.ts (1719 lines)", "shortDescription": {"text": "Very large file: lib/services/insights.ts (1719 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-d85673bb750ddc9b", "name": "Very large file: lib/services/metrics.ts (4249 lines)", "shortDescription": {"text": "Very large file: lib/services/metrics.ts (4249 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-8599f742ab20da3c", "name": "Very large file: public/src/pages/all-pages.jsx (7373 lines)", "shortDescription": {"text": "Very large file: public/src/pages/all-pages.jsx (7373 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-6893a6c8b0861585", "name": "Very low test-to-source ratio", "shortDescription": {"text": "Very low test-to-source ratio"}, "fullDescription": {"text": "16 test file(s) for 195 source file(s) (ratio 0.08). 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 27 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 39 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-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. 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-0cde99073cd3086f", "name": "Commented-code block (7 lines) in middleware.ts:8", "shortDescription": {"text": "Commented-code block (7 lines) in middleware.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-a78cd925d5ab2ad9", "name": "Commented-code block (7 lines) in scripts/backfillBuygoodsSessions.ts:1", "shortDescription": {"text": "Commented-code block (7 lines) in scripts/backfillBuygoodsSessions.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-bdb985a558b0125e", "name": "Commented-code block (7 lines) in scripts/seedAdmin.ts:4", "shortDescription": {"text": "Commented-code block (7 lines) in scripts/seedAdmin.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-d1ca402f2b2108ba", "name": "Commented-code block (5 lines) in scripts/build-spa.mjs:3", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/build-spa.mjs: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-c16eed9d12114a9f", "name": "Legacy-named symbol `getAffiliatesLegacy` in scripts/parityCheck.ts:13", "shortDescription": {"text": "Legacy-named symbol `getAffiliatesLegacy` in scripts/parityCheck.ts:13"}, "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-3e20aa78ded398a4", "name": "Commented-code block (5 lines) in app/api/auth/signin/route.ts:1", "shortDescription": {"text": "Commented-code block (5 lines) in app/api/auth/signin/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-18ec08105d5cf98f", "name": "Commented-code block (5 lines) in app/api/ingest/buygoods/route.ts:3", "shortDescription": {"text": "Commented-code block (5 lines) in app/api/ingest/buygoods/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-c060948c1dc5db8d", "name": "Commented-code block (10 lines) in app/api/chat/route.ts:4", "shortDescription": {"text": "Commented-code block (10 lines) in app/api/chat/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-f1231aff2bf2b768", "name": "Commented-code block (5 lines) in app/api/chat/conversations/[id]/route.ts:62", "shortDescription": {"text": "Commented-code block (5 lines) in app/api/chat/conversations/[id]/route.ts:62"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-8f50d1846fd63db7", "name": "Commented-code block (5 lines) in app/api/admin/users/[id]/reset-password/route.ts:1", "shortDescription": {"text": "Commented-code block (5 lines) in app/api/admin/users/[id]/reset-password/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-7cbdbddebd7a144c", "name": "Commented-code block (6 lines) in app/api/admin/fix-neuromind-collision/route.ts:8", "shortDescription": {"text": "Commented-code block (6 lines) in app/api/admin/fix-neuromind-collision/route.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-4fb7ce6f03593505", "name": "Commented-code block (5 lines) in app/api/admin/product-suppliers/route.ts:3", "shortDescription": {"text": "Commented-code block (5 lines) in app/api/admin/product-suppliers/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-abb14a5d530bfe16", "name": "Commented-code block (5 lines) in app/api/admin/backfill-cogs/route.ts:9", "shortDescription": {"text": "Commented-code block (5 lines) in app/api/admin/backfill-cogs/route.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-c96c5ceb10c9054d", "name": "Commented-code block (5 lines) in app/api/admin/networks/available-affiliates/route.ts:1", "shortDescription": {"text": "Commented-code block (5 lines) in app/api/admin/networks/available-affiliates/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-7aed174347e6e4ae", "name": "Commented-code block (6 lines) in app/api/admin/networks/[id]/route.ts:1", "shortDescription": {"text": "Commented-code block (6 lines) in app/api/admin/networks/[id]/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-228a33226255e8fe", "name": "Commented-code block (6 lines) in app/api/admin/networks/[id]/payouts/route.ts:1", "shortDescription": {"text": "Commented-code block (6 lines) in app/api/admin/networks/[id]/payouts/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-41b4985d5a12003b", "name": "Commented-code block (6 lines) in app/api/admin/networks/[id]/affiliates/route.ts:8", "shortDescription": {"text": "Commented-code block (6 lines) in app/api/admin/networks/[id]/affiliates/route.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-f0a87c45728d3b93", "name": "Commented-code block (5 lines) in app/api/metrics/costs/route.ts:5", "shortDescription": {"text": "Commented-code block (5 lines) in app/api/metrics/costs/route.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-da1905451ab7f337", "name": "Commented-code block (5 lines) in app/api/metrics/copy-funnel/route.ts:1", "shortDescription": {"text": "Commented-code block (5 lines) in app/api/metrics/copy-funnel/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-b652d80cd8836b7f", "name": "Commented-code block (6 lines) in app/chat/layout.tsx:3", "shortDescription": {"text": "Commented-code block (6 lines) in app/chat/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-ae5e24fa87a60fef", "name": "Commented-code block (5 lines) in lib/auth/session.ts:1", "shortDescription": {"text": "Commented-code block (5 lines) in lib/auth/session.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-78e4120dd345bc47", "name": "Commented-code block (5 lines) in lib/copy-optimizer/autotune.ts:1", "shortDescription": {"text": "Commented-code block (5 lines) in lib/copy-optimizer/autotune.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-16172a341edd1ca9", "name": "Commented-code block (5 lines) in lib/copy-optimizer/autotuneRunner.ts:1", "shortDescription": {"text": "Commented-code block (5 lines) in lib/copy-optimizer/autotuneRunner.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-eb4bc1e3ec8262cc", "name": "Commented-code block (7 lines) in lib/copy-optimizer/bucket.test.ts:5", "shortDescription": {"text": "Commented-code block (7 lines) in lib/copy-optimizer/bucket.test.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-8ffaf2db2d3014b0", "name": "Commented-code block (5 lines) in lib/connectors/cartpanda/ingest.ts:3", "shortDescription": {"text": "Commented-code block (5 lines) in lib/connectors/cartpanda/ingest.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-43051f98d2e7af45", "name": "Commented-code block (6 lines) in lib/connectors/cartpanda/types.ts:3", "shortDescription": {"text": "Commented-code block (6 lines) in lib/connectors/cartpanda/types.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-a61b7a894514802c", "name": "Commented-code block (5 lines) in lib/connectors/digistore24/ingest.ts:18", "shortDescription": {"text": "Commented-code block (5 lines) in lib/connectors/digistore24/ingest.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-76e8db131c741a45", "name": "Commented-code block (9 lines) in lib/connectors/buygoods/ingest.ts:3", "shortDescription": {"text": "Commented-code block (9 lines) in lib/connectors/buygoods/ingest.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-7e78af6b18727bbf", "name": "Commented-code block (5 lines) in lib/shared/datetime.ts:3", "shortDescription": {"text": "Commented-code block (5 lines) in lib/shared/datetime.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-0a7135ccfaef3587", "name": "`fetch()` without try/.catch or AbortSignal \u2014 lib/chat/client.ts:7", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 lib/chat/client.ts:7"}, "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-15bee334da0f46ae", "name": "Commented-code block (5 lines) in lib/services/email.ts:4", "shortDescription": {"text": "Commented-code block (5 lines) in lib/services/email.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-fd6aa0c19793fb34", "name": "Commented-code block (5 lines) in lib/services/classifyExistingProducts.ts:1", "shortDescription": {"text": "Commented-code block (5 lines) in lib/services/classifyExistingProducts.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-1f045fd6d9f4e23a", "name": "Commented-code block (5 lines) in lib/services/upsertOrder.ts:35", "shortDescription": {"text": "Commented-code block (5 lines) in lib/services/upsertOrder.ts:35"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-ec8337bfa0957084", "name": "Commented-code block (6 lines) in lib/services/insights.ts:136", "shortDescription": {"text": "Commented-code block (6 lines) in lib/services/insights.ts:136"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-1b79a406d1d5e2fc", "name": "Commented-code block (5 lines) in lib/services/aiClassify.ts:1", "shortDescription": {"text": "Commented-code block (5 lines) in lib/services/aiClassify.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-a9aa8c97ea956a97", "name": "Commented-code block (6 lines) in lib/services/networkAccrual.ts:1", "shortDescription": {"text": "Commented-code block (6 lines) in lib/services/networkAccrual.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-f6930efd19982491", "name": "Commented-code block (5 lines) in lib/services/dailyMetrics.ts:3", "shortDescription": {"text": "Commented-code block (5 lines) in lib/services/dailyMetrics.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-a1b83dfd67b98e3e", "name": "Commented-code block (9 lines) in lib/services/filterOptions.ts:105", "shortDescription": {"text": "Commented-code block (9 lines) in lib/services/filterOptions.ts:105"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-bad13d1cc2fd6145", "name": "Commented-code block (10 lines) in lib/services/productClassification.ts:45", "shortDescription": {"text": "Commented-code block (10 lines) in lib/services/productClassification.ts:45"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-cd0af973c2b3fe5c", "name": "Commented-code block (5 lines) in lib/services/sessionFulfillment.ts:3", "shortDescription": {"text": "Commented-code block (5 lines) in lib/services/sessionFulfillment.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-c01eeede962e7352", "name": "Legacy-named symbol `getOverviewLegacy` in lib/services/metrics.ts:589", "shortDescription": {"text": "Legacy-named symbol `getOverviewLegacy` in lib/services/metrics.ts:589"}, "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-0196d206cd45af47", "name": "Commented-code block (5 lines) in lib/services/metrics.ts:43", "shortDescription": {"text": "Commented-code block (5 lines) in lib/services/metrics.ts:43"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-6b4712324b3bc2cf", "name": "Commented-code block (5 lines) in lib/services/productClassification.test.ts:440", "shortDescription": {"text": "Commented-code block (5 lines) in lib/services/productClassification.test.ts:440"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-ed62a9c4143b937a", "name": "Commented-code block (5 lines) in lib/services/recovery.ts:5", "shortDescription": {"text": "Commented-code block (5 lines) in lib/services/recovery.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-2fb7842deb0327cb", "name": "Commented-code block (6 lines) in lib/services/aiTools.ts:242", "shortDescription": {"text": "Commented-code block (6 lines) in lib/services/aiTools.ts:242"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-8c40abe223598ac1", "name": "Commented-code block (5 lines) in lib/services/emails/payoutPaid.ts:1", "shortDescription": {"text": "Commented-code block (5 lines) in lib/services/emails/payoutPaid.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-8b7983bc19e93420", "name": "Commented-code block (6 lines) in lib/services/emails/partnerWelcome.ts:1", "shortDescription": {"text": "Commented-code block (6 lines) in lib/services/emails/partnerWelcome.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-9a4679c8d85c5234", "name": "Commented-code block (6 lines) in public/src/charts.jsx:84", "shortDescription": {"text": "Commented-code block (6 lines) in public/src/charts.jsx:84"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-c6640e7721f70ac8", "name": "Commented-code block (5 lines) in public/src/utils.jsx:38", "shortDescription": {"text": "Commented-code block (5 lines) in public/src/utils.jsx:38"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-9812f1c37d62ec4b", "name": "Commented-code block (9 lines) in public/src/ns-charts.jsx:59", "shortDescription": {"text": "Commented-code block (9 lines) in public/src/ns-charts.jsx:59"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-57eb73744b0a719c", "name": "Commented-code block (5 lines) in public/src/shell.jsx:227", "shortDescription": {"text": "Commented-code block (5 lines) in public/src/shell.jsx:227"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-94dfbaa63b21952e", "name": "Commented-code block (6 lines) in public/src/api.js:16", "shortDescription": {"text": "Commented-code block (6 lines) in public/src/api.js: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-5075cc30234dc9ce", "name": "`fetch()` without try/.catch or AbortSignal \u2014 public/src/api.js:352", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 public/src/api.js:352"}, "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-0b80e326d52cf6d7", "name": "Commented-code block (5 lines) in public/src/app.jsx:23", "shortDescription": {"text": "Commented-code block (5 lines) in public/src/app.jsx:23"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-1601bd93af9dd8ca", "name": "Commented-code block (5 lines) in public/src/pages/all-pages.jsx:792", "shortDescription": {"text": "Commented-code block (5 lines) in public/src/pages/all-pages.jsx:792"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-e1a732eef1997158", "name": "Commented-code block (6 lines) in public/src/pages/overview.jsx:129", "shortDescription": {"text": "Commented-code block (6 lines) in public/src/pages/overview.jsx:129"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-b334d875f2339fa1", "name": "5 env vars used in code but missing from .env.example", "shortDescription": {"text": "5 env vars used in code but missing from .env.example"}, "fullDescription": {"text": "Drift between code and config docs. The first few: `ADMIN_SEED_EMAIL`, `ADMIN_SEED_PASSWORD`, `LOG_LEVEL`, `METRICS_SQL_ATTRIBUTION`, `NODE_ENV`. 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/23263"}, "properties": {"repository": "yMikez/NorthDashboard", "repoUrl": "https://github.com/yMikez/NorthDashboard", "branch": "main"}, "results": [{"ruleId": "scanner-ca7c9d958461175f", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/backfillClassification.ts:11"}, "properties": {"repobilityId": "96150e06d5b2a741", "scanner": "scanner-primary", "fingerprint": "ca7c9d958461175f", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-21a8cccd1fdafd0e", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/seedCatalog.ts:225"}, "properties": {"repobilityId": "9d92a7ca44670b8f", "scanner": "scanner-primary", "fingerprint": "21a8cccd1fdafd0e", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-d63e73cc159ea61e", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/createAdmin.ts:41"}, "properties": {"repobilityId": "66a1b7e8b6cd1878", "scanner": "scanner-primary", "fingerprint": "d63e73cc159ea61e", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-2990c367b3f8cfe9", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/seedCopyRules.ts:25"}, "properties": {"repobilityId": "f2be0512bebdd12f", "scanner": "scanner-primary", "fingerprint": "2990c367b3f8cfe9", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-dcbd245a245259de", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/backfillBuygoodsSessions.ts:21"}, "properties": {"repobilityId": "0f13f4f0b8bf6909", "scanner": "scanner-primary", "fingerprint": "dcbd245a245259de", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-696a76875f1a8972", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/seedAdmin.ts:24"}, "properties": {"repobilityId": "df599534556a84cc", "scanner": "scanner-primary", "fingerprint": "696a76875f1a8972", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-6de6a4c20ef04763", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/parityCheck.ts:134"}, "properties": {"repobilityId": "f8910231f6d8108e", "scanner": "scanner-primary", "fingerprint": "6de6a4c20ef04763", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-6ade1a119f33c403", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 components/chat/KnowledgeSheet.tsx:268"}, "properties": {"repobilityId": "7b6175629559091e", "scanner": "scanner-primary", "fingerprint": "6ade1a119f33c403", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-783da2a2e553a65e", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 components/chat/TopBar.tsx:111"}, "properties": {"repobilityId": "eff1aa518bd22c87", "scanner": "scanner-primary", "fingerprint": "783da2a2e553a65e", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-014b5d02fb7e85dd", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 components/chat/ChatInput.tsx:208"}, "properties": {"repobilityId": "5e0c35876d303bfe", "scanner": "scanner-primary", "fingerprint": "014b5d02fb7e85dd", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-f551fe1879be00d3", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 components/chat/Sidebar.tsx:126"}, "properties": {"repobilityId": "5fdaabd8ad5bd832", "scanner": "scanner-primary", "fingerprint": "f551fe1879be00d3", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-148586251a59d8d5", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 components/chat/blocks/InsightsBlock.tsx:55"}, "properties": {"repobilityId": "7780e7a7289cced6", "scanner": "scanner-primary", "fingerprint": "148586251a59d8d5", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-5a3824bf2f3dba63", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 app/layout.tsx:27"}, "properties": {"repobilityId": "6f16eb9b82a2dcd6", "scanner": "scanner-primary", "fingerprint": "5a3824bf2f3dba63", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-3b092cf10a1b9b19", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 lib/shared/datetime.ts:5"}, "properties": {"repobilityId": "973ca74fd6222a51", "scanner": "scanner-primary", "fingerprint": "3b092cf10a1b9b19", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-5e94918c840a1cfe", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 public/src/pages/all-pages.jsx:6538"}, "properties": {"repobilityId": "98201d5c41d17768", "scanner": "scanner-primary", "fingerprint": "5e94918c840a1cfe", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-89b92e078be1e218", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 public/src/pages/overview.jsx:7"}, "properties": {"repobilityId": "bc0ca55c57ff9652", "scanner": "scanner-primary", "fingerprint": "89b92e078be1e218", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-b79999d204244a8b", "level": "warning", "message": {"text": "Privileged port 59 in use"}, "properties": {"repobilityId": "6c14a9dab4958e92", "scanner": "scanner-primary", "fingerprint": "b79999d204244a8b", "layer": "network", "severity": "medium", "confidence": 1.0, "tags": ["security", "ports"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/perf-baseline.sh"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-8987d6d1c30c7202", "level": "note", "message": {"text": "Docker base image is tag-pinned but not digest-pinned: node:20-alpine"}, "properties": {"repobilityId": "068fbf45727eac17", "scanner": "scanner-primary", "fingerprint": "8987d6d1c30c7202", "layer": "hardware", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "docker", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "Dockerfile"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-8987d6d1c30c7202", "level": "note", "message": {"text": "Docker base image is tag-pinned but not digest-pinned: node:20-alpine"}, "properties": {"repobilityId": "13dc7f414d4b6603", "scanner": "scanner-primary", "fingerprint": "8987d6d1c30c7202", "layer": "hardware", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "docker", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "Dockerfile"}, "region": {"startLine": 7}}}]}, {"ruleId": "scanner-8987d6d1c30c7202", "level": "note", "message": {"text": "Docker base image is tag-pinned but not digest-pinned: node:20-alpine"}, "properties": {"repobilityId": "de0996acffe1ba77", "scanner": "scanner-primary", "fingerprint": "8987d6d1c30c7202", "layer": "hardware", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "docker", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "Dockerfile"}, "region": {"startLine": 15}}}]}, {"ruleId": "scanner-aa5acaa49eb8315b", "level": "note", "message": {"text": "Containers defined but no K8s/orchestration manifest found"}, "properties": {"repobilityId": "b230ea9b68736081", "scanner": "scanner-primary", "fingerprint": "aa5acaa49eb8315b", "layer": "hardware", "severity": "low", "confidence": 1.0, "tags": ["coverage", "deployment"]}}, {"ruleId": "scanner-6d5d5d10172c3a47", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in app/layout.tsx:27"}, "properties": {"repobilityId": "69d4743587f721a0", "scanner": "scanner-primary", "fingerprint": "6d5d5d10172c3a47", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "app/layout.tsx"}, "region": {"startLine": 27}}}]}, {"ruleId": "scanner-cf6976484ab0d34c", "level": "error", "message": {"text": "Possible secret in .claude/settings.json"}, "properties": {"repobilityId": "a905c0b4be02ea8b", "scanner": "scanner-primary", "fingerprint": "cf6976484ab0d34c", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/settings.json"}, "region": {"startLine": 162}}}]}, {"ruleId": "scanner-7a12708eb46c3f43", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in public/src/pages/all-pages.jsx:6538"}, "properties": {"repobilityId": "06ccf11bb7c7a5bd", "scanner": "scanner-primary", "fingerprint": "7a12708eb46c3f43", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "public/src/pages/all-pages.jsx"}, "region": {"startLine": 6538}}}]}, {"ruleId": "scanner-438f089f4de9c292", "level": "warning", "message": {"text": "Insecure pattern 'local_storage_auth_token' in public/src/pages/all-pages.jsx:3402"}, "properties": {"repobilityId": "6be7ac002b227cfe", "scanner": "scanner-primary", "fingerprint": "438f089f4de9c292", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "local_storage_auth_token"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "public/src/pages/all-pages.jsx"}, "region": {"startLine": 3402}}}]}, {"ruleId": "scanner-6372cebde0220094", "level": "warning", "message": {"text": "No auth library detected"}, "properties": {"repobilityId": "a5b6035a5bbf8054", "scanner": "scanner-primary", "fingerprint": "6372cebde0220094", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["coverage", "auth"]}}, {"ruleId": "scanner-28c4a04bd807da0c", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "30dc547e5dfa0d7e", "scanner": "scanner-primary", "fingerprint": "28c4a04bd807da0c", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/deploy.yml"}, "region": {"startLine": 36}}}]}, {"ruleId": "scanner-4e1b226104297e47", "level": "note", "message": {"text": "Very large file: lib/services/insights.ts (1719 lines)"}, "properties": {"repobilityId": "6d393225f011970b", "scanner": "scanner-primary", "fingerprint": "4e1b226104297e47", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-d85673bb750ddc9b", "level": "note", "message": {"text": "Very large file: lib/services/metrics.ts (4249 lines)"}, "properties": {"repobilityId": "58250fcc69f13b57", "scanner": "scanner-primary", "fingerprint": "d85673bb750ddc9b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-8599f742ab20da3c", "level": "note", "message": {"text": "Very large file: public/src/pages/all-pages.jsx (7373 lines)"}, "properties": {"repobilityId": "0408926c86998a09", "scanner": "scanner-primary", "fingerprint": "8599f742ab20da3c", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-6893a6c8b0861585", "level": "warning", "message": {"text": "Very low test-to-source ratio"}, "properties": {"repobilityId": "54a7de3f06314bf0", "scanner": "scanner-primary", "fingerprint": "6893a6c8b0861585", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["tests", "coverage"]}}, {"ruleId": "scanner-141b30a41e03817b", "level": "note", "message": {"text": "No license file detected"}, "properties": {"repobilityId": "2b1248b6993d534a", "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": "1f417475d14ccd84", "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": "6ebfadbfbb12ba62", "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": "4d5769df99dbb22a", "scanner": "scanner-primary", "fingerprint": "2d0c7b7ab8f8aacf", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["placeholder", "mock-data", "critical-flow", "generated-repo-pattern"]}}, {"ruleId": "scanner-749d4bc1bd66df5f", "level": "warning", "message": {"text": "Agent instructions exist but release-hardening basics are missing"}, "properties": {"repobilityId": "717db5b47a53caaf", "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": "00543556daed37ad", "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": "95a42d16a8814018", "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-0cde99073cd3086f", "level": "none", "message": {"text": "Commented-code block (7 lines) in middleware.ts:8"}, "properties": {"repobilityId": "6a8a0c7210287b07", "scanner": "scanner-primary", "fingerprint": "0cde99073cd3086f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a78cd925d5ab2ad9", "level": "none", "message": {"text": "Commented-code block (7 lines) in scripts/backfillBuygoodsSessions.ts:1"}, "properties": {"repobilityId": "a5b9e38a683be84a", "scanner": "scanner-primary", "fingerprint": "a78cd925d5ab2ad9", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-bdb985a558b0125e", "level": "none", "message": {"text": "Commented-code block (7 lines) in scripts/seedAdmin.ts:4"}, "properties": {"repobilityId": "680872665e2d455e", "scanner": "scanner-primary", "fingerprint": "bdb985a558b0125e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d1ca402f2b2108ba", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/build-spa.mjs:3"}, "properties": {"repobilityId": "3c0288e7bfdaa52d", "scanner": "scanner-primary", "fingerprint": "d1ca402f2b2108ba", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c16eed9d12114a9f", "level": "note", "message": {"text": "Legacy-named symbol `getAffiliatesLegacy` in scripts/parityCheck.ts:13"}, "properties": {"repobilityId": "53180c2fd4021127", "scanner": "scanner-primary", "fingerprint": "c16eed9d12114a9f", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-3e20aa78ded398a4", "level": "none", "message": {"text": "Commented-code block (5 lines) in app/api/auth/signin/route.ts:1"}, "properties": {"repobilityId": "02e893a553712c5b", "scanner": "scanner-primary", "fingerprint": "3e20aa78ded398a4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-18ec08105d5cf98f", "level": "none", "message": {"text": "Commented-code block (5 lines) in app/api/ingest/buygoods/route.ts:3"}, "properties": {"repobilityId": "f19a0312e071a1d5", "scanner": "scanner-primary", "fingerprint": "18ec08105d5cf98f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c060948c1dc5db8d", "level": "none", "message": {"text": "Commented-code block (10 lines) in app/api/chat/route.ts:4"}, "properties": {"repobilityId": "8838163f4da5da04", "scanner": "scanner-primary", "fingerprint": "c060948c1dc5db8d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f1231aff2bf2b768", "level": "none", "message": {"text": "Commented-code block (5 lines) in app/api/chat/conversations/[id]/route.ts:62"}, "properties": {"repobilityId": "07984762b8411e84", "scanner": "scanner-primary", "fingerprint": "f1231aff2bf2b768", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8f50d1846fd63db7", "level": "none", "message": {"text": "Commented-code block (5 lines) in app/api/admin/users/[id]/reset-password/route.ts:1"}, "properties": {"repobilityId": "faaa5f2dfd08f1e8", "scanner": "scanner-primary", "fingerprint": "8f50d1846fd63db7", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7cbdbddebd7a144c", "level": "none", "message": {"text": "Commented-code block (6 lines) in app/api/admin/fix-neuromind-collision/route.ts:8"}, "properties": {"repobilityId": "2fe8840321b3732d", "scanner": "scanner-primary", "fingerprint": "7cbdbddebd7a144c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4fb7ce6f03593505", "level": "none", "message": {"text": "Commented-code block (5 lines) in app/api/admin/product-suppliers/route.ts:3"}, "properties": {"repobilityId": "379ec4646d689e5a", "scanner": "scanner-primary", "fingerprint": "4fb7ce6f03593505", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-abb14a5d530bfe16", "level": "none", "message": {"text": "Commented-code block (5 lines) in app/api/admin/backfill-cogs/route.ts:9"}, "properties": {"repobilityId": "f0414f86034424c0", "scanner": "scanner-primary", "fingerprint": "abb14a5d530bfe16", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c96c5ceb10c9054d", "level": "none", "message": {"text": "Commented-code block (5 lines) in app/api/admin/networks/available-affiliates/route.ts:1"}, "properties": {"repobilityId": "bd15e3a9ec318fd3", "scanner": "scanner-primary", "fingerprint": "c96c5ceb10c9054d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7aed174347e6e4ae", "level": "none", "message": {"text": "Commented-code block (6 lines) in app/api/admin/networks/[id]/route.ts:1"}, "properties": {"repobilityId": "0442f5fd13ff14ce", "scanner": "scanner-primary", "fingerprint": "7aed174347e6e4ae", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-228a33226255e8fe", "level": "none", "message": {"text": "Commented-code block (6 lines) in app/api/admin/networks/[id]/payouts/route.ts:1"}, "properties": {"repobilityId": "7e9fbbb31c669b06", "scanner": "scanner-primary", "fingerprint": "228a33226255e8fe", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-41b4985d5a12003b", "level": "none", "message": {"text": "Commented-code block (6 lines) in app/api/admin/networks/[id]/affiliates/route.ts:8"}, "properties": {"repobilityId": "61bacbfcc14d2d1b", "scanner": "scanner-primary", "fingerprint": "41b4985d5a12003b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f0a87c45728d3b93", "level": "none", "message": {"text": "Commented-code block (5 lines) in app/api/metrics/costs/route.ts:5"}, "properties": {"repobilityId": "423880a6effa9179", "scanner": "scanner-primary", "fingerprint": "f0a87c45728d3b93", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-da1905451ab7f337", "level": "none", "message": {"text": "Commented-code block (5 lines) in app/api/metrics/copy-funnel/route.ts:1"}, "properties": {"repobilityId": "81c8b294724b7ab4", "scanner": "scanner-primary", "fingerprint": "da1905451ab7f337", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b652d80cd8836b7f", "level": "none", "message": {"text": "Commented-code block (6 lines) in app/chat/layout.tsx:3"}, "properties": {"repobilityId": "51ce14e3769dd8eb", "scanner": "scanner-primary", "fingerprint": "b652d80cd8836b7f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ae5e24fa87a60fef", "level": "none", "message": {"text": "Commented-code block (5 lines) in lib/auth/session.ts:1"}, "properties": {"repobilityId": "844fcba743fe07e7", "scanner": "scanner-primary", "fingerprint": "ae5e24fa87a60fef", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-78e4120dd345bc47", "level": "none", "message": {"text": "Commented-code block (5 lines) in lib/copy-optimizer/autotune.ts:1"}, "properties": {"repobilityId": "b5db772fa93f7fcc", "scanner": "scanner-primary", "fingerprint": "78e4120dd345bc47", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-16172a341edd1ca9", "level": "none", "message": {"text": "Commented-code block (5 lines) in lib/copy-optimizer/autotuneRunner.ts:1"}, "properties": {"repobilityId": "841bcc045e8cf8ae", "scanner": "scanner-primary", "fingerprint": "16172a341edd1ca9", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-eb4bc1e3ec8262cc", "level": "none", "message": {"text": "Commented-code block (7 lines) in lib/copy-optimizer/bucket.test.ts:5"}, "properties": {"repobilityId": "782d24785e63f70c", "scanner": "scanner-primary", "fingerprint": "eb4bc1e3ec8262cc", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8ffaf2db2d3014b0", "level": "none", "message": {"text": "Commented-code block (5 lines) in lib/connectors/cartpanda/ingest.ts:3"}, "properties": {"repobilityId": "f9e9aeaa1b8e1561", "scanner": "scanner-primary", "fingerprint": "8ffaf2db2d3014b0", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-43051f98d2e7af45", "level": "none", "message": {"text": "Commented-code block (6 lines) in lib/connectors/cartpanda/types.ts:3"}, "properties": {"repobilityId": "78190dfb997b5c25", "scanner": "scanner-primary", "fingerprint": "43051f98d2e7af45", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a61b7a894514802c", "level": "none", "message": {"text": "Commented-code block (5 lines) in lib/connectors/digistore24/ingest.ts:18"}, "properties": {"repobilityId": "b1b403634a3fafc2", "scanner": "scanner-primary", "fingerprint": "a61b7a894514802c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-76e8db131c741a45", "level": "none", "message": {"text": "Commented-code block (9 lines) in lib/connectors/buygoods/ingest.ts:3"}, "properties": {"repobilityId": "8725e9e25e6017e2", "scanner": "scanner-primary", "fingerprint": "76e8db131c741a45", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7e78af6b18727bbf", "level": "none", "message": {"text": "Commented-code block (5 lines) in lib/shared/datetime.ts:3"}, "properties": {"repobilityId": "190b39c2ae195fe1", "scanner": "scanner-primary", "fingerprint": "7e78af6b18727bbf", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0a7135ccfaef3587", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 lib/chat/client.ts:7"}, "properties": {"repobilityId": "823f2b5fab490738", "scanner": "scanner-primary", "fingerprint": "0a7135ccfaef3587", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-15bee334da0f46ae", "level": "none", "message": {"text": "Commented-code block (5 lines) in lib/services/email.ts:4"}, "properties": {"repobilityId": "e904e2aa4492d2d4", "scanner": "scanner-primary", "fingerprint": "15bee334da0f46ae", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-fd6aa0c19793fb34", "level": "none", "message": {"text": "Commented-code block (5 lines) in lib/services/classifyExistingProducts.ts:1"}, "properties": {"repobilityId": "8e474a339607eb68", "scanner": "scanner-primary", "fingerprint": "fd6aa0c19793fb34", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1f045fd6d9f4e23a", "level": "none", "message": {"text": "Commented-code block (5 lines) in lib/services/upsertOrder.ts:35"}, "properties": {"repobilityId": "3da6fcbea5398496", "scanner": "scanner-primary", "fingerprint": "1f045fd6d9f4e23a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ec8337bfa0957084", "level": "none", "message": {"text": "Commented-code block (6 lines) in lib/services/insights.ts:136"}, "properties": {"repobilityId": "5918c743aa277b0d", "scanner": "scanner-primary", "fingerprint": "ec8337bfa0957084", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1b79a406d1d5e2fc", "level": "none", "message": {"text": "Commented-code block (5 lines) in lib/services/aiClassify.ts:1"}, "properties": {"repobilityId": "c390816903050223", "scanner": "scanner-primary", "fingerprint": "1b79a406d1d5e2fc", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a9aa8c97ea956a97", "level": "none", "message": {"text": "Commented-code block (6 lines) in lib/services/networkAccrual.ts:1"}, "properties": {"repobilityId": "9fa03dacf23afbf2", "scanner": "scanner-primary", "fingerprint": "a9aa8c97ea956a97", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f6930efd19982491", "level": "none", "message": {"text": "Commented-code block (5 lines) in lib/services/dailyMetrics.ts:3"}, "properties": {"repobilityId": "4134d32b14e08c96", "scanner": "scanner-primary", "fingerprint": "f6930efd19982491", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a1b83dfd67b98e3e", "level": "none", "message": {"text": "Commented-code block (9 lines) in lib/services/filterOptions.ts:105"}, "properties": {"repobilityId": "c8200c616d5beab6", "scanner": "scanner-primary", "fingerprint": "a1b83dfd67b98e3e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-bad13d1cc2fd6145", "level": "none", "message": {"text": "Commented-code block (10 lines) in lib/services/productClassification.ts:45"}, "properties": {"repobilityId": "3d34e91b499724eb", "scanner": "scanner-primary", "fingerprint": "bad13d1cc2fd6145", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-cd0af973c2b3fe5c", "level": "none", "message": {"text": "Commented-code block (5 lines) in lib/services/sessionFulfillment.ts:3"}, "properties": {"repobilityId": "52817d8f93ee732f", "scanner": "scanner-primary", "fingerprint": "cd0af973c2b3fe5c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c01eeede962e7352", "level": "note", "message": {"text": "Legacy-named symbol `getOverviewLegacy` in lib/services/metrics.ts:589"}, "properties": {"repobilityId": "d2b071fe3f5d62b0", "scanner": "scanner-primary", "fingerprint": "c01eeede962e7352", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-0196d206cd45af47", "level": "none", "message": {"text": "Commented-code block (5 lines) in lib/services/metrics.ts:43"}, "properties": {"repobilityId": "519d848afb17b07a", "scanner": "scanner-primary", "fingerprint": "0196d206cd45af47", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6b4712324b3bc2cf", "level": "none", "message": {"text": "Commented-code block (5 lines) in lib/services/productClassification.test.ts:440"}, "properties": {"repobilityId": "5a728f5ec3950842", "scanner": "scanner-primary", "fingerprint": "6b4712324b3bc2cf", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ed62a9c4143b937a", "level": "none", "message": {"text": "Commented-code block (5 lines) in lib/services/recovery.ts:5"}, "properties": {"repobilityId": "d8045040872f80a2", "scanner": "scanner-primary", "fingerprint": "ed62a9c4143b937a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2fb7842deb0327cb", "level": "none", "message": {"text": "Commented-code block (6 lines) in lib/services/aiTools.ts:242"}, "properties": {"repobilityId": "727fac4699b4004e", "scanner": "scanner-primary", "fingerprint": "2fb7842deb0327cb", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8c40abe223598ac1", "level": "none", "message": {"text": "Commented-code block (5 lines) in lib/services/emails/payoutPaid.ts:1"}, "properties": {"repobilityId": "845e61893d3aedf1", "scanner": "scanner-primary", "fingerprint": "8c40abe223598ac1", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8b7983bc19e93420", "level": "none", "message": {"text": "Commented-code block (6 lines) in lib/services/emails/partnerWelcome.ts:1"}, "properties": {"repobilityId": "88a6893e11d11730", "scanner": "scanner-primary", "fingerprint": "8b7983bc19e93420", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-9a4679c8d85c5234", "level": "none", "message": {"text": "Commented-code block (6 lines) in public/src/charts.jsx:84"}, "properties": {"repobilityId": "e3aa5773c6a70c9e", "scanner": "scanner-primary", "fingerprint": "9a4679c8d85c5234", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c6640e7721f70ac8", "level": "none", "message": {"text": "Commented-code block (5 lines) in public/src/utils.jsx:38"}, "properties": {"repobilityId": "ae054f1b40b672e3", "scanner": "scanner-primary", "fingerprint": "c6640e7721f70ac8", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-9812f1c37d62ec4b", "level": "none", "message": {"text": "Commented-code block (9 lines) in public/src/ns-charts.jsx:59"}, "properties": {"repobilityId": "f5b197e043b2256c", "scanner": "scanner-primary", "fingerprint": "9812f1c37d62ec4b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-57eb73744b0a719c", "level": "none", "message": {"text": "Commented-code block (5 lines) in public/src/shell.jsx:227"}, "properties": {"repobilityId": "61ad3aea418622e1", "scanner": "scanner-primary", "fingerprint": "57eb73744b0a719c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-94dfbaa63b21952e", "level": "none", "message": {"text": "Commented-code block (6 lines) in public/src/api.js:16"}, "properties": {"repobilityId": "b2c41c43b4e02f20", "scanner": "scanner-primary", "fingerprint": "94dfbaa63b21952e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5075cc30234dc9ce", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 public/src/api.js:352"}, "properties": {"repobilityId": "f9b22eb9918d29f0", "scanner": "scanner-primary", "fingerprint": "5075cc30234dc9ce", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-0b80e326d52cf6d7", "level": "none", "message": {"text": "Commented-code block (5 lines) in public/src/app.jsx:23"}, "properties": {"repobilityId": "5e079a4afd6e2956", "scanner": "scanner-primary", "fingerprint": "0b80e326d52cf6d7", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1601bd93af9dd8ca", "level": "none", "message": {"text": "Commented-code block (5 lines) in public/src/pages/all-pages.jsx:792"}, "properties": {"repobilityId": "3c4eadb4275626aa", "scanner": "scanner-primary", "fingerprint": "1601bd93af9dd8ca", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e1a732eef1997158", "level": "none", "message": {"text": "Commented-code block (6 lines) in public/src/pages/overview.jsx:129"}, "properties": {"repobilityId": "029121f10d821864", "scanner": "scanner-primary", "fingerprint": "e1a732eef1997158", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b334d875f2339fa1", "level": "note", "message": {"text": "5 env vars used in code but missing from .env.example"}, "properties": {"repobilityId": "faa38682016f5d53", "scanner": "scanner-primary", "fingerprint": "b334d875f2339fa1", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "config-drift"]}}]}]}