{"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-ea3870186890a213", "name": "Possibly dead Python function: read_i8", "shortDescription": {"text": "Possibly dead Python function: read_i8"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-97a04af3e0d5eb70", "name": "Possibly dead Python function: read_i16", "shortDescription": {"text": "Possibly dead Python function: read_i16"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-3fe2d70b677751bf", "name": "Possibly dead Python function: read_u16", "shortDescription": {"text": "Possibly dead Python function: read_u16"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-2af41ffe2b7a40a3", "name": "Possibly dead Python function: read_float", "shortDescription": {"text": "Possibly dead Python function: read_float"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-39c0326638e153da", "name": "Possibly dead Python function: read_double", "shortDescription": {"text": "Possibly dead Python function: read_double"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-4b62b7fcbb21142a", "name": "Possibly dead Python function: write_i8", "shortDescription": {"text": "Possibly dead Python function: write_i8"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-93125b147e525141", "name": "Possibly dead Python function: write_i16", "shortDescription": {"text": "Possibly dead Python function: write_i16"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-5c51b2c1d384c366", "name": "Possibly dead Python function: write_u16", "shortDescription": {"text": "Possibly dead Python function: write_u16"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-00b9bac6dbb1417b", "name": "Possibly dead Python function: write_float", "shortDescription": {"text": "Possibly dead Python function: write_float"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-241c020a05860439", "name": "Possibly dead Python function: write_double", "shortDescription": {"text": "Possibly dead Python function: write_double"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-75310fc18ae24227", "name": "Possibly dead Python function: write_c_size_t", "shortDescription": {"text": "Possibly dead Python function: write_c_size_t"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-c2370e4cc6dee14b", "name": "Possibly dead Python function: insert", "shortDescription": {"text": "Possibly dead Python function: insert"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-d2036215d5263503", "name": "Possibly dead Python function: get", "shortDescription": {"text": "Possibly dead Python function: get"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-1e0071697a2ef0a2", "name": "Possibly dead Python function: remove", "shortDescription": {"text": "Possibly dead Python function: remove"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-206d2679155f0281", "name": "Stray `console.log` in TS/JS \u2014 sdks/js/packages/bare/tests/fund-wallet-ssp.js:14", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 sdks/js/packages/bare/tests/fund-wallet-ssp.js:14"}, "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-6874d701faaeb803", "name": "Stray `console.log` in TS/JS \u2014 sdks/js/packages/bare/tests/run-ssp-integration-tests.js:24", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 sdks/js/packages/bare/tests/run-ssp-integration-tests.js:24"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-e74643b0860ea267", "name": "Stray `console.log` in TS/JS \u2014 sdks/js/packages/bare/tests/utils.js:60", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 sdks/js/packages/bare/tests/utils.js:60"}, "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-2464b964906f0af0", "name": "Stray `console.log` in TS/JS \u2014 sdks/js/packages/bare/tests/run-integration-tests.js:34", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 sdks/js/packages/bare/tests/run-integration-tests.js: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-018c00474d8bae56", "name": "Stray `console.log` in TS/JS \u2014 sdks/js/packages/bare/tests/integration/ssp/static-deposit.test.js:16", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 sdks/js/packages/bare/tests/integration/ssp/static-deposit.test.js:16"}, "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-c7934859d2fc3077", "name": "Stray `console.log` in TS/JS \u2014 sdks/js/packages/bare/tests/integration/ssp/coop-exit.test.js:17", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 sdks/js/packages/bare/tests/integration/ssp/coop-exit.test.js: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-09dc4ec5853d83af", "name": "Stray `console.log` in TS/JS \u2014 sdks/js/packages/bare/tests/integration/ssp/swap.test.js:18", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 sdks/js/packages/bare/tests/integration/ssp/swap.test.js:18"}, "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-21ef09f8f3f87785", "name": "Stray `console.log` in TS/JS \u2014 sdks/js/packages/bare/tests/integration/ssp/lightning.test.js:17", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 sdks/js/packages/bare/tests/integration/ssp/lightning.test.js: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-0862368283739a2a", "name": "Stray `console.log` in TS/JS \u2014 sdks/js/packages/issuer-sdk/src/tests/utils/issuer-test-wallet.ts:6", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 sdks/js/packages/issuer-sdk/src/tests/utils/issuer-test-wallet.ts:6"}, "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-04c65d5cb65ac58d", "name": "Stray `console.log` in TS/JS \u2014 sdks/js/packages/issuer-sdk/src/tests/stress/transfers.test.ts:57", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 sdks/js/packages/issuer-sdk/src/tests/stress/transfers.test.ts:57"}, "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-2f10fb9dacef1709", "name": "Stray `console.log` in TS/JS \u2014 sdks/js/packages/issuer-sdk/src/tests/integration/token-invoices.test.ts:67", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 sdks/js/packages/issuer-sdk/src/tests/integration/token-invoices.test.ts:67"}, "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-27d211a17c967bf7", "name": "Stray `console.log` in TS/JS \u2014 sdks/js/packages/spark-mcp/src/tests/integration.test.ts:42", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 sdks/js/packages/spark-mcp/src/tests/integration.test.ts:42"}, "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-b5ae82fb88617d2e", "name": "Stray `console.log` in TS/JS \u2014 sdks/js/packages/spark-frost-bare-addon/test.js:22", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 sdks/js/packages/spark-frost-bare-addon/test.js:22"}, "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-b40643a6369682fa", "name": "Stray `console.log` in TS/JS \u2014 sdks/js/packages/spark-frost-bare-addon/tests/create-dummy-tx.test.js:6", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 sdks/js/packages/spark-frost-bare-addon/tests/create-dummy-tx.test.js:6"}, "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-4bb5bda8db4dc374", "name": "Stray `console.log` in TS/JS \u2014 sdks/js/packages/spark-frost-bare-addon/tests/utils.js:30", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 sdks/js/packages/spark-frost-bare-addon/tests/utils.js:30"}, "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-c7be40a784006ae0", "name": "Stray `console.log` in TS/JS \u2014 sdks/js/packages/spark-frost-bare-addon/scripts/normalize-win32-prebuilds.js:66", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 sdks/js/packages/spark-frost-bare-addon/scripts/normalize-win32-prebuilds.js:66"}, "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-4cdbc943ef2cd82f", "name": "Stray `console.log` in TS/JS \u2014 sdks/js/packages/spark-frost-bare-addon/scripts/ensure-prebuilds-present.js:67", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 sdks/js/packages/spark-frost-bare-addon/scripts/ensure-prebuilds-present.js:67"}, "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-0fa396a98989053f", "name": "Stray `console.log` in TS/JS \u2014 sdks/js/packages/spark-sdk/src/tests/bufbuild-reflection.test.ts:22", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 sdks/js/packages/spark-sdk/src/tests/bufbuild-reflection.test.ts:22"}, "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-ece3ab663a4ae2c1", "name": "TODO/FIXME marker in shipping code \u2014 sdks/js/packages/spark-sdk/src/tests/integration/static_deposit.test.ts:8", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 sdks/js/packages/spark-sdk/src/tests/integration/static_deposit.test.ts:8"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-9b99f283914384e2", "name": "Stray `console.log` in TS/JS \u2014 sdks/js/packages/spark-sdk/src/tests/integration/static_deposit.test.ts:10", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 sdks/js/packages/spark-sdk/src/tests/integration/static_deposit.test.ts:10"}, "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-71dd84617922153d", "name": "Stray `console.log` in TS/JS \u2014 sdks/js/packages/spark-sdk/src/tests/integration/ssp/coop-exit.test.ts:35", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 sdks/js/packages/spark-sdk/src/tests/integration/ssp/coop-exit.test.ts:35"}, "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-d65af7e54e740750", "name": "Stray `console.log` in TS/JS \u2014 sdks/js/packages/spark-sdk/src/tests/integration/ssp/coop-exit-validation.test.ts:32", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 sdks/js/packages/spark-sdk/src/tests/integration/ssp/coop-exit-validation.test.ts:32"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-10381a530b0e4009", "name": "TODO/FIXME marker in shipping code \u2014 sdks/js/packages/spark-sdk/src/tests/integration/ssp/instant_static_deposit.test.ts", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 sdks/js/packages/spark-sdk/src/tests/integration/ssp/instant_static_deposit.test.ts:466"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-058e647450f5c1e8", "name": "Stray `console.log` in TS/JS \u2014 sdks/js/packages/spark-sdk/src/tests/integration/ssp/static_deposit.test.ts:608", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 sdks/js/packages/spark-sdk/src/tests/integration/ssp/static_deposit.test.ts:608"}, "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-3ca16f79beb0ea14", "name": "Stray `console.log` in TS/JS \u2014 sdks/js/packages/spark-sdk/src/tests/integration/ssp/static-deposit-validation.test.ts:94", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 sdks/js/packages/spark-sdk/src/tests/integration/ssp/static-deposit-validation.test.ts:94"}, "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-7ad6a0de356754bf", "name": "TODO/FIXME marker in shipping code \u2014 sdks/js/packages/spark-sdk/src/utils/unilateral-exit.ts:277", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 sdks/js/packages/spark-sdk/src/utils/unilateral-exit.ts:277"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-139042bc1c6d0677", "name": "TODO/FIXME marker in shipping code \u2014 sdks/js/packages/spark-sdk/src/token-primitives-bindings/wasm/wasm-nodejs.js:157", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 sdks/js/packages/spark-sdk/src/token-primitives-bindings/wasm/wasm-nodejs.js:157"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-218ef7d80d1e14b4", "name": "TODO/FIXME marker in shipping code \u2014 sdks/js/packages/spark-sdk/src/token-primitives-bindings/wasm/wasm-browser.js:163", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 sdks/js/packages/spark-sdk/src/token-primitives-bindings/wasm/wasm-browser.js:163"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-3b515cad3bfe609f", "name": "TODO/FIXME marker in shipping code \u2014 sdks/js/packages/spark-sdk/src/graphql/client.ts:288", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 sdks/js/packages/spark-sdk/src/graphql/client.ts:288"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-43e99d55db2b4aed", "name": "TODO/FIXME marker in shipping code \u2014 sdks/js/packages/spark-sdk/src/services/xhr-transport.ts:35", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 sdks/js/packages/spark-sdk/src/services/xhr-transport.ts:35"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-8b958fa8c0ed72db", "name": "TODO/FIXME marker in shipping code \u2014 sdks/js/packages/spark-sdk/src/services/lightning.ts:303", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 sdks/js/packages/spark-sdk/src/services/lightning.ts:303"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-eea1a2b61972f08c", "name": "TODO/FIXME marker in shipping code \u2014 sdks/js/packages/spark-sdk/src/services/swap.ts:216", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 sdks/js/packages/spark-sdk/src/services/swap.ts:216"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-46f20b2ba17666bf", "name": "TODO/FIXME marker in shipping code \u2014 sdks/js/packages/spark-sdk/src/spark-bindings/wasm/wasm-browser-bg.js:185", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 sdks/js/packages/spark-sdk/src/spark-bindings/wasm/wasm-browser-bg.js:185"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-2befff3e5e139a1f", "name": "TODO/FIXME marker in shipping code \u2014 sdks/js/packages/spark-sdk/src/spark-bindings/wasm/wasm-browser.js:163", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 sdks/js/packages/spark-sdk/src/spark-bindings/wasm/wasm-browser.js:163"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-b5e77be3d0da2500", "name": "TODO/FIXME marker in shipping code \u2014 sdks/js/packages/spark-sdk/wasm/nodejs/spark_bindings_nodejs.js:175", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 sdks/js/packages/spark-sdk/wasm/nodejs/spark_bindings_nodejs.js:175"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-6f8216d53d12e9f8", "name": "TODO/FIXME marker in shipping code \u2014 sdks/js/packages/spark-sdk/wasm/nodejs/wasm_nodejs.js:155", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 sdks/js/packages/spark-sdk/wasm/nodejs/wasm_nodejs.js:155"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-9c485d6fa2d6da77", "name": "TODO/FIXME marker in shipping code \u2014 sdks/js/packages/spark-sdk/wasm/token-primitives/nodejs/wasm_token_primitives_nodej", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 sdks/js/packages/spark-sdk/wasm/token-primitives/nodejs/wasm_token_primitives_nodejs.js:155"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-e4bc99661d97c366", "name": "TODO/FIXME marker in shipping code \u2014 sdks/js/packages/spark-sdk/wasm/token-primitives/browser/wasm_token_primitives_brow", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 sdks/js/packages/spark-sdk/wasm/token-primitives/browser/wasm_token_primitives_browser.js:161"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-85118c03a6d7327d", "name": "Stray `console.log` in TS/JS \u2014 sdks/js/examples/nodejs-scripts/src/spark-sdk/get-or-create-wallet.ts:35", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 sdks/js/examples/nodejs-scripts/src/spark-sdk/get-or-create-wallet.ts:35"}, "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-222e79418e71d6a4", "name": "Stray `console.log` in TS/JS \u2014 sdks/js/examples/nodejs-scripts/src/spark-sdk/get-balance.ts:16", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 sdks/js/examples/nodejs-scripts/src/spark-sdk/get-balance.ts:16"}, "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-3dddb86fa6ae579a", "name": "Stray `console.log` in TS/JS \u2014 sdks/js/examples/nodejs-scripts/src/spark-sdk/get-all-transfers.ts:15", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 sdks/js/examples/nodejs-scripts/src/spark-sdk/get-all-transfers.ts: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-2271301960901d0e", "name": "Stray `console.log` in TS/JS \u2014 sdks/js/examples/nodejs-scripts/src/spark-sdk/deposit-bitcoin.ts:16", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 sdks/js/examples/nodejs-scripts/src/spark-sdk/deposit-bitcoin.ts:16"}, "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-9c5a56430f0044f0", "name": "Stray `console.log` in TS/JS \u2014 sdks/js/examples/nodejs-scripts/src/spark-sdk/get-transfers-with-time-filter.ts:17", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 sdks/js/examples/nodejs-scripts/src/spark-sdk/get-transfers-with-time-filter.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-17efff1e9589ac15", "name": "Stray `console.log` in TS/JS \u2014 sdks/js/examples/nodejs-scripts/src/spark-sdk/pay-invoices.ts:15", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 sdks/js/examples/nodejs-scripts/src/spark-sdk/pay-invoices.ts: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-392965327e5543ec", "name": "Stray `console.log` in TS/JS \u2014 sdks/js/examples/nodejs-scripts/src/spark-sdk/send-transfer.ts:19", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 sdks/js/examples/nodejs-scripts/src/spark-sdk/send-transfer.ts:19"}, "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-1475534542fedce0", "name": "Stray `console.log` in TS/JS \u2014 sdks/js/examples/nodejs-scripts/src/spark-sdk/create-invoice.ts:16", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 sdks/js/examples/nodejs-scripts/src/spark-sdk/create-invoice.ts:16"}, "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-078ccccfd7ed544d", "name": "Stray `console.log` in TS/JS \u2014 sdks/js/examples/nodejs-scripts/src/spark-sdk/get-spark-address.ts:15", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 sdks/js/examples/nodejs-scripts/src/spark-sdk/get-spark-address.ts: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-9c1ba8dd164942cc", "name": "Stray `console.log` in TS/JS \u2014 sdks/js/examples/nodejs-scripts/src/spark-sdk/example.ts:7", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 sdks/js/examples/nodejs-scripts/src/spark-sdk/example.ts:7"}, "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-56185f96ad5d4115", "name": "Stray `console.log` in TS/JS \u2014 sdks/js/examples/spark-webpack-react-app/src/App.tsx:18", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 sdks/js/examples/spark-webpack-react-app/src/App.tsx:18"}, "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-d987405807eb5ea3", "name": "Stray `console.log` in TS/JS \u2014 sdks/js/examples/spark-nextjs-app/src/app/page.tsx:31", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 sdks/js/examples/spark-nextjs-app/src/app/page.tsx:31"}, "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-b7c6c9c5f7a535b4", "name": "Stray `console.log` in TS/JS \u2014 sdks/js/examples/spark-browser-extension/src/background.ts:21", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 sdks/js/examples/spark-browser-extension/src/background.ts:21"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-171bc033a835272d", "name": "Stray `console.log` in TS/JS \u2014 sdks/js/examples/spark-browser-extension/src/content.ts:8", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 sdks/js/examples/spark-browser-extension/src/content.ts:8"}, "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-343a2f06501c420c", "name": "Stray `console.log` in TS/JS \u2014 sdks/js/examples/spark-expo-react-native-app/app/test-screen.tsx:47", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 sdks/js/examples/spark-expo-react-native-app/app/test-screen.tsx:47"}, "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-ac0fdaf4f2b77014", "name": "Stray `console.log` in TS/JS \u2014 sdks/js/examples/spark-expo-react-native-app/contexts/WalletContext.tsx:60", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 sdks/js/examples/spark-expo-react-native-app/contexts/WalletContext.tsx:60"}, "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-93102ba1762ddaf7", "name": "Stray `console.log` in TS/JS \u2014 sdks/js/examples/spark-react-native-app/contexts/WalletContext.tsx:87", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 sdks/js/examples/spark-react-native-app/contexts/WalletContext.tsx:87"}, "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-d6d1681cf7983a1b", "name": "Stray `console.log` in TS/JS \u2014 sdks/js/examples/spark-react-native-app/screens/TestScreen.tsx:157", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 sdks/js/examples/spark-react-native-app/screens/TestScreen.tsx:157"}, "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-5797794ab0da62a1", "name": "Stray `console.log` in TS/JS \u2014 sdks/js/examples/spark-bare-app/get-static-deposit-address.js:44", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 sdks/js/examples/spark-bare-app/get-static-deposit-address.js:44"}, "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-bf5161a4c4df6bb4", "name": "Stray `console.log` in TS/JS \u2014 sdks/js/examples/spark-bare-app/auto-claim-static-deposit.js:50", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 sdks/js/examples/spark-bare-app/auto-claim-static-deposit.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-8885ee02e7b03395", "name": "Stray `console.log` in TS/JS \u2014 sdks/js/examples/spark-bare-app/repro-query-nodes-timeout.js:31", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 sdks/js/examples/spark-bare-app/repro-query-nodes-timeout.js:31"}, "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-d5b6a0328a4785dd", "name": "Stray `console.log` in TS/JS \u2014 sdks/js/examples/spark-bare-app/get-or-create-wallet.js:44", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 sdks/js/examples/spark-bare-app/get-or-create-wallet.js:44"}, "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-03f41e698e1710ef", "name": "Stray `console.log` in TS/JS \u2014 sdks/js/examples/spark-bare-app/transfer.js:49", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 sdks/js/examples/spark-bare-app/transfer.js:49"}, "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-b4324f66dbc04ccf", "name": "Stray `console.log` in TS/JS \u2014 sdks/js/examples/spark-bare-app/create-lightning-invoice.js:37", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 sdks/js/examples/spark-bare-app/create-lightning-invoice.js:37"}, "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-5aa3d48c1a459b20", "name": "Stray `console.log` in TS/JS \u2014 sdks/js/examples/spark-node-express/src/index.ts:56", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 sdks/js/examples/spark-node-express/src/index.ts:56"}, "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-c3378373a882a5a3", "name": "Stray `console.log` in TS/JS \u2014 sdks/js/examples/spark-node-express/src/routes/issuerRoutes.ts:58", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 sdks/js/examples/spark-node-express/src/routes/issuerRoutes.ts:58"}, "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-f2309bd2d7954a66", "name": "Stray `console.log` in TS/JS \u2014 sdks/js/apps/spark-cli/src/cli.ts:324", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 sdks/js/apps/spark-cli/src/cli.ts:324"}, "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-8f63b8a04e56a070", "name": "Stray `console.log` in TS/JS \u2014 sdks/js/apps/create-spark-app/src/index.ts:39", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 sdks/js/apps/create-spark-app/src/index.ts:39"}, "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-0fd7ad1d29455c02", "name": "Stray `console.log` in TS/JS \u2014 sdks/js/apps/lrc20-l1-announcer/announce-token.ts:59", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 sdks/js/apps/lrc20-l1-announcer/announce-token.ts:59"}, "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-d63da3583b14afc0", "name": "Dockerfile runs as root: Dockerfile", "shortDescription": {"text": "Dockerfile runs as root: Dockerfile"}, "fullDescription": {"text": "No non-root USER set. Containers running as root expand the blast radius of any vulnerability inside the image."}, "properties": {"scanner": "scanner-primary", "layer": "hardware", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-9eae113ca663b4de", "name": "Docker base image is tag-pinned but not digest-pinned: golang:1.26-bookworm", "shortDescription": {"text": "Docker base image is tag-pinned but not digest-pinned: golang:1.26-bookworm"}, "fullDescription": {"text": "Container tags can be retagged upstream. Pin production base images to a reviewed digest (`image@sha256:...`) when reproducibility and supply-chain integrity matter."}, "properties": {"scanner": "scanner-primary", "layer": "hardware", "severity": "low", "confidence": 1.0}}, {"id": "scanner-25aeef2ae572f43b", "name": "Docker base image is tag-pinned but not digest-pinned: rust:1.92-slim-bookworm", "shortDescription": {"text": "Docker base image is tag-pinned but not digest-pinned: rust:1.92-slim-bookworm"}, "fullDescription": {"text": "Container tags can be retagged upstream. Pin production base images to a reviewed digest (`image@sha256:...`) when reproducibility and supply-chain integrity matter."}, "properties": {"scanner": "scanner-primary", "layer": "hardware", "severity": "low", "confidence": 1.0}}, {"id": "scanner-af51d05f220fecfb", "name": "Docker base image is tag-pinned but not digest-pinned: arigaio/atlas:1.0.0-community", "shortDescription": {"text": "Docker base image is tag-pinned but not digest-pinned: arigaio/atlas:1.0.0-community"}, "fullDescription": {"text": "Container tags can be retagged upstream. Pin production base images to a reviewed digest (`image@sha256:...`) when reproducibility and supply-chain integrity matter."}, "properties": {"scanner": "scanner-primary", "layer": "hardware", "severity": "low", "confidence": 1.0}}, {"id": "scanner-84019dfd8d98a34d", "name": "Docker base image is tag-pinned but not digest-pinned: debian:bookworm-slim", "shortDescription": {"text": "Docker base image is tag-pinned but not digest-pinned: debian:bookworm-slim"}, "fullDescription": {"text": "Container tags can be retagged upstream. Pin production base images to a reviewed digest (`image@sha256:...`) when reproducibility and supply-chain integrity matter."}, "properties": {"scanner": "scanner-primary", "layer": "hardware", "severity": "low", "confidence": 1.0}}, {"id": "scanner-f73fb7717354c46d", "name": "Possible secret in cleanup.sh", "shortDescription": {"text": "Possible secret in cleanup.sh"}, "fullDescription": {"text": "Detected pattern matching password_literal. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-f6471150cf924df2", "name": "Possible secret in run-everything.sh", "shortDescription": {"text": "Possible secret in run-everything.sh"}, "fullDescription": {"text": "Detected pattern matching password_literal. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-c92fb5bbf127afd2", "name": "Possible secret in sdks/js/packages/spark-sdk/src/services/wallet-config.ts", "shortDescription": {"text": "Possible secret in sdks/js/packages/spark-sdk/src/services/wallet-config.ts"}, "fullDescription": {"text": "Detected pattern matching password_literal. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-2d7d97f17a7ae9e9", "name": "Insecure pattern 'new_function_used' in sdks/js/packages/spark-sdk/src/spark-bindings/wasm/wasm-browser-bg.js:1042", "shortDescription": {"text": "Insecure pattern 'new_function_used' in sdks/js/packages/spark-sdk/src/spark-bindings/wasm/wasm-browser-bg.js:1042"}, "fullDescription": {"text": "Found a known-risky pattern (new_function_used). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-95fdb17ef8328a87", "name": "Insecure pattern 'new_function_used' in sdks/js/packages/spark-sdk/src/spark-bindings/wasm/wasm-browser.js:1993", "shortDescription": {"text": "Insecure pattern 'new_function_used' in sdks/js/packages/spark-sdk/src/spark-bindings/wasm/wasm-browser.js:1993"}, "fullDescription": {"text": "Found a known-risky pattern (new_function_used). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-84c304e4f1d780d8", "name": "Insecure pattern 'new_function_used' in sdks/js/packages/spark-sdk/wasm/nodejs/spark_bindings_nodejs.js:1044", "shortDescription": {"text": "Insecure pattern 'new_function_used' in sdks/js/packages/spark-sdk/wasm/nodejs/spark_bindings_nodejs.js:1044"}, "fullDescription": {"text": "Found a known-risky pattern (new_function_used). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-b3c408cd4e9f74b3", "name": "Insecure pattern 'new_function_used' in sdks/js/packages/spark-sdk/wasm/nodejs/wasm_nodejs.js:2010", "shortDescription": {"text": "Insecure pattern 'new_function_used' in sdks/js/packages/spark-sdk/wasm/nodejs/wasm_nodejs.js:2010"}, "fullDescription": {"text": "Found a known-risky pattern (new_function_used). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-4db8b78043533d10", "name": "Possible secret in sdks/js/apps/spark-cli/src/cli.ts", "shortDescription": {"text": "Possible secret in sdks/js/apps/spark-cli/src/cli.ts"}, "fullDescription": {"text": "Detected pattern matching password_literal. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-b54d0afa0ee9475e", "name": "Insecure pattern 'node_child_process' in sdks/js/apps/create-spark-app/src/transform.ts:1", "shortDescription": {"text": "Insecure pattern 'node_child_process' in sdks/js/apps/create-spark-app/src/transform.ts:1"}, "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-9bbfb99ba2b75a47", "name": "Possible secret in sdks/js/apps/lrc20-l1-announcer/announce-token.ts", "shortDescription": {"text": "Possible secret in sdks/js/apps/lrc20-l1-announcer/announce-token.ts"}, "fullDescription": {"text": "Detected pattern matching password_literal. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-5138374328fa92ab", "name": "Insecure pattern 'exec_used' in spark/so/ent/ent.go:581", "shortDescription": {"text": "Insecure pattern 'exec_used' in spark/so/ent/ent.go:581"}, "fullDescription": {"text": "Found a known-risky pattern (exec_used). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-6e16aae2de02b707", "name": "Insecure pattern 'exec_used' in spark/so/entephemeral/ent.go:497", "shortDescription": {"text": "Insecure pattern 'exec_used' in spark/so/entephemeral/ent.go:497"}, "fullDescription": {"text": "Found a known-risky pattern (exec_used). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-d954eeafc08886cd", "name": "Possible secret in spark/so/db/testing.go", "shortDescription": {"text": "Possible secret in spark/so/db/testing.go"}, "fullDescription": {"text": "Detected pattern matching password_literal. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-60701d1c071b85c7", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/checkout@v4 can move without a code change in this repo. Pin third-party actions to a reviewed 40-character commit SHA."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "low", "confidence": 1.0}}, {"id": "scanner-78d589d6464d2a0a", "name": "GitHub Actions workflow grants broad write permissions", "shortDescription": {"text": "GitHub Actions workflow grants broad write permissions"}, "fullDescription": {"text": "CI tokens with write permissions increase blast radius when an action, dependency, or PR workflow is compromised. Prefer job-level least-privilege permissions."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-ea151fdd47f7c2e6", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/checkout@v4 can move without a code change in this repo. Pin third-party actions to a reviewed 40-character commit SHA."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "low", "confidence": 1.0}}, {"id": "scanner-52e8073f3b9e3898", "name": "GitHub Actions workflow grants broad write permissions", "shortDescription": {"text": "GitHub Actions workflow grants broad write permissions"}, "fullDescription": {"text": "CI tokens with write permissions increase blast radius when an action, dependency, or PR workflow is compromised. Prefer job-level least-privilege permissions."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-cd44bb64bd296e93", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/checkout@v4 can move without a code change in this repo. Pin third-party actions to a reviewed 40-character commit SHA."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "low", "confidence": 1.0}}, {"id": "scanner-96b97d724af69b99", "name": "package.json defines install-time lifecycle scripts", "shortDescription": {"text": "package.json defines install-time lifecycle scripts"}, "fullDescription": {"text": "preinstall/install/postinstall/prepare scripts execute during dependency installation. Review them carefully for network calls, obfuscation, shell execution, or credential access."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "low", "confidence": 1.0}}, {"id": "scanner-12f41bb86408bf60", "name": "Very large file: sdks/js/packages/spark-sdk/src/tests/integration/transfer.test.ts (1585 lines)", "shortDescription": {"text": "Very large file: sdks/js/packages/spark-sdk/src/tests/integration/transfer.test.ts (1585 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-dad5843eeb871ade", "name": "Very large file: sdks/js/packages/spark-sdk/src/tests/leaf-manager/leaf-manager.test.ts (5881 lines)", "shortDescription": {"text": "Very large file: sdks/js/packages/spark-sdk/src/tests/leaf-manager/leaf-manager.test.ts (5881 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-a1c065a9b6de8454", "name": "Very large file: sdks/js/packages/spark-sdk/src/proto/spark.ts (22201 lines)", "shortDescription": {"text": "Very large file: sdks/js/packages/spark-sdk/src/proto/spark.ts (22201 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-f3868cdfb28802aa", "name": "Very large file: sdks/js/packages/spark-sdk/src/proto/spark_token.ts (5535 lines)", "shortDescription": {"text": "Very large file: sdks/js/packages/spark-sdk/src/proto/spark_token.ts (5535 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-b9ebe1d6c077802d", "name": "Very large file: sdks/js/packages/spark-sdk/src/proto/google/protobuf/descriptor.ts (6976 lines)", "shortDescription": {"text": "Very large file: sdks/js/packages/spark-sdk/src/proto/google/protobuf/descriptor.ts (6976 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-2dca2ee6ad198d4d", "name": "Very large file: sdks/js/packages/spark-sdk/src/proto/validate/validate.ts (5995 lines)", "shortDescription": {"text": "Very large file: sdks/js/packages/spark-sdk/src/proto/validate/validate.ts (5995 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-0c246d905f1e7a75", "name": "Very large file: sdks/js/packages/spark-sdk/src/spark-wallet/spark-wallet.ts (6547 lines)", "shortDescription": {"text": "Very large file: sdks/js/packages/spark-sdk/src/spark-wallet/spark-wallet.ts (6547 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-f471247fd6e2606c", "name": "Very large file: sdks/js/packages/spark-sdk/src/services/transfer.ts (2507 lines)", "shortDescription": {"text": "Very large file: sdks/js/packages/spark-sdk/src/services/transfer.ts (2507 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-40fbd77f19ab3020", "name": "Very large file: sdks/js/packages/spark-sdk/src/services/leaf-manager.ts (1972 lines)", "shortDescription": {"text": "Very large file: sdks/js/packages/spark-sdk/src/services/leaf-manager.ts (1972 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-f6847736fb40249e", "name": "Very large file: sdks/js/packages/spark-sdk/src/services/tokens/token-transactions.ts (1629 lines)", "shortDescription": {"text": "Very large file: sdks/js/packages/spark-sdk/src/services/tokens/token-transactions.ts (1629 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-67195451abcf083a", "name": "Very large file: sdks/js/packages/spark-sdk/src/spark-bindings/wasm/wasm-browser.js (2168 lines)", "shortDescription": {"text": "Very large file: sdks/js/packages/spark-sdk/src/spark-bindings/wasm/wasm-browser.js (2168 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-c94c514b65a504ac", "name": "Very large file: sdks/js/packages/spark-sdk/wasm/nodejs/wasm_nodejs.js (2151 lines)", "shortDescription": {"text": "Very large file: sdks/js/packages/spark-sdk/wasm/nodejs/wasm_nodejs.js (2151 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-a6f96c378daefd0b", "name": "Very large file: sdks/js/apps/spark-cli/src/cli.ts (4031 lines)", "shortDescription": {"text": "Very large file: sdks/js/apps/spark-cli/src/cli.ts (4031 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-7b9cc336ee2c2637", "name": "Very large file: spark/testing/wallet/transfer.go (1798 lines)", "shortDescription": {"text": "Very large file: spark/testing/wallet/transfer.go (1798 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-ec3830e46f756d54", "name": "Very large file: spark/testing/wallet/deposit.go (1582 lines)", "shortDescription": {"text": "Very large file: spark/testing/wallet/deposit.go (1582 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-bff86a260a465b76", "name": "Very large file: spark/testing/wallet/ssp_api/mutations/generated.go (1176 lines)", "shortDescription": {"text": "Very large file: spark/testing/wallet/ssp_api/mutations/generated.go (1176 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-49aa756c9fcc0df6", "name": "Very large file: spark/proto/gossip/gossip.pb.validate.go (4024 lines)", "shortDescription": {"text": "Very large file: spark/proto/gossip/gossip.pb.validate.go (4024 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-21d221b92f712e09", "name": "Very large file: spark/proto/gossip/gossip.pb.go (2111 lines)", "shortDescription": {"text": "Very large file: spark/proto/gossip/gossip.pb.go (2111 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-35820dcc75682da9", "name": "Very large file: spark/proto/spark/spark.pb.go (13313 lines)", "shortDescription": {"text": "Very large file: spark/proto/spark/spark.pb.go (13313 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-973029e2959204cd", "name": "Very large file: spark/proto/spark/spark.pb.validate.go (24641 lines)", "shortDescription": {"text": "Very large file: spark/proto/spark/spark.pb.validate.go (24641 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-01fa9ea9a9fc71f5", "name": "Very large file: spark/proto/spark/spark_grpc.pb.go (1648 lines)", "shortDescription": {"text": "Very large file: spark/proto/spark/spark_grpc.pb.go (1648 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-8ce92ba67cf74d6b", "name": "Very large file: spark/proto/spark_token/spark_token.pb.validate.go (6922 lines)", "shortDescription": {"text": "Very large file: spark/proto/spark_token/spark_token.pb.validate.go (6922 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-d2e6e3055354934e", "name": "Very large file: spark/proto/spark_token/spark_token.pb.go (3623 lines)", "shortDescription": {"text": "Very large file: spark/proto/spark_token/spark_token.pb.go (3623 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-41596da9f9bba88c", "name": "Very large file: spark/proto/spark_internal/spark_internal.pb.go (6208 lines)", "shortDescription": {"text": "Very large file: spark/proto/spark_internal/spark_internal.pb.go (6208 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-75d371e91e52510e", "name": "Very large file: spark/proto/spark_internal/spark_internal_grpc.pb.go (1729 lines)", "shortDescription": {"text": "Very large file: spark/proto/spark_internal/spark_internal_grpc.pb.go (1729 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-9f18fcff9ae63d67", "name": "Very large file: spark/proto/spark_internal/spark_internal.pb.validate.go (11378 lines)", "shortDescription": {"text": "Very large file: spark/proto/spark_internal/spark_internal.pb.validate.go (11378 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-2331d5cd8d6a5160", "name": "Very large file: spark/proto/frost/frost.pb.go (2006 lines)", "shortDescription": {"text": "Very large file: spark/proto/frost/frost.pb.go (2006 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-7cf0496dbd733fe2", "name": "Very large file: spark/proto/frost/frost.pb.validate.go (3553 lines)", "shortDescription": {"text": "Very large file: spark/proto/frost/frost.pb.validate.go (3553 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-9d4ee5b6c88a5866", "name": "Very large file: spark/proto/spark_token_internal/spark_token_internal.pb.validate.go (2435 lines)", "shortDescription": {"text": "Very large file: spark/proto/spark_token_internal/spark_token_internal.pb.validate.go (2435 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-a4ccb0833bbcc3f2", "name": "Very large file: spark/so/ent/tokentransaction_update.go (1805 lines)", "shortDescription": {"text": "Very large file: spark/so/ent/tokentransaction_update.go (1805 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-cb749e3360a6c5ae", "name": "Very large file: spark/so/ent/tokentransaction_create.go (1496 lines)", "shortDescription": {"text": "Very large file: spark/so/ent/tokentransaction_create.go (1496 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-970df1c8bfbd3bdf", "name": "Very large file: spark/so/ent/transferleaf_create.go (1955 lines)", "shortDescription": {"text": "Very large file: spark/so/ent/transferleaf_create.go (1955 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-02a8de6fc423677f", "name": "Very large file: spark/so/ent/utxoswap_create.go (1771 lines)", "shortDescription": {"text": "Very large file: spark/so/ent/utxoswap_create.go (1771 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-23a492458052f9cd", "name": "Very large file: spark/so/ent/tokenoutput_update.go (1363 lines)", "shortDescription": {"text": "Very large file: spark/so/ent/tokenoutput_update.go (1363 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-7fd9880718286e82", "name": "Very large file: spark/so/ent/tokentransaction_extension.go (1335 lines)", "shortDescription": {"text": "Very large file: spark/so/ent/tokentransaction_extension.go (1335 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-c0374f5cbd7df23c", "name": "Very large file: spark/so/ent/tokenoutput_create.go (1700 lines)", "shortDescription": {"text": "Very large file: spark/so/ent/tokenoutput_create.go (1700 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-1f8a32c5fc55fe73", "name": "Very large file: spark/so/ent/treenode_create.go (1921 lines)", "shortDescription": {"text": "Very large file: spark/so/ent/treenode_create.go (1921 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-4f71c46b56554b4b", "name": "Very large file: spark/so/ent/client.go (7662 lines)", "shortDescription": {"text": "Very large file: spark/so/ent/client.go (7662 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-60cbdec9e08e2b70", "name": "Very large file: spark/so/ent/migrate/schema.go (2183 lines)", "shortDescription": {"text": "Very large file: spark/so/ent/migrate/schema.go (2183 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-2701f5e4259f2de8", "name": "Very large file: spark/so/ent/intercept/intercept.go (1409 lines)", "shortDescription": {"text": "Very large file: spark/so/ent/intercept/intercept.go (1409 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-f08851f7ce51d45d", "name": "Very large file: spark/so/ent/transferleaf/where.go (1240 lines)", "shortDescription": {"text": "Very large file: spark/so/ent/transferleaf/where.go (1240 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-5b48c1cf4776e8e9", "name": "Very large file: spark/so/ent/runtime/runtime.go (1173 lines)", "shortDescription": {"text": "Very large file: spark/so/ent/runtime/runtime.go (1173 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-e1ee438b25ff179d", "name": "Very large file: spark/so/ent/tokenoutput/where.go (1235 lines)", "shortDescription": {"text": "Very large file: spark/so/ent/tokenoutput/where.go (1235 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-69dc1db09ccb7518", "name": "Very large file: spark/so/ent/entexample/entexample.go (8258 lines)", "shortDescription": {"text": "Very large file: spark/so/ent/entexample/entexample.go (8258 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-c8495a5ab7e3a26e", "name": "Very large file: spark/so/stream/event_handler_test.go (1500 lines)", "shortDescription": {"text": "Very large file: spark/so/stream/event_handler_test.go (1500 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-f983ec6c985b124f", "name": "Very large file: spark/so/handler/lightning_handler.go (2773 lines)", "shortDescription": {"text": "Very large file: spark/so/handler/lightning_handler.go (2773 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-0ca542931615becb", "name": "Very large file: spark/so/handler/transfer_handler.go (5492 lines)", "shortDescription": {"text": "Very large file: spark/so/handler/transfer_handler.go (5492 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-7cfec462910df8b4", "name": "Very large file: spark/so/handler/base_transfer_handler_test.go (1605 lines)", "shortDescription": {"text": "Very large file: spark/so/handler/base_transfer_handler_test.go (1605 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-c7a100304072af69", "name": "Very large file: spark/so/handler/internal_deposit_handler.go (1280 lines)", "shortDescription": {"text": "Very large file: spark/so/handler/internal_deposit_handler.go (1280 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-7f67f010106147b5", "name": "Very large file: spark/so/handler/transfer_handler_mimo_test.go (1910 lines)", "shortDescription": {"text": "Very large file: spark/so/handler/transfer_handler_mimo_test.go (1910 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-87bbec43a09ffc46", "name": "Very large file: spark/so/handler/transfer_handler_query_equivalence_test.go (2403 lines)", "shortDescription": {"text": "Very large file: spark/so/handler/transfer_handler_query_equivalence_test.go (2403 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-2a43d608f2280256", "name": "Very large file: spark/so/handler/deposit_handler.go (2114 lines)", "shortDescription": {"text": "Very large file: spark/so/handler/deposit_handler.go (2114 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-e6a395b38c20a773", "name": "Very large file: spark/so/handler/renew_leaf_handler_test.go (1570 lines)", "shortDescription": {"text": "Very large file: spark/so/handler/renew_leaf_handler_test.go (1570 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-d932100a0e932b45", "name": "Very large file: spark/so/handler/base_transfer_handler.go (2884 lines)", "shortDescription": {"text": "Very large file: spark/so/handler/base_transfer_handler.go (2884 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-9f5cf9f3efcb3af7", "name": "Very large file: spark/so/handler/transfer_handler_mimo.go (1386 lines)", "shortDescription": {"text": "Very large file: spark/so/handler/transfer_handler_mimo.go (1386 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-2ac3d6a257fcc346", "name": "Very large file: spark/so/handler/internal_transfer_handler_test.go (2305 lines)", "shortDescription": {"text": "Very large file: spark/so/handler/internal_transfer_handler_test.go (2305 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-c931c084e43d1f37", "name": "Very large file: spark/so/handler/tree_creation_handler_test.go (3724 lines)", "shortDescription": {"text": "Very large file: spark/so/handler/tree_creation_handler_test.go (3724 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-5e2fde044bc98c43", "name": "Very large file: spark/so/handler/internal_transfer_handler.go (1351 lines)", "shortDescription": {"text": "Very large file: spark/so/handler/internal_transfer_handler.go (1351 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-c7c0991ec196e233", "name": "Very large file: spark/so/handler/deposit_handler_test.go (2414 lines)", "shortDescription": {"text": "Very large file: spark/so/handler/deposit_handler_test.go (2414 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-c1aeb9acc5c30a23", "name": "Very large file: spark/so/handler/claim_transfer_flow_handler.go (1750 lines)", "shortDescription": {"text": "Very large file: spark/so/handler/claim_transfer_flow_handler.go (1750 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-ef3acdfd8faa812d", "name": "Very large file: spark/so/handler/finalize_signature_handler_test.go (1766 lines)", "shortDescription": {"text": "Very large file: spark/so/handler/finalize_signature_handler_test.go (1766 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-83ae0a9d1637a418", "name": "Very large file: spark/so/handler/lightning_handler_test.go (2954 lines)", "shortDescription": {"text": "Very large file: spark/so/handler/lightning_handler_test.go (2954 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-5904ee05f2d026d5", "name": "Very large file: spark/so/handler/renew_leaf_handler.go (1234 lines)", "shortDescription": {"text": "Very large file: spark/so/handler/renew_leaf_handler.go (1234 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-fd3ba5240b63878f", "name": "Very large file: spark/so/handler/tokens/internal_sign_token_handler.go (1563 lines)", "shortDescription": {"text": "Very large file: spark/so/handler/tokens/internal_sign_token_handler.go (1563 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-f6df1ff9c99b2a39", "name": "Very large file: spark/so/handler/tokens/internal_prepare_token_handler.go (1292 lines)", "shortDescription": {"text": "Very large file: spark/so/handler/tokens/internal_prepare_token_handler.go (1292 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-6ef2f46a527bcecb", "name": "Very large file: spark/so/utils/token_transaction.go (1645 lines)", "shortDescription": {"text": "Very large file: spark/so/utils/token_transaction.go (1645 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-b9a785df3cc244be", "name": "Very large file: spark/so/utils/token_transaction_test.go (2662 lines)", "shortDescription": {"text": "Very large file: spark/so/utils/token_transaction_test.go (2662 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-1d71f43b588c6785", "name": "Very large file: spark/so/grpc_test/deposit_test.go (1901 lines)", "shortDescription": {"text": "Very large file: spark/so/grpc_test/deposit_test.go (1901 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-d1cfe095a84c8a94", "name": "Very large file: spark/so/grpc_test/lightning_test.go (1459 lines)", "shortDescription": {"text": "Very large file: spark/so/grpc_test/lightning_test.go (1459 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-c6aabdbf4efe95f7", "name": "Very large file: spark/so/grpc_test/transfer_test.go (2281 lines)", "shortDescription": {"text": "Very large file: spark/so/grpc_test/transfer_test.go (2281 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-227375473acd508b", "name": "Very large file: spark/so/grpc_test/tokens_test/query_test.go (2142 lines)", "shortDescription": {"text": "Very large file: spark/so/grpc_test/tokens_test/query_test.go (2142 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-60fd17bb8522558e", "name": "Very large file: spark/so/grpc_test/tokens_test/revocation_test.go (1371 lines)", "shortDescription": {"text": "Very large file: spark/so/grpc_test/tokens_test/revocation_test.go (1371 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-e251cbc88cc47b8f", "name": "Very large file: spark/so/chain/watch_chain_test.go (1967 lines)", "shortDescription": {"text": "Very large file: spark/so/chain/watch_chain_test.go (1967 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-dc603b2daec126e1", "name": "Very large file: spark/so/chain/tokens/withdraw_test.go (1632 lines)", "shortDescription": {"text": "Very large file: spark/so/chain/tokens/withdraw_test.go (1632 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-ef3daebb9d8e6a9e", "name": "Very large file: spark/so/task/task.go (1429 lines)", "shortDescription": {"text": "Very large file: spark/so/task/task.go (1429 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-26dd3b3f59ce2d66", "name": "Very large file: spark/so/middleware/rate_limit_test.go (1926 lines)", "shortDescription": {"text": "Very large file: spark/so/middleware/rate_limit_test.go (1926 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-1d6506c984c2d932", "name": "Very large file: signer/spark-token-primitives-uniffi/spark-token-primitives-python/src/spark_token_primitives/spark_tok", "shortDescription": {"text": "Very large file: signer/spark-token-primitives-uniffi/spark-token-primitives-python/src/spark_token_primitives/spark_token_primitives.py (1481 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-a3b453048e9428f3", "name": "67 TODO/FIXME markers", "shortDescription": {"text": "67 TODO/FIXME markers"}, "fullDescription": {"text": "High count of TODO/FIXME/HACK markers \u2014 track them as issues so they're not forgotten."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-f5f0c36f6abd3fe6", "name": "Node manifest has dependencies but no lockfile: sdks/js/packages/bare/package.json", "shortDescription": {"text": "Node manifest has dependencies but no lockfile: sdks/js/packages/bare/package.json"}, "fullDescription": {"text": "`package.json` declares dependencies, but no same-directory npm/pnpm/yarn/bun lockfile was found. Generated projects without lockfiles are less reproducible and harder to secure-scan precisely."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-9941e6b4e176e3fb", "name": "Node manifest has dependencies but no lockfile: sdks/js/packages/issuer-sdk/package.json", "shortDescription": {"text": "Node manifest has dependencies but no lockfile: sdks/js/packages/issuer-sdk/package.json"}, "fullDescription": {"text": "`package.json` declares dependencies, but no same-directory npm/pnpm/yarn/bun lockfile was found. Generated projects without lockfiles are less reproducible and harder to secure-scan precisely."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-2c96409068e8b2e5", "name": "Node manifest has dependencies but no lockfile: sdks/js/packages/spark-mcp/package.json", "shortDescription": {"text": "Node manifest has dependencies but no lockfile: sdks/js/packages/spark-mcp/package.json"}, "fullDescription": {"text": "`package.json` declares dependencies, but no same-directory npm/pnpm/yarn/bun lockfile was found. Generated projects without lockfiles are less reproducible and harder to secure-scan precisely."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-1a16329f0f31d3a7", "name": "Node manifest has dependencies but no lockfile: sdks/js/packages/spark-frost-bare-addon/package.json", "shortDescription": {"text": "Node manifest has dependencies but no lockfile: sdks/js/packages/spark-frost-bare-addon/package.json"}, "fullDescription": {"text": "`package.json` declares dependencies, but no same-directory npm/pnpm/yarn/bun lockfile was found. Generated projects without lockfiles are less reproducible and harder to secure-scan precisely."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-4aaa5733da8e72c3", "name": "Node manifest has dependencies but no lockfile: sdks/js/packages/spark-sdk/package.json", "shortDescription": {"text": "Node manifest has dependencies but no lockfile: sdks/js/packages/spark-sdk/package.json"}, "fullDescription": {"text": "`package.json` declares dependencies, but no same-directory npm/pnpm/yarn/bun lockfile was found. Generated projects without lockfiles are less reproducible and harder to secure-scan precisely."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-18dea8d58c3f8b1e", "name": "Node manifest has dependencies but no lockfile: sdks/js/examples/nodejs-scripts/package.json", "shortDescription": {"text": "Node manifest has dependencies but no lockfile: sdks/js/examples/nodejs-scripts/package.json"}, "fullDescription": {"text": "`package.json` declares dependencies, but no same-directory npm/pnpm/yarn/bun lockfile was found. Generated projects without lockfiles are less reproducible and harder to secure-scan precisely."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-0a290fe969d4df0b", "name": "Node manifest has dependencies but no lockfile: sdks/js/examples/spark-webpack-react-app/package.json", "shortDescription": {"text": "Node manifest has dependencies but no lockfile: sdks/js/examples/spark-webpack-react-app/package.json"}, "fullDescription": {"text": "`package.json` declares dependencies, but no same-directory npm/pnpm/yarn/bun lockfile was found. Generated projects without lockfiles are less reproducible and harder to secure-scan precisely."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-3584b07c5fa544b5", "name": "Node manifest has dependencies but no lockfile: sdks/js/examples/spark-nextjs-app/package.json", "shortDescription": {"text": "Node manifest has dependencies but no lockfile: sdks/js/examples/spark-nextjs-app/package.json"}, "fullDescription": {"text": "`package.json` declares dependencies, but no same-directory npm/pnpm/yarn/bun lockfile was found. Generated projects without lockfiles are less reproducible and harder to secure-scan precisely."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-2ffdb881e6a3d1cd", "name": "Node manifest has dependencies but no lockfile: sdks/js/examples/spark-browser-extension/package.json", "shortDescription": {"text": "Node manifest has dependencies but no lockfile: sdks/js/examples/spark-browser-extension/package.json"}, "fullDescription": {"text": "`package.json` declares dependencies, but no same-directory npm/pnpm/yarn/bun lockfile was found. Generated projects without lockfiles are less reproducible and harder to secure-scan precisely."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-32f7561e5e589141", "name": "Node manifest has dependencies but no lockfile: sdks/js/examples/spark-expo-react-native-app/package.json", "shortDescription": {"text": "Node manifest has dependencies but no lockfile: sdks/js/examples/spark-expo-react-native-app/package.json"}, "fullDescription": {"text": "`package.json` declares dependencies, but no same-directory npm/pnpm/yarn/bun lockfile was found. Generated projects without lockfiles are less reproducible and harder to secure-scan precisely."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-3b2e97395fe7fd05", "name": "Node manifest has dependencies but no lockfile: sdks/js/examples/spark-react-native-app/package.json", "shortDescription": {"text": "Node manifest has dependencies but no lockfile: sdks/js/examples/spark-react-native-app/package.json"}, "fullDescription": {"text": "`package.json` declares dependencies, but no same-directory npm/pnpm/yarn/bun lockfile was found. Generated projects without lockfiles are less reproducible and harder to secure-scan precisely."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-9078b0662516ce4c", "name": "Node manifest has dependencies but no lockfile: sdks/js/examples/nestjs-app/package.json", "shortDescription": {"text": "Node manifest has dependencies but no lockfile: sdks/js/examples/nestjs-app/package.json"}, "fullDescription": {"text": "`package.json` declares dependencies, but no same-directory npm/pnpm/yarn/bun lockfile was found. Generated projects without lockfiles are less reproducible and harder to secure-scan precisely."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-72e86affca35f0e8", "name": "Node manifest has dependencies but no lockfile: sdks/js/examples/spark-vite-app/package.json", "shortDescription": {"text": "Node manifest has dependencies but no lockfile: sdks/js/examples/spark-vite-app/package.json"}, "fullDescription": {"text": "`package.json` declares dependencies, but no same-directory npm/pnpm/yarn/bun lockfile was found. Generated projects without lockfiles are less reproducible and harder to secure-scan precisely."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-754cbb69989b4759", "name": "Node manifest has dependencies but no lockfile: sdks/js/examples/spark-bare-app/package.json", "shortDescription": {"text": "Node manifest has dependencies but no lockfile: sdks/js/examples/spark-bare-app/package.json"}, "fullDescription": {"text": "`package.json` declares dependencies, but no same-directory npm/pnpm/yarn/bun lockfile was found. Generated projects without lockfiles are less reproducible and harder to secure-scan precisely."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-1d6bf649ad079a79", "name": "Node manifest has dependencies but no lockfile: sdks/js/examples/spark-node-express/package.json", "shortDescription": {"text": "Node manifest has dependencies but no lockfile: sdks/js/examples/spark-node-express/package.json"}, "fullDescription": {"text": "`package.json` declares dependencies, but no same-directory npm/pnpm/yarn/bun lockfile was found. Generated projects without lockfiles are less reproducible and harder to secure-scan precisely."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-585b7d576fe7297c", "name": "Node manifest has dependencies but no lockfile: sdks/js/apps/spark-cli/package.json", "shortDescription": {"text": "Node manifest has dependencies but no lockfile: sdks/js/apps/spark-cli/package.json"}, "fullDescription": {"text": "`package.json` declares dependencies, but no same-directory npm/pnpm/yarn/bun lockfile was found. Generated projects without lockfiles are less reproducible and harder to secure-scan precisely."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-687810955a39d1b8", "name": "Node manifest has dependencies but no lockfile: sdks/js/apps/create-spark-app/package.json", "shortDescription": {"text": "Node manifest has dependencies but no lockfile: sdks/js/apps/create-spark-app/package.json"}, "fullDescription": {"text": "`package.json` declares dependencies, but no same-directory npm/pnpm/yarn/bun lockfile was found. Generated projects without lockfiles are less reproducible and harder to secure-scan precisely."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-faa50802f4ab9653", "name": "Node manifest has dependencies but no lockfile: sdks/js/apps/lrc20-l1-announcer/package.json", "shortDescription": {"text": "Node manifest has dependencies but no lockfile: sdks/js/apps/lrc20-l1-announcer/package.json"}, "fullDescription": {"text": "`package.json` declares dependencies, but no same-directory npm/pnpm/yarn/bun lockfile was found. Generated projects without lockfiles are less reproducible and harder to secure-scan precisely."}, "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 645 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 223 placeholder/mock markers across 57 source files. This often means the repo looks complete while core flows still use generated scaffolding or fake data."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-2d0c7b7ab8f8aacf", "name": "Critical user flow still appears backed by mock or placeholder data", "shortDescription": {"text": "Critical user flow still appears backed by mock or placeholder data"}, "fullDescription": {"text": "A payment/auth/admin/order/billing-style flow contains mock, fake, TODO, dummy, or placeholder markers in runtime source. In the Fable corpus this is a high-leverage completeness smell: the app can look finished while the money, identity, or tenant flow is still scaffolded."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-749d4bc1bd66df5f", "name": "Agent instructions exist but release-hardening basics are missing", "shortDescription": {"text": "Agent instructions exist but release-hardening basics are missing"}, "fullDescription": {"text": "AI-coder instruction files were found, but the repo is missing lockfile. Treat this as a contract gap: the agent is guided, but the generated output is not yet guarded by the controls that make it repeatable."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-fb639963cbb8f792", "name": "Agent authority lacks a verifier contract: .cursor/hooks.json", "shortDescription": {"text": "Agent authority lacks a verifier contract: .cursor/hooks.json"}, "fullDescription": {"text": "This agent instruction grants code or shell authority but does not state the verification gate that decides promotion. The recurring safe pattern is: LLM proposes; deterministic tests/build/security checks verify; only verified code promotes."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-9548c7ed0d86c65f", "name": "Agent authority lacks a verifier contract: sdks/js/packages/spark-mcp/CLAUDE.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: sdks/js/packages/spark-mcp/CLAUDE.md"}, "fullDescription": {"text": "This agent instruction grants code or shell authority but does not state the verification gate that decides promotion. The recurring safe pattern is: LLM proposes; deterministic tests/build/security checks verify; only verified code promotes."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-10fc536f8b9d9a48", "name": "Agent instruction/config may expose a secret: spark/cmd/dbseed/CLAUDE.md", "shortDescription": {"text": "Agent instruction/config may expose a secret: spark/cmd/dbseed/CLAUDE.md"}, "fullDescription": {"text": "Agent-facing files are routinely pasted into LLM/tool contexts. Move literal tokens, keys, and passwords into a secret manager or document them as placeholders only."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-8f814837ff8333d1", "name": "Agent authority lacks a verifier contract: .claude/commands/spark_sec_review.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: .claude/commands/spark_sec_review.md"}, "fullDescription": {"text": "This agent instruction grants code or shell authority but does not state the verification gate that decides promotion. The recurring safe pattern is: LLM proposes; deterministic tests/build/security checks verify; only verified code promotes."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-24bfe071c879c5bd", "name": "Agent authority lacks a verifier contract: .claude/commands/create_plan_nt.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: .claude/commands/create_plan_nt.md"}, "fullDescription": {"text": "This agent instruction grants code or shell authority but does not state the verification gate that decides promotion. The recurring safe pattern is: LLM proposes; deterministic tests/build/security checks verify; only verified code promotes."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-c096221a8a5a39f8", "name": "Agent authority lacks a verifier contract: .claude/commands/research_codebase_nt.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: .claude/commands/research_codebase_nt.md"}, "fullDescription": {"text": "This agent instruction grants code or shell authority but does not state the verification gate that decides promotion. The recurring safe pattern is: LLM proposes; deterministic tests/build/security checks verify; only verified code promotes."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-44ccf2a6de4890d6", "name": "Agent authority lacks a verifier contract: .claude/commands/debug-spark-integration-tests.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: .claude/commands/debug-spark-integration-tests.md"}, "fullDescription": {"text": "This agent instruction grants code or shell authority but does not state the verification gate that decides promotion. The recurring safe pattern is: LLM proposes; deterministic tests/build/security checks verify; only verified code promotes."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-42043484c32cb625", "name": "Agent authority lacks a verifier contract: .claude/commands/validate_plan.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: .claude/commands/validate_plan.md"}, "fullDescription": {"text": "This agent instruction grants code or shell authority but does not state the verification gate that decides promotion. The recurring safe pattern is: LLM proposes; deterministic tests/build/security checks verify; only verified code promotes."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-70dc10c9bd1357fc", "name": "Agent authority lacks a verifier contract: .claude/commands/run_and_debug.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: .claude/commands/run_and_debug.md"}, "fullDescription": {"text": "This agent instruction grants code or shell authority but does not state the verification gate that decides promotion. The recurring safe pattern is: LLM proposes; deterministic tests/build/security checks verify; only verified code promotes."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-8dde615f8670fc40", "name": "Agent authority lacks a verifier contract: .claude/commands/create_plan.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: .claude/commands/create_plan.md"}, "fullDescription": {"text": "This agent instruction grants code or shell authority but does not state the verification gate that decides promotion. The recurring safe pattern is: LLM proposes; deterministic tests/build/security checks verify; only verified code promotes."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-1264dcf5974451ff", "name": "Agent instruction/config may expose a secret: .claude/flows/static_deposits.md", "shortDescription": {"text": "Agent instruction/config may expose a secret: .claude/flows/static_deposits.md"}, "fullDescription": {"text": "Agent-facing files are routinely pasted into LLM/tool contexts. Move literal tokens, keys, and passwords into a secret manager or document them as placeholders only."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-6db18279d70e74d3", "name": "Commented-code block (5 lines) in sdks/js/packages/bare/tests/integration/multi-leaf-transfer.test.js:30", "shortDescription": {"text": "Commented-code block (5 lines) in sdks/js/packages/bare/tests/integration/multi-leaf-transfer.test.js:30"}, "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-8068023849af8abb", "name": "Commented-code block (5 lines) in sdks/js/packages/spark-sdk/src/tests/connection.test.ts:954", "shortDescription": {"text": "Commented-code block (5 lines) in sdks/js/packages/spark-sdk/src/tests/connection.test.ts:954"}, "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-e6b1b582eeb05492", "name": "Commented-code block (5 lines) in sdks/js/packages/spark-sdk/src/tests/unilateral-exit.test.ts:17", "shortDescription": {"text": "Commented-code block (5 lines) in sdks/js/packages/spark-sdk/src/tests/unilateral-exit.test.ts:17"}, "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-783254c4c86e8e59", "name": "Commented-code block (59 lines) in sdks/js/packages/spark-sdk/src/tests/integration/transfer.test.ts:400", "shortDescription": {"text": "Commented-code block (59 lines) in sdks/js/packages/spark-sdk/src/tests/integration/transfer.test.ts:400"}, "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-beadeba43dd763a9", "name": "Commented-code block (7 lines) in sdks/js/packages/spark-sdk/src/tests/integration/ssp/coop-exit-validation.test.ts:224", "shortDescription": {"text": "Commented-code block (7 lines) in sdks/js/packages/spark-sdk/src/tests/integration/ssp/coop-exit-validation.test.ts:224"}, "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-91f13fad1231bf33", "name": "Commented-code block (6 lines) in sdks/js/packages/spark-sdk/src/tests/integration/ssp/static-deposit-validation.test.ts", "shortDescription": {"text": "Commented-code block (6 lines) in sdks/js/packages/spark-sdk/src/tests/integration/ssp/static-deposit-validation.test.ts:14"}, "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-7563db6b783caec8", "name": "Commented-code block (7 lines) in sdks/js/packages/spark-sdk/src/tests/leaf-manager/leaf-manager.test.ts:5197", "shortDescription": {"text": "Commented-code block (7 lines) in sdks/js/packages/spark-sdk/src/tests/leaf-manager/leaf-manager.test.ts:5197"}, "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-819c118df170107b", "name": "`fetch()` without try/.catch or AbortSignal \u2014 sdks/js/packages/spark-sdk/src/utils/mempool.ts:43", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 sdks/js/packages/spark-sdk/src/utils/mempool.ts:43"}, "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-ba2e1d4ff79622ee", "name": "Legacy-named symbol `isLegacy` in sdks/js/packages/spark-sdk/src/utils/address.ts:235", "shortDescription": {"text": "Legacy-named symbol `isLegacy` in sdks/js/packages/spark-sdk/src/utils/address.ts:235"}, "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-7c49dd7754c8da44", "name": "Commented-code block (11 lines) in sdks/js/packages/spark-sdk/src/utils/invoice-hashing.ts:41", "shortDescription": {"text": "Commented-code block (11 lines) in sdks/js/packages/spark-sdk/src/utils/invoice-hashing.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-d5800f7bcf140b90", "name": "`fetch()` without try/.catch or AbortSignal \u2014 sdks/js/packages/spark-sdk/src/token-primitives-bindings/wasm/wasm-browser", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 sdks/js/packages/spark-sdk/src/token-primitives-bindings/wasm/wasm-browser.js:572"}, "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-dc66b874b8b9720f", "name": "Legacy-named symbol `spark_token_legacy` in sdks/js/packages/spark-sdk/src/proto/spark_token_legacy.ts:5", "shortDescription": {"text": "Legacy-named symbol `spark_token_legacy` in sdks/js/packages/spark-sdk/src/proto/spark_token_legacy.ts:5"}, "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-9dceea65c46c9bf5", "name": "Legacy-named symbol `store_preimage_share_v2` in sdks/js/packages/spark-sdk/src/proto/spark.ts:21467", "shortDescription": {"text": "Legacy-named symbol `store_preimage_share_v2` in sdks/js/packages/spark-sdk/src/proto/spark.ts:21467"}, "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-4ad73b7e3a07dc55", "name": "Legacy-named symbol `editionDeprecated` in sdks/js/packages/spark-sdk/src/proto/google/protobuf/descriptor.ts:1409", "shortDescription": {"text": "Legacy-named symbol `editionDeprecated` in sdks/js/packages/spark-sdk/src/proto/google/protobuf/descriptor.ts:1409"}, "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-f75f7256b5e088c9", "name": "Commented-code block (7 lines) in sdks/js/packages/spark-sdk/src/spark-wallet/spark-wallet.ts:3443", "shortDescription": {"text": "Commented-code block (7 lines) in sdks/js/packages/spark-sdk/src/spark-wallet/spark-wallet.ts:3443"}, "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-97db874d74100019", "name": "`fetch()` without try/.catch or AbortSignal \u2014 sdks/js/packages/spark-sdk/src/spark-wallet/spark-wallet.ts:2398", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 sdks/js/packages/spark-sdk/src/spark-wallet/spark-wallet.ts:2398"}, "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-f7af59d1d74d22b4", "name": "Legacy-named symbol `start_transfer_v2` in sdks/js/packages/spark-sdk/src/services/transfer.ts:341", "shortDescription": {"text": "Legacy-named symbol `start_transfer_v2` in sdks/js/packages/spark-sdk/src/services/transfer.ts:341"}, "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-5a22df78d6862f20", "name": "Legacy-named symbol `store_preimage_share_v2` in sdks/js/packages/spark-sdk/src/services/lightning.ts:179", "shortDescription": {"text": "Legacy-named symbol `store_preimage_share_v2` in sdks/js/packages/spark-sdk/src/services/lightning.ts:179"}, "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-4c1d28b9f8b6de8f", "name": "Commented-code block (5 lines) in sdks/js/packages/spark-sdk/src/services/leaf-manager.ts:106", "shortDescription": {"text": "Commented-code block (5 lines) in sdks/js/packages/spark-sdk/src/services/leaf-manager.ts:106"}, "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-ae904b968ce4a140", "name": "Legacy-named symbol `cooperative_exit_v2` in sdks/js/packages/spark-sdk/src/services/coop-exit.ts:152", "shortDescription": {"text": "Legacy-named symbol `cooperative_exit_v2` in sdks/js/packages/spark-sdk/src/services/coop-exit.ts:152"}, "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-f16e392d3390b4e9", "name": "Commented-code block (5 lines) in sdks/js/packages/spark-sdk/src/services/connection/connection.ts:633", "shortDescription": {"text": "Commented-code block (5 lines) in sdks/js/packages/spark-sdk/src/services/connection/connection.ts:633"}, "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-d4b57610e102ac26", "name": "Legacy-named symbol `start_transfer_v2` in sdks/js/packages/spark-sdk/src/services/connection/connection.node.ts:32", "shortDescription": {"text": "Legacy-named symbol `start_transfer_v2` in sdks/js/packages/spark-sdk/src/services/connection/connection.node.ts:32"}, "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-862d6bce642eac88", "name": "Commented-code block (5 lines) in sdks/js/packages/spark-sdk/src/services/connection/connection.node.ts:31", "shortDescription": {"text": "Commented-code block (5 lines) in sdks/js/packages/spark-sdk/src/services/connection/connection.node.ts:31"}, "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-eafd946533463838", "name": "Commented-code block (5 lines) in sdks/js/packages/spark-sdk/src/services/tokens/output-manager.ts:29", "shortDescription": {"text": "Commented-code block (5 lines) in sdks/js/packages/spark-sdk/src/services/tokens/output-manager.ts:29"}, "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-beb03697cd8d720c", "name": "`fetch()` without try/.catch or AbortSignal \u2014 sdks/js/packages/spark-sdk/src/spark-bindings/wasm/wasm-browser.js:2159", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 sdks/js/packages/spark-sdk/src/spark-bindings/wasm/wasm-browser.js:2159"}, "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-eb5819f1837bb491", "name": "`fetch()` without try/.catch or AbortSignal \u2014 sdks/js/packages/spark-sdk/wasm/token-primitives/browser/wasm_token_primit", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 sdks/js/packages/spark-sdk/wasm/token-primitives/browser/wasm_token_primitives_browser.js:570"}, "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-59c8362d89b3b006", "name": "Commented-code block (6 lines) in sdks/js/examples/spark-browser-extension/build.mjs:4", "shortDescription": {"text": "Commented-code block (6 lines) in sdks/js/examples/spark-browser-extension/build.mjs: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-74c99f3cfb636f87", "name": "`fetch()` without try/.catch or AbortSignal \u2014 sdks/js/examples/spark-vite-app/src/App.tsx:175", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 sdks/js/examples/spark-vite-app/src/App.tsx:175"}, "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-8c03a701f288323d", "name": "Legacy-named symbol `refundDepositLegacy` in sdks/js/apps/spark-cli/src/cli.ts:1561", "shortDescription": {"text": "Legacy-named symbol `refundDepositLegacy` in sdks/js/apps/spark-cli/src/cli.ts:1561"}, "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-09f150b73e35a68d", "name": "`fetch()` without try/.catch or AbortSignal \u2014 sdks/js/apps/spark-cli/src/cli.ts:1067", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 sdks/js/apps/spark-cli/src/cli.ts:1067"}, "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-ed711605f65417c6", "name": "`fetch()` without try/.catch or AbortSignal \u2014 sdks/js/apps/lrc20-l1-announcer/lib/electrs-api.ts:43", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 sdks/js/apps/lrc20-l1-announcer/lib/electrs-api.ts:43"}, "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-bd509ee21ad651fb", "name": "Commented-code block (6 lines) in signer/spark-token-primitives-uniffi/spark-token-primitives-python/src/spark_token_pri", "shortDescription": {"text": "Commented-code block (6 lines) in signer/spark-token-primitives-uniffi/spark-token-primitives-python/src/spark_token_primitives/spark_token_primitives.py:11"}, "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-2c04133e54348533", "name": "Near-duplicate function bodies in 2 places", "shortDescription": {"text": "Near-duplicate function bodies in 2 places"}, "fullDescription": {"text": "Functions with the same first-5-line body hash:\nsigner/spark-token-primitives-uniffi/spark-token-primitives-python/src/spark_token_primitives/spark_token_primitives.py:default, signer/spark-token-primitives-uniffi/spark-token-primitives-python/src/spark_token_primitives/spark_token_primitives.py:default\n\nThis is *the* AI-coder failure mode (4\u00d7 more duplication in vibe-coded repos \u2014 see https://jw.hn/ai-code-hygiene). Consolidate or document why they're separate."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-4a118a3aa3e47973", "name": "Near-duplicate function bodies in 19 places", "shortDescription": {"text": "Near-duplicate function bodies in 19 places"}, "fullDescription": {"text": "Functions with the same first-5-line body hash:\nsigner/spark-token-primitives-uniffi/spark-token-primitives-python/src/spark_token_primitives/spark_token_primitives.py:read_with_stream, signer/spark-token-primitives-uniffi/spark-token-primitives-python/src/spark_token_primitives/spark_token_primitives.py:read, signer/spark-token-primitives-uniffi/spark-token-primitives-python/src/spark_token_primitives/spark_token_primitives.py:read, signer/spark-token-primitives-uniffi/spark-token-primitives-python/src/spark_token_primitives/spark_token_primitives.py:read\n\nThis is *the* AI-coder failure mode (4\u00d7 more duplication in vibe-coded repos \u2014 see https://jw.hn/ai-code-hygiene). Consolidate or document why they're separate."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-959dc775c4241ad4", "name": "Near-duplicate function bodies in 18 places", "shortDescription": {"text": "Near-duplicate function bodies in 18 places"}, "fullDescription": {"text": "Functions with the same first-5-line body hash:\nsigner/spark-token-primitives-uniffi/spark-token-primitives-python/src/spark_token_primitives/spark_token_primitives.py:write, signer/spark-token-primitives-uniffi/spark-token-primitives-python/src/spark_token_primitives/spark_token_primitives.py:write, signer/spark-token-primitives-uniffi/spark-token-primitives-python/src/spark_token_primitives/spark_token_primitives.py:write, signer/spark-token-primitives-uniffi/spark-token-primitives-python/src/spark_token_primitives/spark_token_primitives.py:write\n\nThis is *the* AI-coder failure mode (4\u00d7 more duplication in vibe-coded repos \u2014 see https://jw.hn/ai-code-hygiene). Consolidate or document why they're separate."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-be46ea126aa5d8dc", "name": "Near-duplicate function bodies in 3 places", "shortDescription": {"text": "Near-duplicate function bodies in 3 places"}, "fullDescription": {"text": "Functions with the same first-5-line body hash:\nsigner/spark-token-primitives-uniffi/spark-token-primitives-python/src/spark_token_primitives/spark_token_primitives.py:lift, signer/spark-token-primitives-uniffi/spark-token-primitives-python/src/spark_token_primitives/spark_token_primitives.py:lift, signer/spark-token-primitives-uniffi/spark-token-primitives-python/src/spark_token_primitives/spark_token_primitives.py:lift\n\nThis is *the* AI-coder failure mode (4\u00d7 more duplication in vibe-coded repos \u2014 see https://jw.hn/ai-code-hygiene). Consolidate or document why they're separate."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-c54c6fb8e364daaa", "name": "Near-duplicate function bodies in 16 places", "shortDescription": {"text": "Near-duplicate function bodies in 16 places"}, "fullDescription": {"text": "Functions with the same first-5-line body hash:\nsigner/spark-token-primitives-uniffi/spark-token-primitives-python/src/spark_token_primitives/spark_token_primitives.py:check_lower, signer/spark-token-primitives-uniffi/spark-token-primitives-python/src/spark_token_primitives/spark_token_primitives.py:check_lower, signer/spark-token-primitives-uniffi/spark-token-primitives-python/src/spark_token_primitives/spark_token_primitives.py:check_lower, signer/spark-token-primitives-uniffi/spark-token-primitives-python/src/spark_token_primitives/spark_token_primitives.py:check_lower\n\nThis is *the* AI-coder failure mode (4\u00d7 more duplication in vibe-coded repos \u2014 see https://jw.hn/ai-code-hygiene). Consolidate or document why they're separate."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-38bb9132781ec938", "name": "Dangling fetch: GET https://example.com (sdks/js/packages/spark-sdk/src/tests/spark-fetch.test.ts:31)", "shortDescription": {"text": "Dangling fetch: GET https://example.com (sdks/js/packages/spark-sdk/src/tests/spark-fetch.test.ts:31)"}, "fullDescription": {"text": "`sdks/js/packages/spark-sdk/src/tests/spark-fetch.test.ts:31` calls `GET https://example.com` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/example.com`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-31de862d20ec8fbf", "name": "Dangling fetch: GET https://example.com (sdks/js/packages/spark-sdk/src/tests/spark-fetch.test.ts:47)", "shortDescription": {"text": "Dangling fetch: GET https://example.com (sdks/js/packages/spark-sdk/src/tests/spark-fetch.test.ts:47)"}, "fullDescription": {"text": "`sdks/js/packages/spark-sdk/src/tests/spark-fetch.test.ts:47` calls `GET https://example.com` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/example.com`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-8155b1711b9e78af", "name": "Dangling fetch: GET https://example.com (sdks/js/packages/spark-sdk/src/tests/spark-fetch.test.ts:64)", "shortDescription": {"text": "Dangling fetch: GET https://example.com (sdks/js/packages/spark-sdk/src/tests/spark-fetch.test.ts:64)"}, "fullDescription": {"text": "`sdks/js/packages/spark-sdk/src/tests/spark-fetch.test.ts:64` calls `GET https://example.com` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/example.com`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}]}}, "automationDetails": {"id": "repobility/24754"}, "properties": {"repository": "buildonspark/spark", "repoUrl": "https://github.com/buildonspark/spark", "branch": "main"}, "results": [{"ruleId": "scanner-ea3870186890a213", "level": "note", "message": {"text": "Possibly dead Python function: read_i8"}, "properties": {"repobilityId": "3a1deb747cbb27b9", "scanner": "scanner-primary", "fingerprint": "ea3870186890a213", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "signer/spark-token-primitives-uniffi/spark-token-primitives-python/src/spark_token_primitives/spark_token_primitives.py:147"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-97a04af3e0d5eb70", "level": "note", "message": {"text": "Possibly dead Python function: read_i16"}, "properties": {"repobilityId": "f64e55136ac5af0f", "scanner": "scanner-primary", "fingerprint": "97a04af3e0d5eb70", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "signer/spark-token-primitives-uniffi/spark-token-primitives-python/src/spark_token_primitives/spark_token_primitives.py:153"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-3fe2d70b677751bf", "level": "note", "message": {"text": "Possibly dead Python function: read_u16"}, "properties": {"repobilityId": "21b7d015d6db1d50", "scanner": "scanner-primary", "fingerprint": "3fe2d70b677751bf", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "signer/spark-token-primitives-uniffi/spark-token-primitives-python/src/spark_token_primitives/spark_token_primitives.py:156"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-2af41ffe2b7a40a3", "level": "note", "message": {"text": "Possibly dead Python function: read_float"}, "properties": {"repobilityId": "0119f77693a2b4c9", "scanner": "scanner-primary", "fingerprint": "2af41ffe2b7a40a3", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "signer/spark-token-primitives-uniffi/spark-token-primitives-python/src/spark_token_primitives/spark_token_primitives.py:171"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-39c0326638e153da", "level": "note", "message": {"text": "Possibly dead Python function: read_double"}, "properties": {"repobilityId": "de1871d8a6d4d604", "scanner": "scanner-primary", "fingerprint": "39c0326638e153da", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "signer/spark-token-primitives-uniffi/spark-token-primitives-python/src/spark_token_primitives/spark_token_primitives.py:175"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-4b62b7fcbb21142a", "level": "note", "message": {"text": "Possibly dead Python function: write_i8"}, "properties": {"repobilityId": "16b076e84bfb90ea", "scanner": "scanner-primary", "fingerprint": "4b62b7fcbb21142a", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "signer/spark-token-primitives-uniffi/spark-token-primitives-python/src/spark_token_primitives/spark_token_primitives.py:215"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-93125b147e525141", "level": "note", "message": {"text": "Possibly dead Python function: write_i16"}, "properties": {"repobilityId": "7529670ae89b7378", "scanner": "scanner-primary", "fingerprint": "93125b147e525141", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "signer/spark-token-primitives-uniffi/spark-token-primitives-python/src/spark_token_primitives/spark_token_primitives.py:221"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-5c51b2c1d384c366", "level": "note", "message": {"text": "Possibly dead Python function: write_u16"}, "properties": {"repobilityId": "1ed7db8cc8ae1f71", "scanner": "scanner-primary", "fingerprint": "5c51b2c1d384c366", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "signer/spark-token-primitives-uniffi/spark-token-primitives-python/src/spark_token_primitives/spark_token_primitives.py:224"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-00b9bac6dbb1417b", "level": "note", "message": {"text": "Possibly dead Python function: write_float"}, "properties": {"repobilityId": "c1504bb499e9e448", "scanner": "scanner-primary", "fingerprint": "00b9bac6dbb1417b", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "signer/spark-token-primitives-uniffi/spark-token-primitives-python/src/spark_token_primitives/spark_token_primitives.py:239"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-241c020a05860439", "level": "note", "message": {"text": "Possibly dead Python function: write_double"}, "properties": {"repobilityId": "239cd6546303790d", "scanner": "scanner-primary", "fingerprint": "241c020a05860439", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "signer/spark-token-primitives-uniffi/spark-token-primitives-python/src/spark_token_primitives/spark_token_primitives.py:242"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-75310fc18ae24227", "level": "note", "message": {"text": "Possibly dead Python function: write_c_size_t"}, "properties": {"repobilityId": "26a686beee03df26", "scanner": "scanner-primary", "fingerprint": "75310fc18ae24227", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "signer/spark-token-primitives-uniffi/spark-token-primitives-python/src/spark_token_primitives/spark_token_primitives.py:245"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-c2370e4cc6dee14b", "level": "note", "message": {"text": "Possibly dead Python function: insert"}, "properties": {"repobilityId": "7dfeab54374c57be", "scanner": "scanner-primary", "fingerprint": "c2370e4cc6dee14b", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "signer/spark-token-primitives-uniffi/spark-token-primitives-python/src/spark_token_primitives/spark_token_primitives.py:347"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-d2036215d5263503", "level": "note", "message": {"text": "Possibly dead Python function: get"}, "properties": {"repobilityId": "b7a2478ded897d7d", "scanner": "scanner-primary", "fingerprint": "d2036215d5263503", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "signer/spark-token-primitives-uniffi/spark-token-primitives-python/src/spark_token_primitives/spark_token_primitives.py:353"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-1e0071697a2ef0a2", "level": "note", "message": {"text": "Possibly dead Python function: remove"}, "properties": {"repobilityId": "7c9bb87963141e13", "scanner": "scanner-primary", "fingerprint": "1e0071697a2ef0a2", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "signer/spark-token-primitives-uniffi/spark-token-primitives-python/src/spark_token_primitives/spark_token_primitives.py:360"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-206d2679155f0281", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 sdks/js/packages/bare/tests/fund-wallet-ssp.js:14"}, "properties": {"repobilityId": "832299bfefa83d60", "scanner": "scanner-primary", "fingerprint": "206d2679155f0281", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-6874d701faaeb803", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 sdks/js/packages/bare/tests/run-ssp-integration-tests.js:24"}, "properties": {"repobilityId": "6399adb6c03370ca", "scanner": "scanner-primary", "fingerprint": "6874d701faaeb803", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-e74643b0860ea267", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 sdks/js/packages/bare/tests/utils.js:60"}, "properties": {"repobilityId": "2d994d130bf9b275", "scanner": "scanner-primary", "fingerprint": "e74643b0860ea267", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-2464b964906f0af0", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 sdks/js/packages/bare/tests/run-integration-tests.js:34"}, "properties": {"repobilityId": "d0fea421599143a6", "scanner": "scanner-primary", "fingerprint": "2464b964906f0af0", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-018c00474d8bae56", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 sdks/js/packages/bare/tests/integration/ssp/static-deposit.test.js:16"}, "properties": {"repobilityId": "5e5e0e77397c6673", "scanner": "scanner-primary", "fingerprint": "018c00474d8bae56", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-c7934859d2fc3077", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 sdks/js/packages/bare/tests/integration/ssp/coop-exit.test.js:17"}, "properties": {"repobilityId": "3b930738b65210a5", "scanner": "scanner-primary", "fingerprint": "c7934859d2fc3077", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-09dc4ec5853d83af", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 sdks/js/packages/bare/tests/integration/ssp/swap.test.js:18"}, "properties": {"repobilityId": "ec5ab5759c02e039", "scanner": "scanner-primary", "fingerprint": "09dc4ec5853d83af", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-21ef09f8f3f87785", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 sdks/js/packages/bare/tests/integration/ssp/lightning.test.js:17"}, "properties": {"repobilityId": "f340ca0b94502527", "scanner": "scanner-primary", "fingerprint": "21ef09f8f3f87785", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-0862368283739a2a", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 sdks/js/packages/issuer-sdk/src/tests/utils/issuer-test-wallet.ts:6"}, "properties": {"repobilityId": "42dcba20e8fde2bd", "scanner": "scanner-primary", "fingerprint": "0862368283739a2a", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-04c65d5cb65ac58d", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 sdks/js/packages/issuer-sdk/src/tests/stress/transfers.test.ts:57"}, "properties": {"repobilityId": "80002f62b80df43b", "scanner": "scanner-primary", "fingerprint": "04c65d5cb65ac58d", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-2f10fb9dacef1709", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 sdks/js/packages/issuer-sdk/src/tests/integration/token-invoices.test.ts:67"}, "properties": {"repobilityId": "9d9ae3bbf16b384d", "scanner": "scanner-primary", "fingerprint": "2f10fb9dacef1709", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-27d211a17c967bf7", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 sdks/js/packages/spark-mcp/src/tests/integration.test.ts:42"}, "properties": {"repobilityId": "d7f2f4a4fc077c42", "scanner": "scanner-primary", "fingerprint": "27d211a17c967bf7", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b5ae82fb88617d2e", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 sdks/js/packages/spark-frost-bare-addon/test.js:22"}, "properties": {"repobilityId": "eed3e7a7be6c07ba", "scanner": "scanner-primary", "fingerprint": "b5ae82fb88617d2e", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b40643a6369682fa", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 sdks/js/packages/spark-frost-bare-addon/tests/create-dummy-tx.test.js:6"}, "properties": {"repobilityId": "70f7294ff453e3e2", "scanner": "scanner-primary", "fingerprint": "b40643a6369682fa", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-4bb5bda8db4dc374", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 sdks/js/packages/spark-frost-bare-addon/tests/utils.js:30"}, "properties": {"repobilityId": "ecde6af73af44e2b", "scanner": "scanner-primary", "fingerprint": "4bb5bda8db4dc374", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-c7be40a784006ae0", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 sdks/js/packages/spark-frost-bare-addon/scripts/normalize-win32-prebuilds.js:66"}, "properties": {"repobilityId": "7ae85f7821a2ee27", "scanner": "scanner-primary", "fingerprint": "c7be40a784006ae0", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-4cdbc943ef2cd82f", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 sdks/js/packages/spark-frost-bare-addon/scripts/ensure-prebuilds-present.js:67"}, "properties": {"repobilityId": "40e504ed7b8f2a12", "scanner": "scanner-primary", "fingerprint": "4cdbc943ef2cd82f", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-0fa396a98989053f", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 sdks/js/packages/spark-sdk/src/tests/bufbuild-reflection.test.ts:22"}, "properties": {"repobilityId": "2b351fb36a0c921a", "scanner": "scanner-primary", "fingerprint": "0fa396a98989053f", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-ece3ab663a4ae2c1", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 sdks/js/packages/spark-sdk/src/tests/integration/static_deposit.test.ts:8"}, "properties": {"repobilityId": "39ecd9dea4eb9893", "scanner": "scanner-primary", "fingerprint": "ece3ab663a4ae2c1", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-9b99f283914384e2", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 sdks/js/packages/spark-sdk/src/tests/integration/static_deposit.test.ts:10"}, "properties": {"repobilityId": "53622755302cdd34", "scanner": "scanner-primary", "fingerprint": "9b99f283914384e2", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-71dd84617922153d", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 sdks/js/packages/spark-sdk/src/tests/integration/ssp/coop-exit.test.ts:35"}, "properties": {"repobilityId": "6aa300b81894a595", "scanner": "scanner-primary", "fingerprint": "71dd84617922153d", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-d65af7e54e740750", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 sdks/js/packages/spark-sdk/src/tests/integration/ssp/coop-exit-validation.test.ts:32"}, "properties": {"repobilityId": "b6a58deeff1b5ea3", "scanner": "scanner-primary", "fingerprint": "d65af7e54e740750", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-10381a530b0e4009", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 sdks/js/packages/spark-sdk/src/tests/integration/ssp/instant_static_deposit.test.ts:466"}, "properties": {"repobilityId": "d1ee864ead2547a8", "scanner": "scanner-primary", "fingerprint": "10381a530b0e4009", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-058e647450f5c1e8", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 sdks/js/packages/spark-sdk/src/tests/integration/ssp/static_deposit.test.ts:608"}, "properties": {"repobilityId": "0db940140841c553", "scanner": "scanner-primary", "fingerprint": "058e647450f5c1e8", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-3ca16f79beb0ea14", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 sdks/js/packages/spark-sdk/src/tests/integration/ssp/static-deposit-validation.test.ts:94"}, "properties": {"repobilityId": "bb9d80c521ed9d32", "scanner": "scanner-primary", "fingerprint": "3ca16f79beb0ea14", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-7ad6a0de356754bf", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 sdks/js/packages/spark-sdk/src/utils/unilateral-exit.ts:277"}, "properties": {"repobilityId": "02cac9e606235a8b", "scanner": "scanner-primary", "fingerprint": "7ad6a0de356754bf", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-139042bc1c6d0677", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 sdks/js/packages/spark-sdk/src/token-primitives-bindings/wasm/wasm-nodejs.js:157"}, "properties": {"repobilityId": "0eaa82d3747b4519", "scanner": "scanner-primary", "fingerprint": "139042bc1c6d0677", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-218ef7d80d1e14b4", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 sdks/js/packages/spark-sdk/src/token-primitives-bindings/wasm/wasm-browser.js:163"}, "properties": {"repobilityId": "fdc79e7871bd6a07", "scanner": "scanner-primary", "fingerprint": "218ef7d80d1e14b4", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-3b515cad3bfe609f", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 sdks/js/packages/spark-sdk/src/graphql/client.ts:288"}, "properties": {"repobilityId": "233287bc2b76735d", "scanner": "scanner-primary", "fingerprint": "3b515cad3bfe609f", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-43e99d55db2b4aed", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 sdks/js/packages/spark-sdk/src/services/xhr-transport.ts:35"}, "properties": {"repobilityId": "8a05707bfb296221", "scanner": "scanner-primary", "fingerprint": "43e99d55db2b4aed", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-8b958fa8c0ed72db", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 sdks/js/packages/spark-sdk/src/services/lightning.ts:303"}, "properties": {"repobilityId": "7a824907429fd02a", "scanner": "scanner-primary", "fingerprint": "8b958fa8c0ed72db", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-eea1a2b61972f08c", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 sdks/js/packages/spark-sdk/src/services/swap.ts:216"}, "properties": {"repobilityId": "4ce70b260a1234c5", "scanner": "scanner-primary", "fingerprint": "eea1a2b61972f08c", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-46f20b2ba17666bf", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 sdks/js/packages/spark-sdk/src/spark-bindings/wasm/wasm-browser-bg.js:185"}, "properties": {"repobilityId": "5df96df9c01025a1", "scanner": "scanner-primary", "fingerprint": "46f20b2ba17666bf", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-2befff3e5e139a1f", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 sdks/js/packages/spark-sdk/src/spark-bindings/wasm/wasm-browser.js:163"}, "properties": {"repobilityId": "51cead73b48af26f", "scanner": "scanner-primary", "fingerprint": "2befff3e5e139a1f", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-b5e77be3d0da2500", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 sdks/js/packages/spark-sdk/wasm/nodejs/spark_bindings_nodejs.js:175"}, "properties": {"repobilityId": "c94022fdde1939bd", "scanner": "scanner-primary", "fingerprint": "b5e77be3d0da2500", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-6f8216d53d12e9f8", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 sdks/js/packages/spark-sdk/wasm/nodejs/wasm_nodejs.js:155"}, "properties": {"repobilityId": "948b870e389d66e7", "scanner": "scanner-primary", "fingerprint": "6f8216d53d12e9f8", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-9c485d6fa2d6da77", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 sdks/js/packages/spark-sdk/wasm/token-primitives/nodejs/wasm_token_primitives_nodejs.js:155"}, "properties": {"repobilityId": "be30617d91d134ae", "scanner": "scanner-primary", "fingerprint": "9c485d6fa2d6da77", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-e4bc99661d97c366", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 sdks/js/packages/spark-sdk/wasm/token-primitives/browser/wasm_token_primitives_browser.js:161"}, "properties": {"repobilityId": "02ea9d4b8f1dd2ec", "scanner": "scanner-primary", "fingerprint": "e4bc99661d97c366", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-85118c03a6d7327d", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 sdks/js/examples/nodejs-scripts/src/spark-sdk/get-or-create-wallet.ts:35"}, "properties": {"repobilityId": "3c5228422d7077a0", "scanner": "scanner-primary", "fingerprint": "85118c03a6d7327d", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-222e79418e71d6a4", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 sdks/js/examples/nodejs-scripts/src/spark-sdk/get-balance.ts:16"}, "properties": {"repobilityId": "1734074112a76c19", "scanner": "scanner-primary", "fingerprint": "222e79418e71d6a4", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-3dddb86fa6ae579a", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 sdks/js/examples/nodejs-scripts/src/spark-sdk/get-all-transfers.ts:15"}, "properties": {"repobilityId": "ebe0e0433130ce71", "scanner": "scanner-primary", "fingerprint": "3dddb86fa6ae579a", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-2271301960901d0e", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 sdks/js/examples/nodejs-scripts/src/spark-sdk/deposit-bitcoin.ts:16"}, "properties": {"repobilityId": "49a4ef7afd127282", "scanner": "scanner-primary", "fingerprint": "2271301960901d0e", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-9c5a56430f0044f0", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 sdks/js/examples/nodejs-scripts/src/spark-sdk/get-transfers-with-time-filter.ts:17"}, "properties": {"repobilityId": "437318ac394f8c9f", "scanner": "scanner-primary", "fingerprint": "9c5a56430f0044f0", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-17efff1e9589ac15", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 sdks/js/examples/nodejs-scripts/src/spark-sdk/pay-invoices.ts:15"}, "properties": {"repobilityId": "503457bfbf241a2a", "scanner": "scanner-primary", "fingerprint": "17efff1e9589ac15", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-392965327e5543ec", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 sdks/js/examples/nodejs-scripts/src/spark-sdk/send-transfer.ts:19"}, "properties": {"repobilityId": "339bc5478d028901", "scanner": "scanner-primary", "fingerprint": "392965327e5543ec", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-1475534542fedce0", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 sdks/js/examples/nodejs-scripts/src/spark-sdk/create-invoice.ts:16"}, "properties": {"repobilityId": "6767d036c5eee3cf", "scanner": "scanner-primary", "fingerprint": "1475534542fedce0", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-078ccccfd7ed544d", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 sdks/js/examples/nodejs-scripts/src/spark-sdk/get-spark-address.ts:15"}, "properties": {"repobilityId": "78e81e53203032dc", "scanner": "scanner-primary", "fingerprint": "078ccccfd7ed544d", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-9c1ba8dd164942cc", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 sdks/js/examples/nodejs-scripts/src/spark-sdk/example.ts:7"}, "properties": {"repobilityId": "54bc8f70c196412a", "scanner": "scanner-primary", "fingerprint": "9c1ba8dd164942cc", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-56185f96ad5d4115", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 sdks/js/examples/spark-webpack-react-app/src/App.tsx:18"}, "properties": {"repobilityId": "649e8f40a1ff99cc", "scanner": "scanner-primary", "fingerprint": "56185f96ad5d4115", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-d987405807eb5ea3", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 sdks/js/examples/spark-nextjs-app/src/app/page.tsx:31"}, "properties": {"repobilityId": "4a162f20f8850055", "scanner": "scanner-primary", "fingerprint": "d987405807eb5ea3", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b7c6c9c5f7a535b4", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 sdks/js/examples/spark-browser-extension/src/background.ts:21"}, "properties": {"repobilityId": "101b4ecd03e7ee9b", "scanner": "scanner-primary", "fingerprint": "b7c6c9c5f7a535b4", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-171bc033a835272d", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 sdks/js/examples/spark-browser-extension/src/content.ts:8"}, "properties": {"repobilityId": "75a378051815d897", "scanner": "scanner-primary", "fingerprint": "171bc033a835272d", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-343a2f06501c420c", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 sdks/js/examples/spark-expo-react-native-app/app/test-screen.tsx:47"}, "properties": {"repobilityId": "8987231973fcd7e5", "scanner": "scanner-primary", "fingerprint": "343a2f06501c420c", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-ac0fdaf4f2b77014", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 sdks/js/examples/spark-expo-react-native-app/contexts/WalletContext.tsx:60"}, "properties": {"repobilityId": "1dd6ac889e780f30", "scanner": "scanner-primary", "fingerprint": "ac0fdaf4f2b77014", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-93102ba1762ddaf7", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 sdks/js/examples/spark-react-native-app/contexts/WalletContext.tsx:87"}, "properties": {"repobilityId": "44c7f077357e7c09", "scanner": "scanner-primary", "fingerprint": "93102ba1762ddaf7", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-d6d1681cf7983a1b", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 sdks/js/examples/spark-react-native-app/screens/TestScreen.tsx:157"}, "properties": {"repobilityId": "664f97a7bae6451e", "scanner": "scanner-primary", "fingerprint": "d6d1681cf7983a1b", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-5797794ab0da62a1", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 sdks/js/examples/spark-bare-app/get-static-deposit-address.js:44"}, "properties": {"repobilityId": "a83acef4834efc81", "scanner": "scanner-primary", "fingerprint": "5797794ab0da62a1", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-bf5161a4c4df6bb4", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 sdks/js/examples/spark-bare-app/auto-claim-static-deposit.js:50"}, "properties": {"repobilityId": "d48fa5b6ba0e0028", "scanner": "scanner-primary", "fingerprint": "bf5161a4c4df6bb4", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-8885ee02e7b03395", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 sdks/js/examples/spark-bare-app/repro-query-nodes-timeout.js:31"}, "properties": {"repobilityId": "388e739e0f8bfd73", "scanner": "scanner-primary", "fingerprint": "8885ee02e7b03395", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-d5b6a0328a4785dd", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 sdks/js/examples/spark-bare-app/get-or-create-wallet.js:44"}, "properties": {"repobilityId": "5d424df464778dd8", "scanner": "scanner-primary", "fingerprint": "d5b6a0328a4785dd", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-03f41e698e1710ef", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 sdks/js/examples/spark-bare-app/transfer.js:49"}, "properties": {"repobilityId": "e3ce094a8d571793", "scanner": "scanner-primary", "fingerprint": "03f41e698e1710ef", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b4324f66dbc04ccf", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 sdks/js/examples/spark-bare-app/create-lightning-invoice.js:37"}, "properties": {"repobilityId": "c8a6143cae4d7f48", "scanner": "scanner-primary", "fingerprint": "b4324f66dbc04ccf", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-5aa3d48c1a459b20", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 sdks/js/examples/spark-node-express/src/index.ts:56"}, "properties": {"repobilityId": "ce61c6f9c542039d", "scanner": "scanner-primary", "fingerprint": "5aa3d48c1a459b20", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-c3378373a882a5a3", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 sdks/js/examples/spark-node-express/src/routes/issuerRoutes.ts:58"}, "properties": {"repobilityId": "56f3c5b7f7899b39", "scanner": "scanner-primary", "fingerprint": "c3378373a882a5a3", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-f2309bd2d7954a66", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 sdks/js/apps/spark-cli/src/cli.ts:324"}, "properties": {"repobilityId": "9f880bad0e5aad37", "scanner": "scanner-primary", "fingerprint": "f2309bd2d7954a66", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-8f63b8a04e56a070", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 sdks/js/apps/create-spark-app/src/index.ts:39"}, "properties": {"repobilityId": "71fc978bd7573556", "scanner": "scanner-primary", "fingerprint": "8f63b8a04e56a070", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-0fd7ad1d29455c02", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 sdks/js/apps/lrc20-l1-announcer/announce-token.ts:59"}, "properties": {"repobilityId": "a582472a8ba47b7a", "scanner": "scanner-primary", "fingerprint": "0fd7ad1d29455c02", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-d63da3583b14afc0", "level": "warning", "message": {"text": "Dockerfile runs as root: Dockerfile"}, "properties": {"repobilityId": "a2ed1bd120e507db", "scanner": "scanner-primary", "fingerprint": "d63da3583b14afc0", "layer": "hardware", "severity": "medium", "confidence": 1.0, "tags": ["security", "container"]}}, {"ruleId": "scanner-9eae113ca663b4de", "level": "note", "message": {"text": "Docker base image is tag-pinned but not digest-pinned: golang:1.26-bookworm"}, "properties": {"repobilityId": "e10639d1acfb481d", "scanner": "scanner-primary", "fingerprint": "9eae113ca663b4de", "layer": "hardware", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "docker", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "Dockerfile"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-25aeef2ae572f43b", "level": "note", "message": {"text": "Docker base image is tag-pinned but not digest-pinned: rust:1.92-slim-bookworm"}, "properties": {"repobilityId": "c48cb32e50ced79f", "scanner": "scanner-primary", "fingerprint": "25aeef2ae572f43b", "layer": "hardware", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "docker", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "Dockerfile"}, "region": {"startLine": 67}}}]}, {"ruleId": "scanner-af51d05f220fecfb", "level": "note", "message": {"text": "Docker base image is tag-pinned but not digest-pinned: arigaio/atlas:1.0.0-community"}, "properties": {"repobilityId": "278c9e545ffc2c53", "scanner": "scanner-primary", "fingerprint": "af51d05f220fecfb", "layer": "hardware", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "docker", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "Dockerfile"}, "region": {"startLine": 103}}}]}, {"ruleId": "scanner-84019dfd8d98a34d", "level": "note", "message": {"text": "Docker base image is tag-pinned but not digest-pinned: debian:bookworm-slim"}, "properties": {"repobilityId": "fe218931615ade20", "scanner": "scanner-primary", "fingerprint": "84019dfd8d98a34d", "layer": "hardware", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "docker", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "Dockerfile"}, "region": {"startLine": 106}}}]}, {"ruleId": "scanner-f73fb7717354c46d", "level": "error", "message": {"text": "Possible secret in cleanup.sh"}, "properties": {"repobilityId": "9df87c0dd1a9cbcf", "scanner": "scanner-primary", "fingerprint": "f73fb7717354c46d", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "cleanup.sh"}, "region": {"startLine": 17}}}]}, {"ruleId": "scanner-f73fb7717354c46d", "level": "error", "message": {"text": "Possible secret in cleanup.sh"}, "properties": {"repobilityId": "9df87c0dd1a9cbcf", "scanner": "scanner-primary", "fingerprint": "f73fb7717354c46d", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "cleanup.sh"}, "region": {"startLine": 31}}}]}, {"ruleId": "scanner-f6471150cf924df2", "level": "error", "message": {"text": "Possible secret in run-everything.sh"}, "properties": {"repobilityId": "d03217181d4761f5", "scanner": "scanner-primary", "fingerprint": "f6471150cf924df2", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "run-everything.sh"}, "region": {"startLine": 240}}}]}, {"ruleId": "scanner-f6471150cf924df2", "level": "error", "message": {"text": "Possible secret in run-everything.sh"}, "properties": {"repobilityId": "d03217181d4761f5", "scanner": "scanner-primary", "fingerprint": "f6471150cf924df2", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "run-everything.sh"}, "region": {"startLine": 265}}}]}, {"ruleId": "scanner-f6471150cf924df2", "level": "error", "message": {"text": "Possible secret in run-everything.sh"}, "properties": {"repobilityId": "d03217181d4761f5", "scanner": "scanner-primary", "fingerprint": "f6471150cf924df2", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "run-everything.sh"}, "region": {"startLine": 307}}}]}, {"ruleId": "scanner-f6471150cf924df2", "level": "error", "message": {"text": "Possible secret in run-everything.sh"}, "properties": {"repobilityId": "d03217181d4761f5", "scanner": "scanner-primary", "fingerprint": "f6471150cf924df2", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "run-everything.sh"}, "region": {"startLine": 331}}}]}, {"ruleId": "scanner-f6471150cf924df2", "level": "error", "message": {"text": "Possible secret in run-everything.sh"}, "properties": {"repobilityId": "d03217181d4761f5", "scanner": "scanner-primary", "fingerprint": "f6471150cf924df2", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "run-everything.sh"}, "region": {"startLine": 337}}}]}, {"ruleId": "scanner-f6471150cf924df2", "level": "error", "message": {"text": "Possible secret in run-everything.sh"}, "properties": {"repobilityId": "d03217181d4761f5", "scanner": "scanner-primary", "fingerprint": "f6471150cf924df2", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "run-everything.sh"}, "region": {"startLine": 347}}}]}, {"ruleId": "scanner-f6471150cf924df2", "level": "error", "message": {"text": "Possible secret in run-everything.sh"}, "properties": {"repobilityId": "d03217181d4761f5", "scanner": "scanner-primary", "fingerprint": "f6471150cf924df2", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "run-everything.sh"}, "region": {"startLine": 353}}}]}, {"ruleId": "scanner-f6471150cf924df2", "level": "error", "message": {"text": "Possible secret in run-everything.sh"}, "properties": {"repobilityId": "d03217181d4761f5", "scanner": "scanner-primary", "fingerprint": "f6471150cf924df2", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "run-everything.sh"}, "region": {"startLine": 354}}}]}, {"ruleId": "scanner-f6471150cf924df2", "level": "error", "message": {"text": "Possible secret in run-everything.sh"}, "properties": {"repobilityId": "d03217181d4761f5", "scanner": "scanner-primary", "fingerprint": "f6471150cf924df2", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "run-everything.sh"}, "region": {"startLine": 357}}}]}, {"ruleId": "scanner-f6471150cf924df2", "level": "error", "message": {"text": "Possible secret in run-everything.sh"}, "properties": {"repobilityId": "d03217181d4761f5", "scanner": "scanner-primary", "fingerprint": "f6471150cf924df2", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "run-everything.sh"}, "region": {"startLine": 385}}}]}, {"ruleId": "scanner-f6471150cf924df2", "level": "error", "message": {"text": "Possible secret in run-everything.sh"}, "properties": {"repobilityId": "d03217181d4761f5", "scanner": "scanner-primary", "fingerprint": "f6471150cf924df2", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "run-everything.sh"}, "region": {"startLine": 391}}}]}, {"ruleId": "scanner-c92fb5bbf127afd2", "level": "error", "message": {"text": "Possible secret in sdks/js/packages/spark-sdk/src/services/wallet-config.ts"}, "properties": {"repobilityId": "5408caf8c69fb898", "scanner": "scanner-primary", "fingerprint": "c92fb5bbf127afd2", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "sdks/js/packages/spark-sdk/src/services/wallet-config.ts"}, "region": {"startLine": 42}}}]}, {"ruleId": "scanner-2d7d97f17a7ae9e9", "level": "error", "message": {"text": "Insecure pattern 'new_function_used' in sdks/js/packages/spark-sdk/src/spark-bindings/wasm/wasm-browser-bg.js:1042"}, "properties": {"repobilityId": "efc6dd45908f9227", "scanner": "scanner-primary", "fingerprint": "2d7d97f17a7ae9e9", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["owasp", "new_function_used"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "sdks/js/packages/spark-sdk/src/spark-bindings/wasm/wasm-browser-bg.js"}, "region": {"startLine": 1042}}}]}, {"ruleId": "scanner-95fdb17ef8328a87", "level": "error", "message": {"text": "Insecure pattern 'new_function_used' in sdks/js/packages/spark-sdk/src/spark-bindings/wasm/wasm-browser.js:1993"}, "properties": {"repobilityId": "b60bc682687c14bb", "scanner": "scanner-primary", "fingerprint": "95fdb17ef8328a87", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["owasp", "new_function_used"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "sdks/js/packages/spark-sdk/src/spark-bindings/wasm/wasm-browser.js"}, "region": {"startLine": 1993}}}]}, {"ruleId": "scanner-84c304e4f1d780d8", "level": "error", "message": {"text": "Insecure pattern 'new_function_used' in sdks/js/packages/spark-sdk/wasm/nodejs/spark_bindings_nodejs.js:1044"}, "properties": {"repobilityId": "87fb998deae97800", "scanner": "scanner-primary", "fingerprint": "84c304e4f1d780d8", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["owasp", "new_function_used"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "sdks/js/packages/spark-sdk/wasm/nodejs/spark_bindings_nodejs.js"}, "region": {"startLine": 1044}}}]}, {"ruleId": "scanner-b3c408cd4e9f74b3", "level": "error", "message": {"text": "Insecure pattern 'new_function_used' in sdks/js/packages/spark-sdk/wasm/nodejs/wasm_nodejs.js:2010"}, "properties": {"repobilityId": "2a3fea17f89147fa", "scanner": "scanner-primary", "fingerprint": "b3c408cd4e9f74b3", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["owasp", "new_function_used"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "sdks/js/packages/spark-sdk/wasm/nodejs/wasm_nodejs.js"}, "region": {"startLine": 2010}}}]}, {"ruleId": "scanner-4db8b78043533d10", "level": "error", "message": {"text": "Possible secret in sdks/js/apps/spark-cli/src/cli.ts"}, "properties": {"repobilityId": "78762e00d91e40a9", "scanner": "scanner-primary", "fingerprint": "4db8b78043533d10", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "sdks/js/apps/spark-cli/src/cli.ts"}, "region": {"startLine": 68}}}]}, {"ruleId": "scanner-b54d0afa0ee9475e", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in sdks/js/apps/create-spark-app/src/transform.ts:1"}, "properties": {"repobilityId": "a9f79f1952a56dfb", "scanner": "scanner-primary", "fingerprint": "b54d0afa0ee9475e", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "sdks/js/apps/create-spark-app/src/transform.ts"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-9bbfb99ba2b75a47", "level": "error", "message": {"text": "Possible secret in sdks/js/apps/lrc20-l1-announcer/announce-token.ts"}, "properties": {"repobilityId": "6f51594df99a350f", "scanner": "scanner-primary", "fingerprint": "9bbfb99ba2b75a47", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "sdks/js/apps/lrc20-l1-announcer/announce-token.ts"}, "region": {"startLine": 54}}}]}, {"ruleId": "scanner-5138374328fa92ab", "level": "error", "message": {"text": "Insecure pattern 'exec_used' in spark/so/ent/ent.go:581"}, "properties": {"repobilityId": "17291669ac4a7e2e", "scanner": "scanner-primary", "fingerprint": "5138374328fa92ab", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["owasp", "exec_used"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "spark/so/ent/ent.go"}, "region": {"startLine": 581}}}]}, {"ruleId": "scanner-6e16aae2de02b707", "level": "error", "message": {"text": "Insecure pattern 'exec_used' in spark/so/entephemeral/ent.go:497"}, "properties": {"repobilityId": "83d03df2dbe1109b", "scanner": "scanner-primary", "fingerprint": "6e16aae2de02b707", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["owasp", "exec_used"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "spark/so/entephemeral/ent.go"}, "region": {"startLine": 497}}}]}, {"ruleId": "scanner-d954eeafc08886cd", "level": "error", "message": {"text": "Possible secret in spark/so/db/testing.go"}, "properties": {"repobilityId": "17a85cdb3aa391dc", "scanner": "scanner-primary", "fingerprint": "d954eeafc08886cd", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "spark/so/db/testing.go"}, "region": {"startLine": 203}}}]}, {"ruleId": "scanner-60701d1c071b85c7", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "040fd3e6f7d068f4", "scanner": "scanner-primary", "fingerprint": "60701d1c071b85c7", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/js-sdk-lockfile.yml"}, "region": {"startLine": 26}}}]}, {"ruleId": "scanner-60701d1c071b85c7", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "8577142261cced1c", "scanner": "scanner-primary", "fingerprint": "60701d1c071b85c7", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/js-sdk-lockfile.yml"}, "region": {"startLine": 50}}}]}, {"ruleId": "scanner-78d589d6464d2a0a", "level": "warning", "message": {"text": "GitHub Actions workflow grants broad write permissions"}, "properties": {"repobilityId": "6acc74c5348084d1", "scanner": "scanner-primary", "fingerprint": "78d589d6464d2a0a", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "least-privilege"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/js-sdk-lockfile.yml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-ea151fdd47f7c2e6", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "f866b02eba1adb7c", "scanner": "scanner-primary", "fingerprint": "ea151fdd47f7c2e6", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/test-release-sync.yaml"}, "region": {"startLine": 27}}}]}, {"ruleId": "scanner-ea151fdd47f7c2e6", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "f866b02eba1adb7c", "scanner": "scanner-primary", "fingerprint": "ea151fdd47f7c2e6", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/test-release-sync.yaml"}, "region": {"startLine": 76}}}]}, {"ruleId": "scanner-ea151fdd47f7c2e6", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "f866b02eba1adb7c", "scanner": "scanner-primary", "fingerprint": "ea151fdd47f7c2e6", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/test-release-sync.yaml"}, "region": {"startLine": 106}}}]}, {"ruleId": "scanner-ea151fdd47f7c2e6", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "f866b02eba1adb7c", "scanner": "scanner-primary", "fingerprint": "ea151fdd47f7c2e6", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/test-release-sync.yaml"}, "region": {"startLine": 140}}}]}, {"ruleId": "scanner-ea151fdd47f7c2e6", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "67ba2b52bd6947a7", "scanner": "scanner-primary", "fingerprint": "ea151fdd47f7c2e6", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/test-release-sync.yaml"}, "region": {"startLine": 150}}}]}, {"ruleId": "scanner-52e8073f3b9e3898", "level": "warning", "message": {"text": "GitHub Actions workflow grants broad write permissions"}, "properties": {"repobilityId": "618325a6fa5af3ef", "scanner": "scanner-primary", "fingerprint": "52e8073f3b9e3898", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "least-privilege"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/test-release-sync.yaml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-cd44bb64bd296e93", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "0363e52b083ec174", "scanner": "scanner-primary", "fingerprint": "cd44bb64bd296e93", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/js-sdk.yml"}, "region": {"startLine": 33}}}]}, {"ruleId": "scanner-96b97d724af69b99", "level": "note", "message": {"text": "package.json defines install-time lifecycle scripts"}, "properties": {"repobilityId": "a453a5d112076577", "scanner": "scanner-primary", "fingerprint": "96b97d724af69b99", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "npm", "install-scripts"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "sdks/js/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-12f41bb86408bf60", "level": "note", "message": {"text": "Very large file: sdks/js/packages/spark-sdk/src/tests/integration/transfer.test.ts (1585 lines)"}, "properties": {"repobilityId": "391903a5fe5c2fd8", "scanner": "scanner-primary", "fingerprint": "12f41bb86408bf60", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-dad5843eeb871ade", "level": "note", "message": {"text": "Very large file: sdks/js/packages/spark-sdk/src/tests/leaf-manager/leaf-manager.test.ts (5881 lines)"}, "properties": {"repobilityId": "de7cef95bfd7997c", "scanner": "scanner-primary", "fingerprint": "dad5843eeb871ade", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-a1c065a9b6de8454", "level": "note", "message": {"text": "Very large file: sdks/js/packages/spark-sdk/src/proto/spark.ts (22201 lines)"}, "properties": {"repobilityId": "f4f8201b68466ca5", "scanner": "scanner-primary", "fingerprint": "a1c065a9b6de8454", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-f3868cdfb28802aa", "level": "note", "message": {"text": "Very large file: sdks/js/packages/spark-sdk/src/proto/spark_token.ts (5535 lines)"}, "properties": {"repobilityId": "b18524cc245ef38f", "scanner": "scanner-primary", "fingerprint": "f3868cdfb28802aa", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-b9ebe1d6c077802d", "level": "note", "message": {"text": "Very large file: sdks/js/packages/spark-sdk/src/proto/google/protobuf/descriptor.ts (6976 lines)"}, "properties": {"repobilityId": "f3a378a60dfb9f59", "scanner": "scanner-primary", "fingerprint": "b9ebe1d6c077802d", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-2dca2ee6ad198d4d", "level": "note", "message": {"text": "Very large file: sdks/js/packages/spark-sdk/src/proto/validate/validate.ts (5995 lines)"}, "properties": {"repobilityId": "4a8645a1715ec32e", "scanner": "scanner-primary", "fingerprint": "2dca2ee6ad198d4d", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-0c246d905f1e7a75", "level": "note", "message": {"text": "Very large file: sdks/js/packages/spark-sdk/src/spark-wallet/spark-wallet.ts (6547 lines)"}, "properties": {"repobilityId": "15a82e8f758afc0b", "scanner": "scanner-primary", "fingerprint": "0c246d905f1e7a75", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-f471247fd6e2606c", "level": "note", "message": {"text": "Very large file: sdks/js/packages/spark-sdk/src/services/transfer.ts (2507 lines)"}, "properties": {"repobilityId": "f9e9a5ef7dd59cbb", "scanner": "scanner-primary", "fingerprint": "f471247fd6e2606c", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-40fbd77f19ab3020", "level": "note", "message": {"text": "Very large file: sdks/js/packages/spark-sdk/src/services/leaf-manager.ts (1972 lines)"}, "properties": {"repobilityId": "fb0909392847b9f7", "scanner": "scanner-primary", "fingerprint": "40fbd77f19ab3020", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-f6847736fb40249e", "level": "note", "message": {"text": "Very large file: sdks/js/packages/spark-sdk/src/services/tokens/token-transactions.ts (1629 lines)"}, "properties": {"repobilityId": "79cffaded1f9d4cb", "scanner": "scanner-primary", "fingerprint": "f6847736fb40249e", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-67195451abcf083a", "level": "note", "message": {"text": "Very large file: sdks/js/packages/spark-sdk/src/spark-bindings/wasm/wasm-browser.js (2168 lines)"}, "properties": {"repobilityId": "a623546f37609aa1", "scanner": "scanner-primary", "fingerprint": "67195451abcf083a", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-c94c514b65a504ac", "level": "note", "message": {"text": "Very large file: sdks/js/packages/spark-sdk/wasm/nodejs/wasm_nodejs.js (2151 lines)"}, "properties": {"repobilityId": "5afcfa76c93ebb0c", "scanner": "scanner-primary", "fingerprint": "c94c514b65a504ac", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-a6f96c378daefd0b", "level": "note", "message": {"text": "Very large file: sdks/js/apps/spark-cli/src/cli.ts (4031 lines)"}, "properties": {"repobilityId": "79a2f1c5d02d5ca3", "scanner": "scanner-primary", "fingerprint": "a6f96c378daefd0b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-7b9cc336ee2c2637", "level": "note", "message": {"text": "Very large file: spark/testing/wallet/transfer.go (1798 lines)"}, "properties": {"repobilityId": "01a82a09becb3594", "scanner": "scanner-primary", "fingerprint": "7b9cc336ee2c2637", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-ec3830e46f756d54", "level": "note", "message": {"text": "Very large file: spark/testing/wallet/deposit.go (1582 lines)"}, "properties": {"repobilityId": "ad853cdb4eb09b79", "scanner": "scanner-primary", "fingerprint": "ec3830e46f756d54", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-bff86a260a465b76", "level": "note", "message": {"text": "Very large file: spark/testing/wallet/ssp_api/mutations/generated.go (1176 lines)"}, "properties": {"repobilityId": "7e5aeea0ad518672", "scanner": "scanner-primary", "fingerprint": "bff86a260a465b76", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-49aa756c9fcc0df6", "level": "note", "message": {"text": "Very large file: spark/proto/gossip/gossip.pb.validate.go (4024 lines)"}, "properties": {"repobilityId": "c4f29ef3b98c8a28", "scanner": "scanner-primary", "fingerprint": "49aa756c9fcc0df6", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-21d221b92f712e09", "level": "note", "message": {"text": "Very large file: spark/proto/gossip/gossip.pb.go (2111 lines)"}, "properties": {"repobilityId": "c49c5144fb9bb34d", "scanner": "scanner-primary", "fingerprint": "21d221b92f712e09", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-35820dcc75682da9", "level": "note", "message": {"text": "Very large file: spark/proto/spark/spark.pb.go (13313 lines)"}, "properties": {"repobilityId": "792691d777e3d429", "scanner": "scanner-primary", "fingerprint": "35820dcc75682da9", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-973029e2959204cd", "level": "note", "message": {"text": "Very large file: spark/proto/spark/spark.pb.validate.go (24641 lines)"}, "properties": {"repobilityId": "137de827fb6be2d7", "scanner": "scanner-primary", "fingerprint": "973029e2959204cd", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-01fa9ea9a9fc71f5", "level": "note", "message": {"text": "Very large file: spark/proto/spark/spark_grpc.pb.go (1648 lines)"}, "properties": {"repobilityId": "8deec648b5c54691", "scanner": "scanner-primary", "fingerprint": "01fa9ea9a9fc71f5", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-8ce92ba67cf74d6b", "level": "note", "message": {"text": "Very large file: spark/proto/spark_token/spark_token.pb.validate.go (6922 lines)"}, "properties": {"repobilityId": "d6a6f1b0bbafc9e7", "scanner": "scanner-primary", "fingerprint": "8ce92ba67cf74d6b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-d2e6e3055354934e", "level": "note", "message": {"text": "Very large file: spark/proto/spark_token/spark_token.pb.go (3623 lines)"}, "properties": {"repobilityId": "c0006d6b35573bbd", "scanner": "scanner-primary", "fingerprint": "d2e6e3055354934e", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-41596da9f9bba88c", "level": "note", "message": {"text": "Very large file: spark/proto/spark_internal/spark_internal.pb.go (6208 lines)"}, "properties": {"repobilityId": "ae3a5b6fa5768bd9", "scanner": "scanner-primary", "fingerprint": "41596da9f9bba88c", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-75d371e91e52510e", "level": "note", "message": {"text": "Very large file: spark/proto/spark_internal/spark_internal_grpc.pb.go (1729 lines)"}, "properties": {"repobilityId": "9bee805a2da2da80", "scanner": "scanner-primary", "fingerprint": "75d371e91e52510e", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-9f18fcff9ae63d67", "level": "note", "message": {"text": "Very large file: spark/proto/spark_internal/spark_internal.pb.validate.go (11378 lines)"}, "properties": {"repobilityId": "6b919d753ddb2fdd", "scanner": "scanner-primary", "fingerprint": "9f18fcff9ae63d67", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-2331d5cd8d6a5160", "level": "note", "message": {"text": "Very large file: spark/proto/frost/frost.pb.go (2006 lines)"}, "properties": {"repobilityId": "6724890e5ff27703", "scanner": "scanner-primary", "fingerprint": "2331d5cd8d6a5160", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-7cf0496dbd733fe2", "level": "note", "message": {"text": "Very large file: spark/proto/frost/frost.pb.validate.go (3553 lines)"}, "properties": {"repobilityId": "473e0ee8a0991785", "scanner": "scanner-primary", "fingerprint": "7cf0496dbd733fe2", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-9d4ee5b6c88a5866", "level": "note", "message": {"text": "Very large file: spark/proto/spark_token_internal/spark_token_internal.pb.validate.go (2435 lines)"}, "properties": {"repobilityId": "0449534d2865cfc5", "scanner": "scanner-primary", "fingerprint": "9d4ee5b6c88a5866", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-a4ccb0833bbcc3f2", "level": "note", "message": {"text": "Very large file: spark/so/ent/tokentransaction_update.go (1805 lines)"}, "properties": {"repobilityId": "3bc7ece5e4e96f09", "scanner": "scanner-primary", "fingerprint": "a4ccb0833bbcc3f2", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-cb749e3360a6c5ae", "level": "note", "message": {"text": "Very large file: spark/so/ent/tokentransaction_create.go (1496 lines)"}, "properties": {"repobilityId": "b59f9ff39651851f", "scanner": "scanner-primary", "fingerprint": "cb749e3360a6c5ae", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-970df1c8bfbd3bdf", "level": "note", "message": {"text": "Very large file: spark/so/ent/transferleaf_create.go (1955 lines)"}, "properties": {"repobilityId": "a747561baa0f0ee9", "scanner": "scanner-primary", "fingerprint": "970df1c8bfbd3bdf", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-02a8de6fc423677f", "level": "note", "message": {"text": "Very large file: spark/so/ent/utxoswap_create.go (1771 lines)"}, "properties": {"repobilityId": "c9c52f5387def4e0", "scanner": "scanner-primary", "fingerprint": "02a8de6fc423677f", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-23a492458052f9cd", "level": "note", "message": {"text": "Very large file: spark/so/ent/tokenoutput_update.go (1363 lines)"}, "properties": {"repobilityId": "267ebbbc41072a1f", "scanner": "scanner-primary", "fingerprint": "23a492458052f9cd", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-7fd9880718286e82", "level": "note", "message": {"text": "Very large file: spark/so/ent/tokentransaction_extension.go (1335 lines)"}, "properties": {"repobilityId": "34f74bed81a425cf", "scanner": "scanner-primary", "fingerprint": "7fd9880718286e82", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-c0374f5cbd7df23c", "level": "note", "message": {"text": "Very large file: spark/so/ent/tokenoutput_create.go (1700 lines)"}, "properties": {"repobilityId": "945daa4f26c4e137", "scanner": "scanner-primary", "fingerprint": "c0374f5cbd7df23c", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-1f8a32c5fc55fe73", "level": "note", "message": {"text": "Very large file: spark/so/ent/treenode_create.go (1921 lines)"}, "properties": {"repobilityId": "3d2bde10a7349f3a", "scanner": "scanner-primary", "fingerprint": "1f8a32c5fc55fe73", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-4f71c46b56554b4b", "level": "note", "message": {"text": "Very large file: spark/so/ent/client.go (7662 lines)"}, "properties": {"repobilityId": "4eb9aea363c68e9b", "scanner": "scanner-primary", "fingerprint": "4f71c46b56554b4b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-60cbdec9e08e2b70", "level": "note", "message": {"text": "Very large file: spark/so/ent/migrate/schema.go (2183 lines)"}, "properties": {"repobilityId": "00ac73e2580f1e1f", "scanner": "scanner-primary", "fingerprint": "60cbdec9e08e2b70", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-2701f5e4259f2de8", "level": "note", "message": {"text": "Very large file: spark/so/ent/intercept/intercept.go (1409 lines)"}, "properties": {"repobilityId": "47dbc68956940178", "scanner": "scanner-primary", "fingerprint": "2701f5e4259f2de8", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-f08851f7ce51d45d", "level": "note", "message": {"text": "Very large file: spark/so/ent/transferleaf/where.go (1240 lines)"}, "properties": {"repobilityId": "4aeeb96b92d83c48", "scanner": "scanner-primary", "fingerprint": "f08851f7ce51d45d", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-5b48c1cf4776e8e9", "level": "note", "message": {"text": "Very large file: spark/so/ent/runtime/runtime.go (1173 lines)"}, "properties": {"repobilityId": "bee602563d1da0d8", "scanner": "scanner-primary", "fingerprint": "5b48c1cf4776e8e9", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-e1ee438b25ff179d", "level": "note", "message": {"text": "Very large file: spark/so/ent/tokenoutput/where.go (1235 lines)"}, "properties": {"repobilityId": "eb3f24ec87b23d59", "scanner": "scanner-primary", "fingerprint": "e1ee438b25ff179d", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-69dc1db09ccb7518", "level": "note", "message": {"text": "Very large file: spark/so/ent/entexample/entexample.go (8258 lines)"}, "properties": {"repobilityId": "8aafc885839075a1", "scanner": "scanner-primary", "fingerprint": "69dc1db09ccb7518", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-c8495a5ab7e3a26e", "level": "note", "message": {"text": "Very large file: spark/so/stream/event_handler_test.go (1500 lines)"}, "properties": {"repobilityId": "43ddd275e47a6826", "scanner": "scanner-primary", "fingerprint": "c8495a5ab7e3a26e", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-f983ec6c985b124f", "level": "note", "message": {"text": "Very large file: spark/so/handler/lightning_handler.go (2773 lines)"}, "properties": {"repobilityId": "f0f4b3969ed79991", "scanner": "scanner-primary", "fingerprint": "f983ec6c985b124f", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-0ca542931615becb", "level": "note", "message": {"text": "Very large file: spark/so/handler/transfer_handler.go (5492 lines)"}, "properties": {"repobilityId": "293c185751d1572b", "scanner": "scanner-primary", "fingerprint": "0ca542931615becb", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-7cfec462910df8b4", "level": "note", "message": {"text": "Very large file: spark/so/handler/base_transfer_handler_test.go (1605 lines)"}, "properties": {"repobilityId": "edf97308f62e85d1", "scanner": "scanner-primary", "fingerprint": "7cfec462910df8b4", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-c7a100304072af69", "level": "note", "message": {"text": "Very large file: spark/so/handler/internal_deposit_handler.go (1280 lines)"}, "properties": {"repobilityId": "eb3a4ace1772aa0a", "scanner": "scanner-primary", "fingerprint": "c7a100304072af69", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-7f67f010106147b5", "level": "note", "message": {"text": "Very large file: spark/so/handler/transfer_handler_mimo_test.go (1910 lines)"}, "properties": {"repobilityId": "6e76cf11e815f1b3", "scanner": "scanner-primary", "fingerprint": "7f67f010106147b5", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-87bbec43a09ffc46", "level": "note", "message": {"text": "Very large file: spark/so/handler/transfer_handler_query_equivalence_test.go (2403 lines)"}, "properties": {"repobilityId": "2f3bdbd2eee857b1", "scanner": "scanner-primary", "fingerprint": "87bbec43a09ffc46", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-2a43d608f2280256", "level": "note", "message": {"text": "Very large file: spark/so/handler/deposit_handler.go (2114 lines)"}, "properties": {"repobilityId": "a1c6ca1bead850ae", "scanner": "scanner-primary", "fingerprint": "2a43d608f2280256", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-e6a395b38c20a773", "level": "note", "message": {"text": "Very large file: spark/so/handler/renew_leaf_handler_test.go (1570 lines)"}, "properties": {"repobilityId": "6902acdd918c98d1", "scanner": "scanner-primary", "fingerprint": "e6a395b38c20a773", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-d932100a0e932b45", "level": "note", "message": {"text": "Very large file: spark/so/handler/base_transfer_handler.go (2884 lines)"}, "properties": {"repobilityId": "867a58543ebf3e76", "scanner": "scanner-primary", "fingerprint": "d932100a0e932b45", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-9f5cf9f3efcb3af7", "level": "note", "message": {"text": "Very large file: spark/so/handler/transfer_handler_mimo.go (1386 lines)"}, "properties": {"repobilityId": "bbef8e4bf5689fb2", "scanner": "scanner-primary", "fingerprint": "9f5cf9f3efcb3af7", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-2ac3d6a257fcc346", "level": "note", "message": {"text": "Very large file: spark/so/handler/internal_transfer_handler_test.go (2305 lines)"}, "properties": {"repobilityId": "6c46983b294f6df7", "scanner": "scanner-primary", "fingerprint": "2ac3d6a257fcc346", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-c931c084e43d1f37", "level": "note", "message": {"text": "Very large file: spark/so/handler/tree_creation_handler_test.go (3724 lines)"}, "properties": {"repobilityId": "caaf8eeae4920b6b", "scanner": "scanner-primary", "fingerprint": "c931c084e43d1f37", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-5e2fde044bc98c43", "level": "note", "message": {"text": "Very large file: spark/so/handler/internal_transfer_handler.go (1351 lines)"}, "properties": {"repobilityId": "c7a38dbf790782df", "scanner": "scanner-primary", "fingerprint": "5e2fde044bc98c43", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-c7c0991ec196e233", "level": "note", "message": {"text": "Very large file: spark/so/handler/deposit_handler_test.go (2414 lines)"}, "properties": {"repobilityId": "1016b49aee35231a", "scanner": "scanner-primary", "fingerprint": "c7c0991ec196e233", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-c1aeb9acc5c30a23", "level": "note", "message": {"text": "Very large file: spark/so/handler/claim_transfer_flow_handler.go (1750 lines)"}, "properties": {"repobilityId": "a49313b735114a76", "scanner": "scanner-primary", "fingerprint": "c1aeb9acc5c30a23", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-ef3acdfd8faa812d", "level": "note", "message": {"text": "Very large file: spark/so/handler/finalize_signature_handler_test.go (1766 lines)"}, "properties": {"repobilityId": "c05feb8b672f9d1a", "scanner": "scanner-primary", "fingerprint": "ef3acdfd8faa812d", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-83ae0a9d1637a418", "level": "note", "message": {"text": "Very large file: spark/so/handler/lightning_handler_test.go (2954 lines)"}, "properties": {"repobilityId": "0ce33606e6cd3e6c", "scanner": "scanner-primary", "fingerprint": "83ae0a9d1637a418", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-5904ee05f2d026d5", "level": "note", "message": {"text": "Very large file: spark/so/handler/renew_leaf_handler.go (1234 lines)"}, "properties": {"repobilityId": "cac89c20f42d4f03", "scanner": "scanner-primary", "fingerprint": "5904ee05f2d026d5", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-fd3ba5240b63878f", "level": "note", "message": {"text": "Very large file: spark/so/handler/tokens/internal_sign_token_handler.go (1563 lines)"}, "properties": {"repobilityId": "38cc0303fdcca6bc", "scanner": "scanner-primary", "fingerprint": "fd3ba5240b63878f", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-f6df1ff9c99b2a39", "level": "note", "message": {"text": "Very large file: spark/so/handler/tokens/internal_prepare_token_handler.go (1292 lines)"}, "properties": {"repobilityId": "cd03d36796b8c363", "scanner": "scanner-primary", "fingerprint": "f6df1ff9c99b2a39", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-6ef2f46a527bcecb", "level": "note", "message": {"text": "Very large file: spark/so/utils/token_transaction.go (1645 lines)"}, "properties": {"repobilityId": "7ec796aefd41e286", "scanner": "scanner-primary", "fingerprint": "6ef2f46a527bcecb", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-b9a785df3cc244be", "level": "note", "message": {"text": "Very large file: spark/so/utils/token_transaction_test.go (2662 lines)"}, "properties": {"repobilityId": "6d344b916bdb9b09", "scanner": "scanner-primary", "fingerprint": "b9a785df3cc244be", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-1d71f43b588c6785", "level": "note", "message": {"text": "Very large file: spark/so/grpc_test/deposit_test.go (1901 lines)"}, "properties": {"repobilityId": "6d3ac38773a4e2d6", "scanner": "scanner-primary", "fingerprint": "1d71f43b588c6785", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-d1cfe095a84c8a94", "level": "note", "message": {"text": "Very large file: spark/so/grpc_test/lightning_test.go (1459 lines)"}, "properties": {"repobilityId": "3e97ae900c192355", "scanner": "scanner-primary", "fingerprint": "d1cfe095a84c8a94", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-c6aabdbf4efe95f7", "level": "note", "message": {"text": "Very large file: spark/so/grpc_test/transfer_test.go (2281 lines)"}, "properties": {"repobilityId": "b64cccdf26835ef3", "scanner": "scanner-primary", "fingerprint": "c6aabdbf4efe95f7", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-227375473acd508b", "level": "note", "message": {"text": "Very large file: spark/so/grpc_test/tokens_test/query_test.go (2142 lines)"}, "properties": {"repobilityId": "7c6b11afbaaba52e", "scanner": "scanner-primary", "fingerprint": "227375473acd508b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-60fd17bb8522558e", "level": "note", "message": {"text": "Very large file: spark/so/grpc_test/tokens_test/revocation_test.go (1371 lines)"}, "properties": {"repobilityId": "9a8bc325e9b263f6", "scanner": "scanner-primary", "fingerprint": "60fd17bb8522558e", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-e251cbc88cc47b8f", "level": "note", "message": {"text": "Very large file: spark/so/chain/watch_chain_test.go (1967 lines)"}, "properties": {"repobilityId": "d8c3909378e08971", "scanner": "scanner-primary", "fingerprint": "e251cbc88cc47b8f", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-dc603b2daec126e1", "level": "note", "message": {"text": "Very large file: spark/so/chain/tokens/withdraw_test.go (1632 lines)"}, "properties": {"repobilityId": "26091041fbbeccab", "scanner": "scanner-primary", "fingerprint": "dc603b2daec126e1", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-ef3daebb9d8e6a9e", "level": "note", "message": {"text": "Very large file: spark/so/task/task.go (1429 lines)"}, "properties": {"repobilityId": "3f87bd2baf2eda58", "scanner": "scanner-primary", "fingerprint": "ef3daebb9d8e6a9e", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-26dd3b3f59ce2d66", "level": "note", "message": {"text": "Very large file: spark/so/middleware/rate_limit_test.go (1926 lines)"}, "properties": {"repobilityId": "f6af5b25eb198ba9", "scanner": "scanner-primary", "fingerprint": "26dd3b3f59ce2d66", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-1d6506c984c2d932", "level": "note", "message": {"text": "Very large file: signer/spark-token-primitives-uniffi/spark-token-primitives-python/src/spark_token_primitives/spark_token_primitives.py (1481 lines)"}, "properties": {"repobilityId": "b5a608359a3dccae", "scanner": "scanner-primary", "fingerprint": "1d6506c984c2d932", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-a3b453048e9428f3", "level": "note", "message": {"text": "67 TODO/FIXME markers"}, "properties": {"repobilityId": "4b38c118003e07d2", "scanner": "scanner-primary", "fingerprint": "a3b453048e9428f3", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["maintenance"]}}, {"ruleId": "scanner-f5f0c36f6abd3fe6", "level": "note", "message": {"text": "Node manifest has dependencies but no lockfile: sdks/js/packages/bare/package.json"}, "properties": {"repobilityId": "7ffac43ada869791", "scanner": "scanner-primary", "fingerprint": "f5f0c36f6abd3fe6", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["dependency", "lockfile", "reproducibility", "generated-repo-pattern"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "sdks/js/packages/bare/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-9941e6b4e176e3fb", "level": "note", "message": {"text": "Node manifest has dependencies but no lockfile: sdks/js/packages/issuer-sdk/package.json"}, "properties": {"repobilityId": "94c4f6ee1410eb3d", "scanner": "scanner-primary", "fingerprint": "9941e6b4e176e3fb", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["dependency", "lockfile", "reproducibility", "generated-repo-pattern"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "sdks/js/packages/issuer-sdk/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-2c96409068e8b2e5", "level": "note", "message": {"text": "Node manifest has dependencies but no lockfile: sdks/js/packages/spark-mcp/package.json"}, "properties": {"repobilityId": "19b4a7a05d121caa", "scanner": "scanner-primary", "fingerprint": "2c96409068e8b2e5", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["dependency", "lockfile", "reproducibility", "generated-repo-pattern"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "sdks/js/packages/spark-mcp/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-1a16329f0f31d3a7", "level": "note", "message": {"text": "Node manifest has dependencies but no lockfile: sdks/js/packages/spark-frost-bare-addon/package.json"}, "properties": {"repobilityId": "cf269e1c8699ee97", "scanner": "scanner-primary", "fingerprint": "1a16329f0f31d3a7", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["dependency", "lockfile", "reproducibility", "generated-repo-pattern"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "sdks/js/packages/spark-frost-bare-addon/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-4aaa5733da8e72c3", "level": "note", "message": {"text": "Node manifest has dependencies but no lockfile: sdks/js/packages/spark-sdk/package.json"}, "properties": {"repobilityId": "98a7761d057f3996", "scanner": "scanner-primary", "fingerprint": "4aaa5733da8e72c3", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["dependency", "lockfile", "reproducibility", "generated-repo-pattern"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "sdks/js/packages/spark-sdk/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-18dea8d58c3f8b1e", "level": "note", "message": {"text": "Node manifest has dependencies but no lockfile: sdks/js/examples/nodejs-scripts/package.json"}, "properties": {"repobilityId": "25a33be123c5a8a2", "scanner": "scanner-primary", "fingerprint": "18dea8d58c3f8b1e", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["dependency", "lockfile", "reproducibility", "generated-repo-pattern"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "sdks/js/examples/nodejs-scripts/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-0a290fe969d4df0b", "level": "note", "message": {"text": "Node manifest has dependencies but no lockfile: sdks/js/examples/spark-webpack-react-app/package.json"}, "properties": {"repobilityId": "12680a4b56b50526", "scanner": "scanner-primary", "fingerprint": "0a290fe969d4df0b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["dependency", "lockfile", "reproducibility", "generated-repo-pattern"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "sdks/js/examples/spark-webpack-react-app/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-3584b07c5fa544b5", "level": "note", "message": {"text": "Node manifest has dependencies but no lockfile: sdks/js/examples/spark-nextjs-app/package.json"}, "properties": {"repobilityId": "2bc84f2b01bc7571", "scanner": "scanner-primary", "fingerprint": "3584b07c5fa544b5", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["dependency", "lockfile", "reproducibility", "generated-repo-pattern"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "sdks/js/examples/spark-nextjs-app/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-2ffdb881e6a3d1cd", "level": "note", "message": {"text": "Node manifest has dependencies but no lockfile: sdks/js/examples/spark-browser-extension/package.json"}, "properties": {"repobilityId": "55d92c84b530b96b", "scanner": "scanner-primary", "fingerprint": "2ffdb881e6a3d1cd", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["dependency", "lockfile", "reproducibility", "generated-repo-pattern"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "sdks/js/examples/spark-browser-extension/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-32f7561e5e589141", "level": "note", "message": {"text": "Node manifest has dependencies but no lockfile: sdks/js/examples/spark-expo-react-native-app/package.json"}, "properties": {"repobilityId": "f6c14e3b08c1759e", "scanner": "scanner-primary", "fingerprint": "32f7561e5e589141", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["dependency", "lockfile", "reproducibility", "generated-repo-pattern"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "sdks/js/examples/spark-expo-react-native-app/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-3b2e97395fe7fd05", "level": "note", "message": {"text": "Node manifest has dependencies but no lockfile: sdks/js/examples/spark-react-native-app/package.json"}, "properties": {"repobilityId": "fe0cf8e02e02f451", "scanner": "scanner-primary", "fingerprint": "3b2e97395fe7fd05", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["dependency", "lockfile", "reproducibility", "generated-repo-pattern"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "sdks/js/examples/spark-react-native-app/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-9078b0662516ce4c", "level": "note", "message": {"text": "Node manifest has dependencies but no lockfile: sdks/js/examples/nestjs-app/package.json"}, "properties": {"repobilityId": "8ad15a72bb0b8c0b", "scanner": "scanner-primary", "fingerprint": "9078b0662516ce4c", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["dependency", "lockfile", "reproducibility", "generated-repo-pattern"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "sdks/js/examples/nestjs-app/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-72e86affca35f0e8", "level": "note", "message": {"text": "Node manifest has dependencies but no lockfile: sdks/js/examples/spark-vite-app/package.json"}, "properties": {"repobilityId": "ecd19bd708e6bb3b", "scanner": "scanner-primary", "fingerprint": "72e86affca35f0e8", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["dependency", "lockfile", "reproducibility", "generated-repo-pattern"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "sdks/js/examples/spark-vite-app/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-754cbb69989b4759", "level": "note", "message": {"text": "Node manifest has dependencies but no lockfile: sdks/js/examples/spark-bare-app/package.json"}, "properties": {"repobilityId": "d09fec939d989597", "scanner": "scanner-primary", "fingerprint": "754cbb69989b4759", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["dependency", "lockfile", "reproducibility", "generated-repo-pattern"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "sdks/js/examples/spark-bare-app/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-1d6bf649ad079a79", "level": "note", "message": {"text": "Node manifest has dependencies but no lockfile: sdks/js/examples/spark-node-express/package.json"}, "properties": {"repobilityId": "50852b1ac580d05b", "scanner": "scanner-primary", "fingerprint": "1d6bf649ad079a79", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["dependency", "lockfile", "reproducibility", "generated-repo-pattern"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "sdks/js/examples/spark-node-express/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-585b7d576fe7297c", "level": "note", "message": {"text": "Node manifest has dependencies but no lockfile: sdks/js/apps/spark-cli/package.json"}, "properties": {"repobilityId": "28a8173c579034a2", "scanner": "scanner-primary", "fingerprint": "585b7d576fe7297c", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["dependency", "lockfile", "reproducibility", "generated-repo-pattern"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "sdks/js/apps/spark-cli/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-687810955a39d1b8", "level": "note", "message": {"text": "Node manifest has dependencies but no lockfile: sdks/js/apps/create-spark-app/package.json"}, "properties": {"repobilityId": "ab6daabc53f66feb", "scanner": "scanner-primary", "fingerprint": "687810955a39d1b8", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["dependency", "lockfile", "reproducibility", "generated-repo-pattern"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "sdks/js/apps/create-spark-app/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-faa50802f4ab9653", "level": "note", "message": {"text": "Node manifest has dependencies but no lockfile: sdks/js/apps/lrc20-l1-announcer/package.json"}, "properties": {"repobilityId": "1e040354e858e23d", "scanner": "scanner-primary", "fingerprint": "faa50802f4ab9653", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["dependency", "lockfile", "reproducibility", "generated-repo-pattern"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "sdks/js/apps/lrc20-l1-announcer/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-3ab5d313dda8e5f9", "level": "note", "message": {"text": "Debug logging residue appears in source files"}, "properties": {"repobilityId": "ace63f47b058728c", "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": "b8533fe196b3c4dd", "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": "aea7033fae6ead48", "scanner": "scanner-primary", "fingerprint": "2d0c7b7ab8f8aacf", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["placeholder", "mock-data", "critical-flow", "generated-repo-pattern"]}}, {"ruleId": "scanner-749d4bc1bd66df5f", "level": "warning", "message": {"text": "Agent instructions exist but release-hardening basics are missing"}, "properties": {"repobilityId": "b95418e15fe4075e", "scanner": "scanner-primary", "fingerprint": "749d4bc1bd66df5f", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-fb639963cbb8f792", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: .cursor/hooks.json"}, "properties": {"repobilityId": "d98fbd421541a70f", "scanner": "scanner-primary", "fingerprint": "fb639963cbb8f792", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "cursor_rule"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".cursor/hooks.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-9548c7ed0d86c65f", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: sdks/js/packages/spark-mcp/CLAUDE.md"}, "properties": {"repobilityId": "277bcfdaa675111e", "scanner": "scanner-primary", "fingerprint": "9548c7ed0d86c65f", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "sdks/js/packages/spark-mcp/CLAUDE.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-10fc536f8b9d9a48", "level": "error", "message": {"text": "Agent instruction/config may expose a secret: spark/cmd/dbseed/CLAUDE.md"}, "properties": {"repobilityId": "0031b9c49a13350e", "scanner": "scanner-primary", "fingerprint": "10fc536f8b9d9a48", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["agent-instructions", "secrets", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "spark/cmd/dbseed/CLAUDE.md"}, "region": {"startLine": 342}}}]}, {"ruleId": "scanner-8f814837ff8333d1", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: .claude/commands/spark_sec_review.md"}, "properties": {"repobilityId": "77393db20023ad0f", "scanner": "scanner-primary", "fingerprint": "8f814837ff8333d1", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/commands/spark_sec_review.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-24bfe071c879c5bd", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: .claude/commands/create_plan_nt.md"}, "properties": {"repobilityId": "f2d5f80762ff85fc", "scanner": "scanner-primary", "fingerprint": "24bfe071c879c5bd", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/commands/create_plan_nt.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-c096221a8a5a39f8", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: .claude/commands/research_codebase_nt.md"}, "properties": {"repobilityId": "fe0392b26b01940d", "scanner": "scanner-primary", "fingerprint": "c096221a8a5a39f8", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/commands/research_codebase_nt.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-44ccf2a6de4890d6", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: .claude/commands/debug-spark-integration-tests.md"}, "properties": {"repobilityId": "eb8a913da17d3ff8", "scanner": "scanner-primary", "fingerprint": "44ccf2a6de4890d6", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/commands/debug-spark-integration-tests.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-42043484c32cb625", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: .claude/commands/validate_plan.md"}, "properties": {"repobilityId": "f1a6a13004c36664", "scanner": "scanner-primary", "fingerprint": "42043484c32cb625", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/commands/validate_plan.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-70dc10c9bd1357fc", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: .claude/commands/run_and_debug.md"}, "properties": {"repobilityId": "cbfc7b5d87ad8a7d", "scanner": "scanner-primary", "fingerprint": "70dc10c9bd1357fc", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/commands/run_and_debug.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-8dde615f8670fc40", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: .claude/commands/create_plan.md"}, "properties": {"repobilityId": "c221b147bd88921f", "scanner": "scanner-primary", "fingerprint": "8dde615f8670fc40", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/commands/create_plan.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-1264dcf5974451ff", "level": "error", "message": {"text": "Agent instruction/config may expose a secret: .claude/flows/static_deposits.md"}, "properties": {"repobilityId": "9eed663c4f7c99a5", "scanner": "scanner-primary", "fingerprint": "1264dcf5974451ff", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["agent-instructions", "secrets", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/flows/static_deposits.md"}, "region": {"startLine": 186}}}]}, {"ruleId": "scanner-6db18279d70e74d3", "level": "none", "message": {"text": "Commented-code block (5 lines) in sdks/js/packages/bare/tests/integration/multi-leaf-transfer.test.js:30"}, "properties": {"repobilityId": "dc4657df5a654b3e", "scanner": "scanner-primary", "fingerprint": "6db18279d70e74d3", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8068023849af8abb", "level": "none", "message": {"text": "Commented-code block (5 lines) in sdks/js/packages/spark-sdk/src/tests/connection.test.ts:954"}, "properties": {"repobilityId": "266dd555bd81d566", "scanner": "scanner-primary", "fingerprint": "8068023849af8abb", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e6b1b582eeb05492", "level": "none", "message": {"text": "Commented-code block (5 lines) in sdks/js/packages/spark-sdk/src/tests/unilateral-exit.test.ts:17"}, "properties": {"repobilityId": "7f68f194ebf6c56c", "scanner": "scanner-primary", "fingerprint": "e6b1b582eeb05492", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-783254c4c86e8e59", "level": "none", "message": {"text": "Commented-code block (59 lines) in sdks/js/packages/spark-sdk/src/tests/integration/transfer.test.ts:400"}, "properties": {"repobilityId": "13b6c7b123f505e7", "scanner": "scanner-primary", "fingerprint": "783254c4c86e8e59", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-beadeba43dd763a9", "level": "none", "message": {"text": "Commented-code block (7 lines) in sdks/js/packages/spark-sdk/src/tests/integration/ssp/coop-exit-validation.test.ts:224"}, "properties": {"repobilityId": "ad63610e584899e8", "scanner": "scanner-primary", "fingerprint": "beadeba43dd763a9", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-91f13fad1231bf33", "level": "none", "message": {"text": "Commented-code block (6 lines) in sdks/js/packages/spark-sdk/src/tests/integration/ssp/static-deposit-validation.test.ts:14"}, "properties": {"repobilityId": "93ff2ba10f77d952", "scanner": "scanner-primary", "fingerprint": "91f13fad1231bf33", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7563db6b783caec8", "level": "none", "message": {"text": "Commented-code block (7 lines) in sdks/js/packages/spark-sdk/src/tests/leaf-manager/leaf-manager.test.ts:5197"}, "properties": {"repobilityId": "53b28de009c4d891", "scanner": "scanner-primary", "fingerprint": "7563db6b783caec8", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-819c118df170107b", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 sdks/js/packages/spark-sdk/src/utils/mempool.ts:43"}, "properties": {"repobilityId": "a4db78e99aefa6ba", "scanner": "scanner-primary", "fingerprint": "819c118df170107b", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-ba2e1d4ff79622ee", "level": "note", "message": {"text": "Legacy-named symbol `isLegacy` in sdks/js/packages/spark-sdk/src/utils/address.ts:235"}, "properties": {"repobilityId": "f5d5c13a2710574e", "scanner": "scanner-primary", "fingerprint": "ba2e1d4ff79622ee", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-7c49dd7754c8da44", "level": "none", "message": {"text": "Commented-code block (11 lines) in sdks/js/packages/spark-sdk/src/utils/invoice-hashing.ts:41"}, "properties": {"repobilityId": "7c9688b69e913723", "scanner": "scanner-primary", "fingerprint": "7c49dd7754c8da44", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d5800f7bcf140b90", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 sdks/js/packages/spark-sdk/src/token-primitives-bindings/wasm/wasm-browser.js:572"}, "properties": {"repobilityId": "293d8f813e6589b7", "scanner": "scanner-primary", "fingerprint": "d5800f7bcf140b90", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-dc66b874b8b9720f", "level": "note", "message": {"text": "Legacy-named symbol `spark_token_legacy` in sdks/js/packages/spark-sdk/src/proto/spark_token_legacy.ts:5"}, "properties": {"repobilityId": "dcb6e3a914ae4a21", "scanner": "scanner-primary", "fingerprint": "dc66b874b8b9720f", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-9dceea65c46c9bf5", "level": "note", "message": {"text": "Legacy-named symbol `store_preimage_share_v2` in sdks/js/packages/spark-sdk/src/proto/spark.ts:21467"}, "properties": {"repobilityId": "1e2ed0accf19ea23", "scanner": "scanner-primary", "fingerprint": "9dceea65c46c9bf5", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-4ad73b7e3a07dc55", "level": "note", "message": {"text": "Legacy-named symbol `editionDeprecated` in sdks/js/packages/spark-sdk/src/proto/google/protobuf/descriptor.ts:1409"}, "properties": {"repobilityId": "3c31ff6d1b113bfe", "scanner": "scanner-primary", "fingerprint": "4ad73b7e3a07dc55", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-f75f7256b5e088c9", "level": "none", "message": {"text": "Commented-code block (7 lines) in sdks/js/packages/spark-sdk/src/spark-wallet/spark-wallet.ts:3443"}, "properties": {"repobilityId": "9499eec73f058110", "scanner": "scanner-primary", "fingerprint": "f75f7256b5e088c9", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-97db874d74100019", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 sdks/js/packages/spark-sdk/src/spark-wallet/spark-wallet.ts:2398"}, "properties": {"repobilityId": "f290bdd14780bffa", "scanner": "scanner-primary", "fingerprint": "97db874d74100019", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-f7af59d1d74d22b4", "level": "note", "message": {"text": "Legacy-named symbol `start_transfer_v2` in sdks/js/packages/spark-sdk/src/services/transfer.ts:341"}, "properties": {"repobilityId": "b7e2ba3268527fcd", "scanner": "scanner-primary", "fingerprint": "f7af59d1d74d22b4", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-5a22df78d6862f20", "level": "note", "message": {"text": "Legacy-named symbol `store_preimage_share_v2` in sdks/js/packages/spark-sdk/src/services/lightning.ts:179"}, "properties": {"repobilityId": "c5b3c2a7ec4821e8", "scanner": "scanner-primary", "fingerprint": "5a22df78d6862f20", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-4c1d28b9f8b6de8f", "level": "none", "message": {"text": "Commented-code block (5 lines) in sdks/js/packages/spark-sdk/src/services/leaf-manager.ts:106"}, "properties": {"repobilityId": "d1e79dfe6fbc2b2a", "scanner": "scanner-primary", "fingerprint": "4c1d28b9f8b6de8f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ae904b968ce4a140", "level": "note", "message": {"text": "Legacy-named symbol `cooperative_exit_v2` in sdks/js/packages/spark-sdk/src/services/coop-exit.ts:152"}, "properties": {"repobilityId": "abd26db5a527dbff", "scanner": "scanner-primary", "fingerprint": "ae904b968ce4a140", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-f16e392d3390b4e9", "level": "none", "message": {"text": "Commented-code block (5 lines) in sdks/js/packages/spark-sdk/src/services/connection/connection.ts:633"}, "properties": {"repobilityId": "b0239cca39dcc9ba", "scanner": "scanner-primary", "fingerprint": "f16e392d3390b4e9", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d4b57610e102ac26", "level": "note", "message": {"text": "Legacy-named symbol `start_transfer_v2` in sdks/js/packages/spark-sdk/src/services/connection/connection.node.ts:32"}, "properties": {"repobilityId": "d30b7c7a33ed149a", "scanner": "scanner-primary", "fingerprint": "d4b57610e102ac26", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-862d6bce642eac88", "level": "none", "message": {"text": "Commented-code block (5 lines) in sdks/js/packages/spark-sdk/src/services/connection/connection.node.ts:31"}, "properties": {"repobilityId": "3773eb34594bb0a4", "scanner": "scanner-primary", "fingerprint": "862d6bce642eac88", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-eafd946533463838", "level": "none", "message": {"text": "Commented-code block (5 lines) in sdks/js/packages/spark-sdk/src/services/tokens/output-manager.ts:29"}, "properties": {"repobilityId": "b8a20ddd93f09bf0", "scanner": "scanner-primary", "fingerprint": "eafd946533463838", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-beb03697cd8d720c", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 sdks/js/packages/spark-sdk/src/spark-bindings/wasm/wasm-browser.js:2159"}, "properties": {"repobilityId": "4071adbafdfa90fa", "scanner": "scanner-primary", "fingerprint": "beb03697cd8d720c", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-eb5819f1837bb491", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 sdks/js/packages/spark-sdk/wasm/token-primitives/browser/wasm_token_primitives_browser.js:570"}, "properties": {"repobilityId": "70f90b62c9b827bb", "scanner": "scanner-primary", "fingerprint": "eb5819f1837bb491", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-59c8362d89b3b006", "level": "none", "message": {"text": "Commented-code block (6 lines) in sdks/js/examples/spark-browser-extension/build.mjs:4"}, "properties": {"repobilityId": "61587a5c55d831e1", "scanner": "scanner-primary", "fingerprint": "59c8362d89b3b006", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-74c99f3cfb636f87", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 sdks/js/examples/spark-vite-app/src/App.tsx:175"}, "properties": {"repobilityId": "fde827e9f73e1ad1", "scanner": "scanner-primary", "fingerprint": "74c99f3cfb636f87", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-8c03a701f288323d", "level": "note", "message": {"text": "Legacy-named symbol `refundDepositLegacy` in sdks/js/apps/spark-cli/src/cli.ts:1561"}, "properties": {"repobilityId": "f9b160ba8455e1ce", "scanner": "scanner-primary", "fingerprint": "8c03a701f288323d", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-09f150b73e35a68d", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 sdks/js/apps/spark-cli/src/cli.ts:1067"}, "properties": {"repobilityId": "a98e91afdb78b89e", "scanner": "scanner-primary", "fingerprint": "09f150b73e35a68d", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-ed711605f65417c6", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 sdks/js/apps/lrc20-l1-announcer/lib/electrs-api.ts:43"}, "properties": {"repobilityId": "ee935feb9b9f8e1a", "scanner": "scanner-primary", "fingerprint": "ed711605f65417c6", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-bd509ee21ad651fb", "level": "none", "message": {"text": "Commented-code block (6 lines) in signer/spark-token-primitives-uniffi/spark-token-primitives-python/src/spark_token_primitives/spark_token_primitives.py:11"}, "properties": {"repobilityId": "4927a1fbc441ff3d", "scanner": "scanner-primary", "fingerprint": "bd509ee21ad651fb", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2c04133e54348533", "level": "note", "message": {"text": "Near-duplicate function bodies in 2 places"}, "properties": {"repobilityId": "6b5ad8443ad98182", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-4a118a3aa3e47973", "level": "note", "message": {"text": "Near-duplicate function bodies in 19 places"}, "properties": {"repobilityId": "0eb3a704065d6ad3", "scanner": "scanner-primary", "fingerprint": "4a118a3aa3e47973", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-959dc775c4241ad4", "level": "note", "message": {"text": "Near-duplicate function bodies in 18 places"}, "properties": {"repobilityId": "c73562cd4d9f018a", "scanner": "scanner-primary", "fingerprint": "959dc775c4241ad4", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-be46ea126aa5d8dc", "level": "note", "message": {"text": "Near-duplicate function bodies in 3 places"}, "properties": {"repobilityId": "b56af42e9c3476c3", "scanner": "scanner-primary", "fingerprint": "be46ea126aa5d8dc", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-be46ea126aa5d8dc", "level": "note", "message": {"text": "Near-duplicate function bodies in 3 places"}, "properties": {"repobilityId": "c4b332cd81746ba3", "scanner": "scanner-primary", "fingerprint": "be46ea126aa5d8dc", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-c54c6fb8e364daaa", "level": "note", "message": {"text": "Near-duplicate function bodies in 16 places"}, "properties": {"repobilityId": "a8f93518056f81bf", "scanner": "scanner-primary", "fingerprint": "c54c6fb8e364daaa", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-38bb9132781ec938", "level": "error", "message": {"text": "Dangling fetch: GET https://example.com (sdks/js/packages/spark-sdk/src/tests/spark-fetch.test.ts:31)"}, "properties": {"repobilityId": "e71b926f10f35e63", "scanner": "scanner-primary", "fingerprint": "38bb9132781ec938", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-31de862d20ec8fbf", "level": "error", "message": {"text": "Dangling fetch: GET https://example.com (sdks/js/packages/spark-sdk/src/tests/spark-fetch.test.ts:47)"}, "properties": {"repobilityId": "e4a2e9d7a6667600", "scanner": "scanner-primary", "fingerprint": "31de862d20ec8fbf", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-8155b1711b9e78af", "level": "error", "message": {"text": "Dangling fetch: GET https://example.com (sdks/js/packages/spark-sdk/src/tests/spark-fetch.test.ts:64)"}, "properties": {"repobilityId": "5b1d227f228cd24d", "scanner": "scanner-primary", "fingerprint": "8155b1711b9e78af", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}]}]}