{"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-b13a4c575cf1c08d", "name": "Stray `console.log` in TS/JS \u2014 scripts/bench-pow.ts:17", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/bench-pow.ts:17"}, "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-ee628d7e273d3875", "name": "Stray `console.log` in TS/JS \u2014 scripts/sign-helper-record.ts:70", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/sign-helper-record.ts: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-3d2ac18ad30b1235", "name": "Stray `console.log` in TS/JS \u2014 server/peerjs.ts:34", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/peerjs.ts:34"}, "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-f857bbf27f631cb9", "name": "Stray `console.log` in TS/JS \u2014 server/api.ts:141", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/api.ts:141"}, "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-4c088bc91a5ddc8d", "name": "Stray `console.log` in TS/JS \u2014 server/tools/archive.ts:353", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/tools/archive.ts:353"}, "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-e29e99cd5399cfe1", "name": "Stray `console.log` in TS/JS \u2014 src/node.ts:290", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 src/node.ts:290"}, "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-d781bba4aaa903ba", "name": "Stray `console.log` in TS/JS \u2014 src/miner/controller.ts:432", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 src/miner/controller.ts:432"}, "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-c90a2a43b7b3374e", "name": "Runtime dotenv file present in repo: .env.localhelpers", "shortDescription": {"text": "Runtime dotenv file present in repo: .env.localhelpers"}, "fullDescription": {"text": "`.env.localhelpers` looks like a runtime dotenv file. No high-confidence secret value was matched, but runtime dotenv files often drift into live credentials. Move real values to a secret manager and keep only `.env.example` style templates in source control."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-fac3362318eceb69", "name": "Insecure pattern 'cors_wildcard' in server/peerjs.ts:45", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in server/peerjs.ts:45"}, "fullDescription": {"text": "Found a known-risky pattern (cors_wildcard). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-256be61ae5300631", "name": "Insecure pattern 'cors_wildcard' in server/api.ts:415", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in server/api.ts:415"}, "fullDescription": {"text": "Found a known-risky pattern (cors_wildcard). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-ffa7b112b998583a", "name": "Insecure pattern 'direct_innerhtml_assignment' in src/ui/mempool.ts:17", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in src/ui/mempool.ts:17"}, "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-43dde7866384ded4", "name": "Insecure pattern 'direct_innerhtml_assignment' in src/ui/miner.ts:29", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in src/ui/miner.ts:29"}, "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-bf38b3a47345e35c", "name": "Insecure pattern 'direct_innerhtml_assignment' in src/ui/qrScanner.ts:30", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in src/ui/qrScanner.ts:30"}, "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-cc136a9cbcfda8a1", "name": "Insecure pattern 'direct_innerhtml_assignment' in src/ui/explorerRich.ts:24", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in src/ui/explorerRich.ts:24"}, "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-8a5607ed7f0f3239", "name": "Insecure pattern 'direct_innerhtml_assignment' in src/ui/about.ts:9", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in src/ui/about.ts:9"}, "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-34157ae5c51d33c1", "name": "Insecure pattern 'direct_innerhtml_assignment' in src/ui/highlights.ts:69", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in src/ui/highlights.ts:69"}, "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-3be9e5652364dd17", "name": "Insecure pattern 'direct_innerhtml_assignment' in src/ui/network.ts:7", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in src/ui/network.ts:7"}, "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-eb990e17675b320b", "name": "Insecure pattern 'direct_innerhtml_assignment' in src/ui/developers.ts:13", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in src/ui/developers.ts:13"}, "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-c8ac3ddd9f628600", "name": "Insecure pattern 'direct_innerhtml_assignment' in src/ui/qr.ts:25", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in src/ui/qr.ts:25"}, "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-a5296bab8ce44bf2", "name": "Insecure pattern 'direct_innerhtml_assignment' in src/ui/home.ts:40", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in src/ui/home.ts:40"}, "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-60d8ffc620127211", "name": "Insecure pattern 'direct_innerhtml_assignment' in src/ui/explorerStats.ts:121", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in src/ui/explorerStats.ts:121"}, "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-494f69a32505ed5d", "name": "Insecure pattern 'direct_innerhtml_assignment' in src/ui/wallet.ts:28", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in src/ui/wallet.ts:28"}, "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-fb8377b814d451eb", "name": "Insecure pattern 'direct_innerhtml_assignment' in src/ui/pager.ts:8", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in src/ui/pager.ts:8"}, "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-0c1caebb3a4d27c3", "name": "Insecure pattern 'direct_innerhtml_assignment' in src/ui/explorerAddress.ts:32", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in src/ui/explorerAddress.ts:32"}, "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-869f9245339e3cd6", "name": "Insecure pattern 'direct_innerhtml_assignment' in src/ui/settings.ts:26", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in src/ui/settings.ts:26"}, "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-18f53bcd14b8b6cf", "name": "Insecure pattern 'direct_innerhtml_assignment' in src/ui/explorerBlock.ts:29", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in src/ui/explorerBlock.ts:29"}, "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-1f3ef6a929387e74", "name": "Insecure pattern 'direct_innerhtml_assignment' in src/ui/explorer.ts:38", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in src/ui/explorer.ts:38"}, "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-e4bfbe3db80abcf7", "name": "Insecure pattern 'direct_innerhtml_assignment' in src/ui/pip-miner.ts:66", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in src/ui/pip-miner.ts:66"}, "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-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-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 37 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-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-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-09402b584bbee0eb", "name": "Commented-code block (6 lines) in vitest.config.ts:12", "shortDescription": {"text": "Commented-code block (6 lines) in vitest.config.ts:12"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-8688eee32407feb8", "name": "Commented-code block (5 lines) in examples/send-tx.mjs:6", "shortDescription": {"text": "Commented-code block (5 lines) in examples/send-tx.mjs: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-4d111362fd8eab12", "name": "`fetch()` without try/.catch or AbortSignal \u2014 examples/send-tx.mjs:72", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 examples/send-tx.mjs:72"}, "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-525f8b0c2f26993e", "name": "Commented-code block (6 lines) in src/node.ts:439", "shortDescription": {"text": "Commented-code block (6 lines) in src/node.ts:439"}, "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-477ee4e035e6ab64", "name": "Commented-code block (5 lines) in src/main.ts:71", "shortDescription": {"text": "Commented-code block (5 lines) in src/main.ts:71"}, "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-e2b7a9dd114ca8b2", "name": "Commented-code block (13 lines) in src/crypto/pow.ts:37", "shortDescription": {"text": "Commented-code block (13 lines) in src/crypto/pow.ts:37"}, "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-bcd04972ad4f0ba8", "name": "Commented-code block (9 lines) in src/miner/miner.worker.ts:43", "shortDescription": {"text": "Commented-code block (9 lines) in src/miner/miner.worker.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-6c601bbf20ac773c", "name": "Commented-code block (6 lines) in src/miner/controller.ts:232", "shortDescription": {"text": "Commented-code block (6 lines) in src/miner/controller.ts:232"}, "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-f3329afa6de93771", "name": "Commented-code block (7 lines) in src/ui/miner.ts:397", "shortDescription": {"text": "Commented-code block (7 lines) in src/ui/miner.ts:397"}, "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-22c9bbad63db4934", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/ui/developers.ts:143", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/ui/developers.ts:143"}, "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-549c599ba2dadb41", "name": "Commented-code block (6 lines) in src/ui/home.ts:459", "shortDescription": {"text": "Commented-code block (6 lines) in src/ui/home.ts:459"}, "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-f21abee09b272900", "name": "Commented-code block (5 lines) in src/chain/mempool.ts:79", "shortDescription": {"text": "Commented-code block (5 lines) in src/chain/mempool.ts:79"}, "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-2042ebb32aa0a3c0", "name": "Commented-code block (7 lines) in src/chain/testutil.ts:60", "shortDescription": {"text": "Commented-code block (7 lines) in src/chain/testutil.ts:60"}, "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-de80e2bf4840030c", "name": "Commented-code block (7 lines) in src/chain/consensus.test.ts:73", "shortDescription": {"text": "Commented-code block (7 lines) in src/chain/consensus.test.ts:73"}, "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-874817e13320f470", "name": "Commented-code block (7 lines) in src/chain/consensus.ts:41", "shortDescription": {"text": "Commented-code block (7 lines) in src/chain/consensus.ts:41"}, "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-e846b47421bbdd7f", "name": "Commented-code block (5 lines) in src/net/serverSync.ts:429", "shortDescription": {"text": "Commented-code block (5 lines) in src/net/serverSync.ts:429"}, "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-210780943940d18d", "name": "Commented-code block (5 lines) in src/net/protocol.ts:38", "shortDescription": {"text": "Commented-code block (5 lines) in src/net/protocol.ts: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-db3d6fb45d65f082", "name": "Commented-code block (5 lines) in src/net/peer.ts:25", "shortDescription": {"text": "Commented-code block (5 lines) in src/net/peer.ts:25"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-67e1bb93b7ec408e", "name": "Unused endpoint: USE /peerjs", "shortDescription": {"text": "Unused endpoint: USE /peerjs"}, "fullDescription": {"text": "`server/peerjs.ts` declares `USE /peerjs` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-5baa8971ebe192a1", "name": "Unused endpoint: GET /", "shortDescription": {"text": "Unused endpoint: GET /"}, "fullDescription": {"text": "`server/peerjs.ts` declares `GET /` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-cd8dc4599ec52a08", "name": "Unused endpoint: GET /stats", "shortDescription": {"text": "Unused endpoint: GET /stats"}, "fullDescription": {"text": "`server/api.ts` declares `GET /stats` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-c368dede2e2f5cee", "name": "Unused endpoint: GET /peers", "shortDescription": {"text": "Unused endpoint: GET /peers"}, "fullDescription": {"text": "`server/api.ts` declares `GET /peers` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-9bd7e3577f0c8af7", "name": "Unused endpoint: GET /helpers", "shortDescription": {"text": "Unused endpoint: GET /helpers"}, "fullDescription": {"text": "`server/api.ts` declares `GET /helpers` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-5205d6c0bf0b6069", "name": "Unused endpoint: POST /heartbeat", "shortDescription": {"text": "Unused endpoint: POST /heartbeat"}, "fullDescription": {"text": "`server/api.ts` declares `POST /heartbeat` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-9fd2086058659de3", "name": "Unused endpoint: GET /tip", "shortDescription": {"text": "Unused endpoint: GET /tip"}, "fullDescription": {"text": "`server/api.ts` declares `GET /tip` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-31d12edf995b2a7b", "name": "Unused endpoint: GET /blocks", "shortDescription": {"text": "Unused endpoint: GET /blocks"}, "fullDescription": {"text": "`server/api.ts` declares `GET /blocks` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-e5e63855004146c1", "name": "Unused endpoint: GET /mempool", "shortDescription": {"text": "Unused endpoint: GET /mempool"}, "fullDescription": {"text": "`server/api.ts` declares `GET /mempool` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-b4143b05d0d37eee", "name": "Unused endpoint: POST /txs", "shortDescription": {"text": "Unused endpoint: POST /txs"}, "fullDescription": {"text": "`server/api.ts` declares `POST /txs` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-2dbe4c9caa49a4a5", "name": "Unused endpoint: POST /block", "shortDescription": {"text": "Unused endpoint: POST /block"}, "fullDescription": {"text": "`server/api.ts` declares `POST /block` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}]}}, "automationDetails": {"id": "repobility/20617"}, "properties": {"repository": "swompythesecond/BrowserCoin", "repoUrl": "https://github.com/swompythesecond/BrowserCoin", "branch": "main"}, "results": [{"ruleId": "scanner-b13a4c575cf1c08d", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/bench-pow.ts:17"}, "properties": {"repobilityId": "4bfff05cc2e20043", "scanner": "scanner-primary", "fingerprint": "b13a4c575cf1c08d", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-ee628d7e273d3875", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/sign-helper-record.ts:70"}, "properties": {"repobilityId": "ad70a2edef904307", "scanner": "scanner-primary", "fingerprint": "ee628d7e273d3875", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-3d2ac18ad30b1235", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/peerjs.ts:34"}, "properties": {"repobilityId": "97ad8054f1618f59", "scanner": "scanner-primary", "fingerprint": "3d2ac18ad30b1235", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-f857bbf27f631cb9", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/api.ts:141"}, "properties": {"repobilityId": "635b6d92c9792665", "scanner": "scanner-primary", "fingerprint": "f857bbf27f631cb9", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-4c088bc91a5ddc8d", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/tools/archive.ts:353"}, "properties": {"repobilityId": "14962e98ae2a6cba", "scanner": "scanner-primary", "fingerprint": "4c088bc91a5ddc8d", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-e29e99cd5399cfe1", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 src/node.ts:290"}, "properties": {"repobilityId": "4359c23e271ed862", "scanner": "scanner-primary", "fingerprint": "e29e99cd5399cfe1", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-d781bba4aaa903ba", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 src/miner/controller.ts:432"}, "properties": {"repobilityId": "9006525746588082", "scanner": "scanner-primary", "fingerprint": "d781bba4aaa903ba", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-c90a2a43b7b3374e", "level": "error", "message": {"text": "Runtime dotenv file present in repo: .env.localhelpers"}, "properties": {"repobilityId": "0df8b6be29bba770", "scanner": "scanner-primary", "fingerprint": "c90a2a43b7b3374e", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["secrets", "config", "env-file", "runtime-env"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".env.localhelpers"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-fac3362318eceb69", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in server/peerjs.ts:45"}, "properties": {"repobilityId": "4d219ffaa3c4890c", "scanner": "scanner-primary", "fingerprint": "fac3362318eceb69", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "server/peerjs.ts"}, "region": {"startLine": 45}}}]}, {"ruleId": "scanner-256be61ae5300631", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in server/api.ts:415"}, "properties": {"repobilityId": "7fea7f0857a39f39", "scanner": "scanner-primary", "fingerprint": "256be61ae5300631", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "server/api.ts"}, "region": {"startLine": 415}}}]}, {"ruleId": "scanner-ffa7b112b998583a", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in src/ui/mempool.ts:17"}, "properties": {"repobilityId": "30b90936026f8ccb", "scanner": "scanner-primary", "fingerprint": "ffa7b112b998583a", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/ui/mempool.ts"}, "region": {"startLine": 17}}}]}, {"ruleId": "scanner-43dde7866384ded4", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in src/ui/miner.ts:29"}, "properties": {"repobilityId": "1fb94b642495f4c8", "scanner": "scanner-primary", "fingerprint": "43dde7866384ded4", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/ui/miner.ts"}, "region": {"startLine": 29}}}]}, {"ruleId": "scanner-bf38b3a47345e35c", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in src/ui/qrScanner.ts:30"}, "properties": {"repobilityId": "579964b274396660", "scanner": "scanner-primary", "fingerprint": "bf38b3a47345e35c", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/ui/qrScanner.ts"}, "region": {"startLine": 30}}}]}, {"ruleId": "scanner-cc136a9cbcfda8a1", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in src/ui/explorerRich.ts:24"}, "properties": {"repobilityId": "bc773a6bd442272e", "scanner": "scanner-primary", "fingerprint": "cc136a9cbcfda8a1", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/ui/explorerRich.ts"}, "region": {"startLine": 24}}}]}, {"ruleId": "scanner-8a5607ed7f0f3239", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in src/ui/about.ts:9"}, "properties": {"repobilityId": "e29be51969adc7ef", "scanner": "scanner-primary", "fingerprint": "8a5607ed7f0f3239", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/ui/about.ts"}, "region": {"startLine": 9}}}]}, {"ruleId": "scanner-34157ae5c51d33c1", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in src/ui/highlights.ts:69"}, "properties": {"repobilityId": "563b23825601bb79", "scanner": "scanner-primary", "fingerprint": "34157ae5c51d33c1", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/ui/highlights.ts"}, "region": {"startLine": 69}}}]}, {"ruleId": "scanner-3be9e5652364dd17", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in src/ui/network.ts:7"}, "properties": {"repobilityId": "180bce424609a70c", "scanner": "scanner-primary", "fingerprint": "3be9e5652364dd17", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/ui/network.ts"}, "region": {"startLine": 7}}}]}, {"ruleId": "scanner-eb990e17675b320b", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in src/ui/developers.ts:13"}, "properties": {"repobilityId": "6fdc03fb33d6d51a", "scanner": "scanner-primary", "fingerprint": "eb990e17675b320b", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/ui/developers.ts"}, "region": {"startLine": 13}}}]}, {"ruleId": "scanner-c8ac3ddd9f628600", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in src/ui/qr.ts:25"}, "properties": {"repobilityId": "30335ee1dd11e68a", "scanner": "scanner-primary", "fingerprint": "c8ac3ddd9f628600", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/ui/qr.ts"}, "region": {"startLine": 25}}}]}, {"ruleId": "scanner-a5296bab8ce44bf2", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in src/ui/home.ts:40"}, "properties": {"repobilityId": "f3a808dcb7ca25b5", "scanner": "scanner-primary", "fingerprint": "a5296bab8ce44bf2", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/ui/home.ts"}, "region": {"startLine": 40}}}]}, {"ruleId": "scanner-60d8ffc620127211", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in src/ui/explorerStats.ts:121"}, "properties": {"repobilityId": "fdba6f1fd38f3145", "scanner": "scanner-primary", "fingerprint": "60d8ffc620127211", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/ui/explorerStats.ts"}, "region": {"startLine": 121}}}]}, {"ruleId": "scanner-494f69a32505ed5d", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in src/ui/wallet.ts:28"}, "properties": {"repobilityId": "d5fc85fa568a96da", "scanner": "scanner-primary", "fingerprint": "494f69a32505ed5d", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/ui/wallet.ts"}, "region": {"startLine": 28}}}]}, {"ruleId": "scanner-fb8377b814d451eb", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in src/ui/pager.ts:8"}, "properties": {"repobilityId": "75b54fa69d9827ba", "scanner": "scanner-primary", "fingerprint": "fb8377b814d451eb", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/ui/pager.ts"}, "region": {"startLine": 8}}}]}, {"ruleId": "scanner-0c1caebb3a4d27c3", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in src/ui/explorerAddress.ts:32"}, "properties": {"repobilityId": "9096557d4f37fe65", "scanner": "scanner-primary", "fingerprint": "0c1caebb3a4d27c3", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/ui/explorerAddress.ts"}, "region": {"startLine": 32}}}]}, {"ruleId": "scanner-869f9245339e3cd6", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in src/ui/settings.ts:26"}, "properties": {"repobilityId": "a3f9b3e7ead93f4c", "scanner": "scanner-primary", "fingerprint": "869f9245339e3cd6", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/ui/settings.ts"}, "region": {"startLine": 26}}}]}, {"ruleId": "scanner-18f53bcd14b8b6cf", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in src/ui/explorerBlock.ts:29"}, "properties": {"repobilityId": "e29b5becd0ab58ef", "scanner": "scanner-primary", "fingerprint": "18f53bcd14b8b6cf", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/ui/explorerBlock.ts"}, "region": {"startLine": 29}}}]}, {"ruleId": "scanner-1f3ef6a929387e74", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in src/ui/explorer.ts:38"}, "properties": {"repobilityId": "d8ed488501bda261", "scanner": "scanner-primary", "fingerprint": "1f3ef6a929387e74", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/ui/explorer.ts"}, "region": {"startLine": 38}}}]}, {"ruleId": "scanner-e4bfbe3db80abcf7", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in src/ui/pip-miner.ts:66"}, "properties": {"repobilityId": "ef01ef84fbb08358", "scanner": "scanner-primary", "fingerprint": "e4bfbe3db80abcf7", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/ui/pip-miner.ts"}, "region": {"startLine": 66}}}]}, {"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-141b30a41e03817b", "level": "note", "message": {"text": "No license file detected"}, "properties": {"repobilityId": "c8e44bece2e3d81a", "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": "d9139cccb05a9c4c", "scanner": "scanner-primary", "fingerprint": "3ab5d313dda8e5f9", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["debug", "cleanup", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-b9088664ace7f748", "level": "note", "message": {"text": "Composite production-readiness gap"}, "properties": {"repobilityId": "12f4cb976534db70", "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": "01472d67f9b6d398", "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": "b9d58ef434017803", "scanner": "scanner-primary", "fingerprint": "8424db9c75e04ba4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["provenance", "git-history", "generated-repo-pattern"]}}, {"ruleId": "scanner-09402b584bbee0eb", "level": "none", "message": {"text": "Commented-code block (6 lines) in vitest.config.ts:12"}, "properties": {"repobilityId": "273917f141755cb4", "scanner": "scanner-primary", "fingerprint": "09402b584bbee0eb", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8688eee32407feb8", "level": "none", "message": {"text": "Commented-code block (5 lines) in examples/send-tx.mjs:6"}, "properties": {"repobilityId": "c0b18c6efe442867", "scanner": "scanner-primary", "fingerprint": "8688eee32407feb8", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4d111362fd8eab12", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 examples/send-tx.mjs:72"}, "properties": {"repobilityId": "04d35f8b8ef9d118", "scanner": "scanner-primary", "fingerprint": "4d111362fd8eab12", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-525f8b0c2f26993e", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/node.ts:439"}, "properties": {"repobilityId": "18772409ddfc1efb", "scanner": "scanner-primary", "fingerprint": "525f8b0c2f26993e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-477ee4e035e6ab64", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/main.ts:71"}, "properties": {"repobilityId": "7678ac06c4ef2f5e", "scanner": "scanner-primary", "fingerprint": "477ee4e035e6ab64", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e2b7a9dd114ca8b2", "level": "none", "message": {"text": "Commented-code block (13 lines) in src/crypto/pow.ts:37"}, "properties": {"repobilityId": "c5426f422e04ffec", "scanner": "scanner-primary", "fingerprint": "e2b7a9dd114ca8b2", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-bcd04972ad4f0ba8", "level": "none", "message": {"text": "Commented-code block (9 lines) in src/miner/miner.worker.ts:43"}, "properties": {"repobilityId": "92d61b8a69587369", "scanner": "scanner-primary", "fingerprint": "bcd04972ad4f0ba8", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6c601bbf20ac773c", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/miner/controller.ts:232"}, "properties": {"repobilityId": "566d63f993ad1738", "scanner": "scanner-primary", "fingerprint": "6c601bbf20ac773c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f3329afa6de93771", "level": "none", "message": {"text": "Commented-code block (7 lines) in src/ui/miner.ts:397"}, "properties": {"repobilityId": "4ebff5137e986613", "scanner": "scanner-primary", "fingerprint": "f3329afa6de93771", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-22c9bbad63db4934", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/ui/developers.ts:143"}, "properties": {"repobilityId": "4344b95b8120f771", "scanner": "scanner-primary", "fingerprint": "22c9bbad63db4934", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-549c599ba2dadb41", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/ui/home.ts:459"}, "properties": {"repobilityId": "82ff0eaa1c9154dc", "scanner": "scanner-primary", "fingerprint": "549c599ba2dadb41", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f21abee09b272900", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/chain/mempool.ts:79"}, "properties": {"repobilityId": "2c201f8d72d086f0", "scanner": "scanner-primary", "fingerprint": "f21abee09b272900", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2042ebb32aa0a3c0", "level": "none", "message": {"text": "Commented-code block (7 lines) in src/chain/testutil.ts:60"}, "properties": {"repobilityId": "abc486d6cc164b51", "scanner": "scanner-primary", "fingerprint": "2042ebb32aa0a3c0", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-de80e2bf4840030c", "level": "none", "message": {"text": "Commented-code block (7 lines) in src/chain/consensus.test.ts:73"}, "properties": {"repobilityId": "144ff1a7e9c5e169", "scanner": "scanner-primary", "fingerprint": "de80e2bf4840030c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-874817e13320f470", "level": "none", "message": {"text": "Commented-code block (7 lines) in src/chain/consensus.ts:41"}, "properties": {"repobilityId": "40715282a1b09fbc", "scanner": "scanner-primary", "fingerprint": "874817e13320f470", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e846b47421bbdd7f", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/net/serverSync.ts:429"}, "properties": {"repobilityId": "ed46fafcff78c406", "scanner": "scanner-primary", "fingerprint": "e846b47421bbdd7f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-210780943940d18d", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/net/protocol.ts:38"}, "properties": {"repobilityId": "b3bc95a72dc492f4", "scanner": "scanner-primary", "fingerprint": "210780943940d18d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-db3d6fb45d65f082", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/net/peer.ts:25"}, "properties": {"repobilityId": "de11334d20ba90b6", "scanner": "scanner-primary", "fingerprint": "db3d6fb45d65f082", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-67e1bb93b7ec408e", "level": "note", "message": {"text": "Unused endpoint: USE /peerjs"}, "properties": {"repobilityId": "2028e431565936b7", "scanner": "scanner-primary", "fingerprint": "67e1bb93b7ec408e", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-5baa8971ebe192a1", "level": "note", "message": {"text": "Unused endpoint: GET /"}, "properties": {"repobilityId": "b9e7ebf37b4fc1a4", "scanner": "scanner-primary", "fingerprint": "5baa8971ebe192a1", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-cd8dc4599ec52a08", "level": "note", "message": {"text": "Unused endpoint: GET /stats"}, "properties": {"repobilityId": "df9e674574c09473", "scanner": "scanner-primary", "fingerprint": "cd8dc4599ec52a08", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-c368dede2e2f5cee", "level": "note", "message": {"text": "Unused endpoint: GET /peers"}, "properties": {"repobilityId": "356bbf60c6bba65b", "scanner": "scanner-primary", "fingerprint": "c368dede2e2f5cee", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-9bd7e3577f0c8af7", "level": "note", "message": {"text": "Unused endpoint: GET /helpers"}, "properties": {"repobilityId": "2293665d32f3c7f8", "scanner": "scanner-primary", "fingerprint": "9bd7e3577f0c8af7", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-5205d6c0bf0b6069", "level": "note", "message": {"text": "Unused endpoint: POST /heartbeat"}, "properties": {"repobilityId": "43b852d4da689103", "scanner": "scanner-primary", "fingerprint": "5205d6c0bf0b6069", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-9fd2086058659de3", "level": "note", "message": {"text": "Unused endpoint: GET /tip"}, "properties": {"repobilityId": "fe4e0240ee9e89c3", "scanner": "scanner-primary", "fingerprint": "9fd2086058659de3", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-31d12edf995b2a7b", "level": "note", "message": {"text": "Unused endpoint: GET /blocks"}, "properties": {"repobilityId": "c0679873846e63e7", "scanner": "scanner-primary", "fingerprint": "31d12edf995b2a7b", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-e5e63855004146c1", "level": "note", "message": {"text": "Unused endpoint: GET /mempool"}, "properties": {"repobilityId": "95a746b6694c2994", "scanner": "scanner-primary", "fingerprint": "e5e63855004146c1", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-b4143b05d0d37eee", "level": "note", "message": {"text": "Unused endpoint: POST /txs"}, "properties": {"repobilityId": "29cf2f1df366cc96", "scanner": "scanner-primary", "fingerprint": "b4143b05d0d37eee", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-2dbe4c9caa49a4a5", "level": "note", "message": {"text": "Unused endpoint: POST /block"}, "properties": {"repobilityId": "a34759b6ffc1ab13", "scanner": "scanner-primary", "fingerprint": "2dbe4c9caa49a4a5", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}]}]}