{"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-8a0a43160a276e0f", "name": "Stray `console.log` in TS/JS \u2014 server.js:41", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server.js: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-e514aa06b4682087", "name": "Stray `console.log` in TS/JS \u2014 scripts/diag-dates.js:15", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/diag-dates.js:15"}, "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-ffbcc60a0cd57c8f", "name": "Stray `console.log` in TS/JS \u2014 scripts/export-smoke.js:146", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/export-smoke.js:146"}, "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-668cac1f90e8edeb", "name": "Stray `console.log` in TS/JS \u2014 scripts/dev-mock.js:71", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/dev-mock.js:71"}, "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-515789d6da416380", "name": "Stray `console.log` in TS/JS \u2014 src/db/migrate.js:122", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 src/db/migrate.js:122"}, "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-b86bf25c27a9e38b", "name": "Stray `console.log` in TS/JS \u2014 public/js/main.js:86", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 public/js/main.js:86"}, "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-3c76d02a4a5279a3", "name": "Icon-only button without accessible name \u2014 public/js/admin/admin-app.js:705", "shortDescription": {"text": "Icon-only button without accessible name \u2014 public/js/admin/admin-app.js:705"}, "fullDescription": {"text": "A `<button>` whose only child is a single glyph or symbol needs `title=` or `aria-label=` so screen readers (and tooltips on hover) work.\n\nWhy: P3 in CHECKLIST.md \u2014 icon-only buttons skipped a title.\nRule id: fq.button.no-label"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-c151fa7239ab12a9", "name": "Insecure pattern 'direct_innerhtml_assignment' in public/js/sidebar.js:198", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in public/js/sidebar.js:198"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-275f27c063cd778b", "name": "Insecure pattern 'direct_innerhtml_assignment' in public/js/transliterate.js:10", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in public/js/transliterate.js:10"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-3177d1a4c91dc9b6", "name": "Insecure pattern 'direct_innerhtml_assignment' in public/js/minimap.js:46", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in public/js/minimap.js:46"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-93415c6fd1669e5a", "name": "Insecure pattern 'direct_innerhtml_assignment' in public/js/history.js:100", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in public/js/history.js:100"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-e6874df175199006", "name": "Insecure pattern 'direct_innerhtml_assignment' in public/js/main.js:118", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in public/js/main.js:118"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-6dbebd7ae1e3fe27", "name": "Insecure pattern 'direct_innerhtml_assignment' in public/js/admin/admin-app.js:145", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in public/js/admin/admin-app.js:145"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-ea3b5e389d8c9c0f", "name": "Low test-to-source ratio", "shortDescription": {"text": "Low test-to-source ratio"}, "fullDescription": {"text": "9 tests / 40 src (ratio 0.23)."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-141b30a41e03817b", "name": "No license file detected", "shortDescription": {"text": "No license file detected"}, "fullDescription": {"text": "No LICENSE/COPYING/NOTICE file was found. Generated repositories often omit licensing, which blocks reuse and automated intake."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-3ab5d313dda8e5f9", "name": "Debug logging residue appears in source files", "shortDescription": {"text": "Debug logging residue appears in source files"}, "fullDescription": {"text": "Found 19 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 15 placeholder/mock markers across 5 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. Opus verification showed these co-occurring gaps are a better readiness signal than reading each flag in isolation."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-624a6ab2322db8f6", "name": "Commented-code block (5 lines) in tests/helpers/db-mock.js:3", "shortDescription": {"text": "Commented-code block (5 lines) in tests/helpers/db-mock.js: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-9d976f0d77d0f862", "name": "Commented-code block (5 lines) in scripts/export-smoke.js:1", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/export-smoke.js: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-b245e5d567e9d6c4", "name": "Commented-code block (9 lines) in src/serializers/person.js:1", "shortDescription": {"text": "Commented-code block (9 lines) in src/serializers/person.js: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-57d4de49835a33b2", "name": "Commented-code block (6 lines) in src/db/migrate.js:81", "shortDescription": {"text": "Commented-code block (6 lines) in src/db/migrate.js: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-370e4a996512fc85", "name": "Commented-code block (5 lines) in src/routes/lineage.js:7", "shortDescription": {"text": "Commented-code block (5 lines) in src/routes/lineage.js:7"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-57f657eb7595cfcf", "name": "Commented-code block (5 lines) in src/routes/persons.js:43", "shortDescription": {"text": "Commented-code block (5 lines) in src/routes/persons.js: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-1c0acf393ca095fa", "name": "Commented-code block (5 lines) in src/routes/changes.js:98", "shortDescription": {"text": "Commented-code block (5 lines) in src/routes/changes.js:98"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-0fbc20bb322c5298", "name": "Commented-code block (8 lines) in public/js/sidebar.js:56", "shortDescription": {"text": "Commented-code block (8 lines) in public/js/sidebar.js: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-80bc47279815632b", "name": "Commented-code block (5 lines) in public/js/overlay.js:1", "shortDescription": {"text": "Commented-code block (5 lines) in public/js/overlay.js: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-5e6de25eadd3350f", "name": "Commented-code block (5 lines) in public/js/mutate.js:5", "shortDescription": {"text": "Commented-code block (5 lines) in public/js/mutate.js: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-1031637b5ea63bb8", "name": "Commented-code block (5 lines) in public/js/tree-layout.js:83", "shortDescription": {"text": "Commented-code block (5 lines) in public/js/tree-layout.js:83"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-48f1b31305372e49", "name": "Commented-code block (5 lines) in public/js/history.js:1", "shortDescription": {"text": "Commented-code block (5 lines) in public/js/history.js: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-c558c8a6ec3ef815", "name": "Commented-code block (5 lines) in public/js/admin/admin-app.js:1", "shortDescription": {"text": "Commented-code block (5 lines) in public/js/admin/admin-app.js: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-2eafc3188c36bb02", "name": "3 env vars used in code but missing from .env.example", "shortDescription": {"text": "3 env vars used in code but missing from .env.example"}, "fullDescription": {"text": "Drift between code and config docs. The first few: `BASE_URL`, `NODE_ENV`, `USE_MOCK_DB`. Add them (with a placeholder/comment) to .env.example so onboarding doesn't break."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}]}}, "automationDetails": {"id": "repobility/23834"}, "properties": {"repository": "aakarshsingh/katari-vanshavali", "repoUrl": "https://github.com/aakarshsingh/katari-vanshavali", "branch": "main"}, "results": [{"ruleId": "scanner-8a0a43160a276e0f", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server.js:41"}, "properties": {"repobilityId": "a9deebb5fdc93edc", "scanner": "scanner-primary", "fingerprint": "8a0a43160a276e0f", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-e514aa06b4682087", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/diag-dates.js:15"}, "properties": {"repobilityId": "25cae64769f1be58", "scanner": "scanner-primary", "fingerprint": "e514aa06b4682087", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-ffbcc60a0cd57c8f", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/export-smoke.js:146"}, "properties": {"repobilityId": "e1364ddb9d912f9b", "scanner": "scanner-primary", "fingerprint": "ffbcc60a0cd57c8f", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-668cac1f90e8edeb", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/dev-mock.js:71"}, "properties": {"repobilityId": "b192a8f60ffbd2c9", "scanner": "scanner-primary", "fingerprint": "668cac1f90e8edeb", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-515789d6da416380", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 src/db/migrate.js:122"}, "properties": {"repobilityId": "b28605b8642e4d70", "scanner": "scanner-primary", "fingerprint": "515789d6da416380", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b86bf25c27a9e38b", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 public/js/main.js:86"}, "properties": {"repobilityId": "35ddd5b4049a7c84", "scanner": "scanner-primary", "fingerprint": "b86bf25c27a9e38b", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-3c76d02a4a5279a3", "level": "note", "message": {"text": "Icon-only button without accessible name \u2014 public/js/admin/admin-app.js:705"}, "properties": {"repobilityId": "334803cb5cf66daf", "scanner": "scanner-primary", "fingerprint": "3c76d02a4a5279a3", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.button.no-label"]}}, {"ruleId": "scanner-c151fa7239ab12a9", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in public/js/sidebar.js:198"}, "properties": {"repobilityId": "360cc395a9e199c5", "scanner": "scanner-primary", "fingerprint": "c151fa7239ab12a9", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "public/js/sidebar.js"}, "region": {"startLine": 198}}}]}, {"ruleId": "scanner-275f27c063cd778b", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in public/js/transliterate.js:10"}, "properties": {"repobilityId": "6adca8397362653a", "scanner": "scanner-primary", "fingerprint": "275f27c063cd778b", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "public/js/transliterate.js"}, "region": {"startLine": 10}}}]}, {"ruleId": "scanner-3177d1a4c91dc9b6", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in public/js/minimap.js:46"}, "properties": {"repobilityId": "f137b58ba140ef7f", "scanner": "scanner-primary", "fingerprint": "3177d1a4c91dc9b6", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "public/js/minimap.js"}, "region": {"startLine": 46}}}]}, {"ruleId": "scanner-93415c6fd1669e5a", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in public/js/history.js:100"}, "properties": {"repobilityId": "f4228303b6124604", "scanner": "scanner-primary", "fingerprint": "93415c6fd1669e5a", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "public/js/history.js"}, "region": {"startLine": 100}}}]}, {"ruleId": "scanner-e6874df175199006", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in public/js/main.js:118"}, "properties": {"repobilityId": "0bb963d1b38efafd", "scanner": "scanner-primary", "fingerprint": "e6874df175199006", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "public/js/main.js"}, "region": {"startLine": 118}}}]}, {"ruleId": "scanner-6dbebd7ae1e3fe27", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in public/js/admin/admin-app.js:145"}, "properties": {"repobilityId": "293f0d774eeaee64", "scanner": "scanner-primary", "fingerprint": "6dbebd7ae1e3fe27", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "public/js/admin/admin-app.js"}, "region": {"startLine": 145}}}]}, {"ruleId": "scanner-ea3b5e389d8c9c0f", "level": "note", "message": {"text": "Low test-to-source ratio"}, "properties": {"repobilityId": "ef7b2552cc00a375", "scanner": "scanner-primary", "fingerprint": "ea3b5e389d8c9c0f", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["tests"]}}, {"ruleId": "scanner-141b30a41e03817b", "level": "note", "message": {"text": "No license file detected"}, "properties": {"repobilityId": "7eea06726724566d", "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": "18d4ee3ac683f63e", "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": "577c5b3e56be0fce", "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": "3b71e01682f27a22", "scanner": "scanner-primary", "fingerprint": "2d0c7b7ab8f8aacf", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["placeholder", "mock-data", "critical-flow", "generated-repo-pattern"]}}, {"ruleId": "scanner-b9088664ace7f748", "level": "note", "message": {"text": "Composite production-readiness gap"}, "properties": {"repobilityId": "907282de91c5fc3d", "scanner": "scanner-primary", "fingerprint": "b9088664ace7f748", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["production-readiness", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-624a6ab2322db8f6", "level": "none", "message": {"text": "Commented-code block (5 lines) in tests/helpers/db-mock.js:3"}, "properties": {"repobilityId": "f30f323c9c09766e", "scanner": "scanner-primary", "fingerprint": "624a6ab2322db8f6", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-9d976f0d77d0f862", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/export-smoke.js:1"}, "properties": {"repobilityId": "5bf5275cda18663a", "scanner": "scanner-primary", "fingerprint": "9d976f0d77d0f862", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b245e5d567e9d6c4", "level": "none", "message": {"text": "Commented-code block (9 lines) in src/serializers/person.js:1"}, "properties": {"repobilityId": "9f9bee0688046d39", "scanner": "scanner-primary", "fingerprint": "b245e5d567e9d6c4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-57d4de49835a33b2", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/db/migrate.js:81"}, "properties": {"repobilityId": "705826764ef7ca43", "scanner": "scanner-primary", "fingerprint": "57d4de49835a33b2", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-370e4a996512fc85", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/routes/lineage.js:7"}, "properties": {"repobilityId": "1dcbaa1c74d4c02a", "scanner": "scanner-primary", "fingerprint": "370e4a996512fc85", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-57f657eb7595cfcf", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/routes/persons.js:43"}, "properties": {"repobilityId": "664ea1f9b265e25d", "scanner": "scanner-primary", "fingerprint": "57f657eb7595cfcf", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1c0acf393ca095fa", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/routes/changes.js:98"}, "properties": {"repobilityId": "8830db81029287aa", "scanner": "scanner-primary", "fingerprint": "1c0acf393ca095fa", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0fbc20bb322c5298", "level": "none", "message": {"text": "Commented-code block (8 lines) in public/js/sidebar.js:56"}, "properties": {"repobilityId": "d16cd73684227355", "scanner": "scanner-primary", "fingerprint": "0fbc20bb322c5298", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-80bc47279815632b", "level": "none", "message": {"text": "Commented-code block (5 lines) in public/js/overlay.js:1"}, "properties": {"repobilityId": "afe304a054858ddc", "scanner": "scanner-primary", "fingerprint": "80bc47279815632b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5e6de25eadd3350f", "level": "none", "message": {"text": "Commented-code block (5 lines) in public/js/mutate.js:5"}, "properties": {"repobilityId": "d19061c549be67c3", "scanner": "scanner-primary", "fingerprint": "5e6de25eadd3350f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1031637b5ea63bb8", "level": "none", "message": {"text": "Commented-code block (5 lines) in public/js/tree-layout.js:83"}, "properties": {"repobilityId": "345dba5b4c200196", "scanner": "scanner-primary", "fingerprint": "1031637b5ea63bb8", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-48f1b31305372e49", "level": "none", "message": {"text": "Commented-code block (5 lines) in public/js/history.js:1"}, "properties": {"repobilityId": "7ca0781703492464", "scanner": "scanner-primary", "fingerprint": "48f1b31305372e49", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c558c8a6ec3ef815", "level": "none", "message": {"text": "Commented-code block (5 lines) in public/js/admin/admin-app.js:1"}, "properties": {"repobilityId": "e8c769bd8d213973", "scanner": "scanner-primary", "fingerprint": "c558c8a6ec3ef815", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2eafc3188c36bb02", "level": "none", "message": {"text": "3 env vars used in code but missing from .env.example"}, "properties": {"repobilityId": "bd934ba112b02ffa", "scanner": "scanner-primary", "fingerprint": "2eafc3188c36bb02", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "config-drift"]}}]}]}