{"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-11444dee8f85998d", "name": "Stray `console.log` in TS/JS \u2014 connectors/whatsapp.js:70", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 connectors/whatsapp.js:70"}, "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-784df66043770ebb", "name": "Stray `console.log` in TS/JS \u2014 app/server.js:660", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/server.js:660"}, "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-78226ca886ece680", "name": "Stray `console.log` in TS/JS \u2014 spike/chat-compare.js:40", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 spike/chat-compare.js:40"}, "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-6417243544e676cb", "name": "Stray `console.log` in TS/JS \u2014 spike/finetune.js:50", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 spike/finetune.js:50"}, "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-8481c4415283cd29", "name": "Stray `console.log` in TS/JS \u2014 spike/make-bootstrap.js:233", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 spike/make-bootstrap.js:233"}, "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-9710c8d059e53154", "name": "No frontend routes/components detected", "shortDescription": {"text": "No frontend routes/components detected"}, "fullDescription": {"text": "No React/Vue/Next routes were found. This is fine for backend-only repos."}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-2db4ca5b944d684e", "name": "Insecure pattern 'node_child_process' in app/server.js:26", "shortDescription": {"text": "Insecure pattern 'node_child_process' in app/server.js:26"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-43e5f7fe9c4aa5e4", "name": "Insecure pattern 'node_child_process' in app/test-e2e.mjs:9", "shortDescription": {"text": "Insecure pattern 'node_child_process' in app/test-e2e.mjs:9"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-6eadd365098fb324", "name": "Insecure pattern 'node_child_process' in app/lib/train.js:5", "shortDescription": {"text": "Insecure pattern 'node_child_process' in app/lib/train.js:5"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-e8010ba80a7b5210", "name": "Insecure pattern 'eval_used' in app/public/app.js:386", "shortDescription": {"text": "Insecure pattern 'eval_used' in app/public/app.js:386"}, "fullDescription": {"text": "Found a known-risky pattern (eval_used). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-53eeaaa883cec58d", "name": "Insecure pattern 'direct_innerhtml_assignment' in app/public/app.js:23", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in app/public/app.js:23"}, "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-2fdf08c3f2c4711e", "name": "Insecure pattern 'node_child_process' in spike/master-loopback.mjs:5", "shortDescription": {"text": "Insecure pattern 'node_child_process' in spike/master-loopback.mjs:5"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-ea867c073eb4b88c", "name": "Insecure pattern 'node_child_process' in spike/finetune.js:16", "shortDescription": {"text": "Insecure pattern 'node_child_process' in spike/finetune.js:16"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-ebe0542dada86c61", "name": "Insecure pattern 'node_child_process' in spike/concurrency-test.mjs:4", "shortDescription": {"text": "Insecure pattern 'node_child_process' in spike/concurrency-test.mjs:4"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-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-4601e3ad3bb28677", "name": "No CI/CD pipelines detected", "shortDescription": {"text": "No CI/CD pipelines detected"}, "fullDescription": {"text": "No GitHub Actions, GitLab CI, or CircleCI configs found. Without CI you can't gate deploys on tests/lints."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-8a8bc4023891b654", "name": "Very large file: app/public/app.js (1060 lines)", "shortDescription": {"text": "Very large file: app/public/app.js (1060 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-ea3b5e389d8c9c0f", "name": "Low test-to-source ratio", "shortDescription": {"text": "Low test-to-source ratio"}, "fullDescription": {"text": "4 tests / 27 src (ratio 0.15)."}, "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 76 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-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: ci, tests. Opus verification showed these co-occurring gaps are a better readiness signal than reading each flag in isolation."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "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-eff79b36fc3524ee", "name": "Commented-code block (7 lines) in connectors/whatsapp.js:1", "shortDescription": {"text": "Commented-code block (7 lines) in connectors/whatsapp.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-39d446c375ab522e", "name": "Commented-code block (6 lines) in app/server.js:28", "shortDescription": {"text": "Commented-code block (6 lines) in app/server.js:28"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-96a4551db12c6813", "name": "Commented-code block (5 lines) in app/lib/models.js:64", "shortDescription": {"text": "Commented-code block (5 lines) in app/lib/models.js:64"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-09d7c3b16b910999", "name": "Commented-code block (5 lines) in app/lib/os-stores.js:6", "shortDescription": {"text": "Commented-code block (5 lines) in app/lib/os-stores.js:6"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-0cbec0a87cf68c39", "name": "Commented-code block (5 lines) in app/lib/select.js:1", "shortDescription": {"text": "Commented-code block (5 lines) in app/lib/select.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-7b4c0d181a2a08e5", "name": "Commented-code block (5 lines) in app/lib/master-link.js:4", "shortDescription": {"text": "Commented-code block (5 lines) in app/lib/master-link.js: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-4ae9e7251cab011b", "name": "Commented-code block (5 lines) in app/lib/vault.js:1", "shortDescription": {"text": "Commented-code block (5 lines) in app/lib/vault.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-eeb0a1c9b9047dce", "name": "Legacy-named symbol `denseOld` in spike/connectors-test.mjs:121", "shortDescription": {"text": "Legacy-named symbol `denseOld` in spike/connectors-test.mjs:121"}, "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-89ac579b52a8c474", "name": "Commented-code block (5 lines) in spike/connectors-test.mjs:1", "shortDescription": {"text": "Commented-code block (5 lines) in spike/connectors-test.mjs:1"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-d92f7e8086eb83fb", "name": "Commented-code block (5 lines) in spike/provider.mjs:2", "shortDescription": {"text": "Commented-code block (5 lines) in spike/provider.mjs:2"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-ec4e59abbf11c33e", "name": "Commented-code block (5 lines) in spike/probe-finetune.mjs:1", "shortDescription": {"text": "Commented-code block (5 lines) in spike/probe-finetune.mjs:1"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-c52fc6a65277f643", "name": "Commented-code block (11 lines) in spike/finetune.js:1", "shortDescription": {"text": "Commented-code block (11 lines) in spike/finetune.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-2f85eeab2b6efd31", "name": "Commented-code block (6 lines) in spike/make-bootstrap.js:1", "shortDescription": {"text": "Commented-code block (6 lines) in spike/make-bootstrap.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}}]}}, "automationDetails": {"id": "repobility/21205"}, "properties": {"repository": "thomasblc/second-self", "repoUrl": "https://github.com/thomasblc/second-self", "branch": "main"}, "results": [{"ruleId": "scanner-11444dee8f85998d", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 connectors/whatsapp.js:70"}, "properties": {"repobilityId": "22c7aa2e199ed216", "scanner": "scanner-primary", "fingerprint": "11444dee8f85998d", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-784df66043770ebb", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/server.js:660"}, "properties": {"repobilityId": "c400380217bed194", "scanner": "scanner-primary", "fingerprint": "784df66043770ebb", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-78226ca886ece680", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 spike/chat-compare.js:40"}, "properties": {"repobilityId": "3cb4f35c2d3bcd67", "scanner": "scanner-primary", "fingerprint": "78226ca886ece680", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-6417243544e676cb", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 spike/finetune.js:50"}, "properties": {"repobilityId": "60daa2cd0a1523f0", "scanner": "scanner-primary", "fingerprint": "6417243544e676cb", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-8481c4415283cd29", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 spike/make-bootstrap.js:233"}, "properties": {"repobilityId": "fb83bb00db6417d6", "scanner": "scanner-primary", "fingerprint": "8481c4415283cd29", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-9710c8d059e53154", "level": "none", "message": {"text": "No frontend routes/components detected"}, "properties": {"repobilityId": "44ca61485762e494", "scanner": "scanner-primary", "fingerprint": "9710c8d059e53154", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["coverage"]}}, {"ruleId": "scanner-2db4ca5b944d684e", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in app/server.js:26"}, "properties": {"repobilityId": "7a82857095b81aca", "scanner": "scanner-primary", "fingerprint": "2db4ca5b944d684e", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "app/server.js"}, "region": {"startLine": 26}}}]}, {"ruleId": "scanner-43e5f7fe9c4aa5e4", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in app/test-e2e.mjs:9"}, "properties": {"repobilityId": "45f54de94b81179b", "scanner": "scanner-primary", "fingerprint": "43e5f7fe9c4aa5e4", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "app/test-e2e.mjs"}, "region": {"startLine": 9}}}]}, {"ruleId": "scanner-6eadd365098fb324", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in app/lib/train.js:5"}, "properties": {"repobilityId": "e0109f68fe9672eb", "scanner": "scanner-primary", "fingerprint": "6eadd365098fb324", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "app/lib/train.js"}, "region": {"startLine": 5}}}]}, {"ruleId": "scanner-e8010ba80a7b5210", "level": "error", "message": {"text": "Insecure pattern 'eval_used' in app/public/app.js:386"}, "properties": {"repobilityId": "fd846d4c575fed0d", "scanner": "scanner-primary", "fingerprint": "e8010ba80a7b5210", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["owasp", "eval_used"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "app/public/app.js"}, "region": {"startLine": 386}}}]}, {"ruleId": "scanner-53eeaaa883cec58d", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in app/public/app.js:23"}, "properties": {"repobilityId": "055df2deba27341f", "scanner": "scanner-primary", "fingerprint": "53eeaaa883cec58d", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "app/public/app.js"}, "region": {"startLine": 23}}}]}, {"ruleId": "scanner-2fdf08c3f2c4711e", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in spike/master-loopback.mjs:5"}, "properties": {"repobilityId": "74a16d92f058513c", "scanner": "scanner-primary", "fingerprint": "2fdf08c3f2c4711e", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "spike/master-loopback.mjs"}, "region": {"startLine": 5}}}]}, {"ruleId": "scanner-ea867c073eb4b88c", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in spike/finetune.js:16"}, "properties": {"repobilityId": "82a653d62de35d77", "scanner": "scanner-primary", "fingerprint": "ea867c073eb4b88c", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "spike/finetune.js"}, "region": {"startLine": 16}}}]}, {"ruleId": "scanner-ebe0542dada86c61", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in spike/concurrency-test.mjs:4"}, "properties": {"repobilityId": "f16a6c63b4f115c2", "scanner": "scanner-primary", "fingerprint": "ebe0542dada86c61", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "spike/concurrency-test.mjs"}, "region": {"startLine": 4}}}]}, {"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-4601e3ad3bb28677", "level": "warning", "message": {"text": "No CI/CD pipelines detected"}, "properties": {"repobilityId": "c3ee439bce2bc51e", "scanner": "scanner-primary", "fingerprint": "4601e3ad3bb28677", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["coverage"]}}, {"ruleId": "scanner-8a8bc4023891b654", "level": "note", "message": {"text": "Very large file: app/public/app.js (1060 lines)"}, "properties": {"repobilityId": "a7fa9e644670fbe8", "scanner": "scanner-primary", "fingerprint": "8a8bc4023891b654", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"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-3ab5d313dda8e5f9", "level": "note", "message": {"text": "Debug logging residue appears in source files"}, "properties": {"repobilityId": "396ab919c50eaa3d", "scanner": "scanner-primary", "fingerprint": "3ab5d313dda8e5f9", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["debug", "cleanup", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-2d0c7b7ab8f8aacf", "level": "warning", "message": {"text": "Critical user flow still appears backed by mock or placeholder data"}, "properties": {"repobilityId": "23a85a7ed9f124aa", "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": "07be3ed5b8e486a7", "scanner": "scanner-primary", "fingerprint": "b9088664ace7f748", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["production-readiness", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-ea8f3013f588db25", "level": "note", "message": {"text": "Shallow git history limits provenance confidence"}, "properties": {"repobilityId": "a2318767e4f70650", "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": "c3f6a9f2eba2db65", "scanner": "scanner-primary", "fingerprint": "8424db9c75e04ba4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["provenance", "git-history", "generated-repo-pattern"]}}, {"ruleId": "scanner-eff79b36fc3524ee", "level": "none", "message": {"text": "Commented-code block (7 lines) in connectors/whatsapp.js:1"}, "properties": {"repobilityId": "8f9610343f47be88", "scanner": "scanner-primary", "fingerprint": "eff79b36fc3524ee", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-39d446c375ab522e", "level": "none", "message": {"text": "Commented-code block (6 lines) in app/server.js:28"}, "properties": {"repobilityId": "9182675ea5e5c380", "scanner": "scanner-primary", "fingerprint": "39d446c375ab522e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-96a4551db12c6813", "level": "none", "message": {"text": "Commented-code block (5 lines) in app/lib/models.js:64"}, "properties": {"repobilityId": "4e4186e0171d6f69", "scanner": "scanner-primary", "fingerprint": "96a4551db12c6813", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-09d7c3b16b910999", "level": "none", "message": {"text": "Commented-code block (5 lines) in app/lib/os-stores.js:6"}, "properties": {"repobilityId": "2986c9810705f4de", "scanner": "scanner-primary", "fingerprint": "09d7c3b16b910999", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0cbec0a87cf68c39", "level": "none", "message": {"text": "Commented-code block (5 lines) in app/lib/select.js:1"}, "properties": {"repobilityId": "7fd3a24539a5fb34", "scanner": "scanner-primary", "fingerprint": "0cbec0a87cf68c39", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7b4c0d181a2a08e5", "level": "none", "message": {"text": "Commented-code block (5 lines) in app/lib/master-link.js:4"}, "properties": {"repobilityId": "c5107bd6f2f91851", "scanner": "scanner-primary", "fingerprint": "7b4c0d181a2a08e5", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4ae9e7251cab011b", "level": "none", "message": {"text": "Commented-code block (5 lines) in app/lib/vault.js:1"}, "properties": {"repobilityId": "802541dbb6169a25", "scanner": "scanner-primary", "fingerprint": "4ae9e7251cab011b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-eeb0a1c9b9047dce", "level": "note", "message": {"text": "Legacy-named symbol `denseOld` in spike/connectors-test.mjs:121"}, "properties": {"repobilityId": "17fed2d0a6663388", "scanner": "scanner-primary", "fingerprint": "eeb0a1c9b9047dce", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-89ac579b52a8c474", "level": "none", "message": {"text": "Commented-code block (5 lines) in spike/connectors-test.mjs:1"}, "properties": {"repobilityId": "a2aca2fd3f60c70e", "scanner": "scanner-primary", "fingerprint": "89ac579b52a8c474", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d92f7e8086eb83fb", "level": "none", "message": {"text": "Commented-code block (5 lines) in spike/provider.mjs:2"}, "properties": {"repobilityId": "1cd824498025b78f", "scanner": "scanner-primary", "fingerprint": "d92f7e8086eb83fb", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ec4e59abbf11c33e", "level": "none", "message": {"text": "Commented-code block (5 lines) in spike/probe-finetune.mjs:1"}, "properties": {"repobilityId": "5552e422b837b1d9", "scanner": "scanner-primary", "fingerprint": "ec4e59abbf11c33e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c52fc6a65277f643", "level": "none", "message": {"text": "Commented-code block (11 lines) in spike/finetune.js:1"}, "properties": {"repobilityId": "73104700ad6cabcc", "scanner": "scanner-primary", "fingerprint": "c52fc6a65277f643", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2f85eeab2b6efd31", "level": "none", "message": {"text": "Commented-code block (6 lines) in spike/make-bootstrap.js:1"}, "properties": {"repobilityId": "08603946ade2ae8a", "scanner": "scanner-primary", "fingerprint": "2f85eeab2b6efd31", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}]}]}